Further improvement of toolbar resizing and missing changelog entry.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@30380 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
fredkiefer 2010-05-13 14:25:54 +00:00
parent e140af22af
commit d8a5434efb
2 changed files with 48 additions and 21 deletions

View file

@ -1,3 +1,9 @@
2010-05-13 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSToolbarItem.m (-_isFlexibleSpace): Simplify this method.
* Source/GSToolbarView.m: Clean up toolbar item resizing, this now
allows for resizable item other than flexible space.
2010-05-13 Wolfgang Lux <wolfgang.lux@gmail.com> 2010-05-13 Wolfgang Lux <wolfgang.lux@gmail.com>
* Source/GSNibLoading.m (-nibInstantiateWithOwner:topLeveObjects:, * Source/GSNibLoading.m (-nibInstantiateWithOwner:topLeveObjects:,
@ -76,7 +82,6 @@
Fix bug where some objects from the nib file were not sent an Fix bug where some objects from the nib file were not sent an
-awakeFromNib message. -awakeFromNib message.
>>>>>>> .r30369
2010-05-11 Fred Kiefer <FredKiefer@gmx.de> 2010-05-11 Fred Kiefer <FredKiefer@gmx.de>
* Headers/Additions/GNUstepGUI/GSTheme.h: * Headers/Additions/GNUstepGUI/GSTheme.h:

View file

@ -655,7 +655,6 @@ static void initSystemExtensionsColors(void)
NSArray *items = [_toolbar items]; NSArray *items = [_toolbar items];
NSEnumerator *e = [items objectEnumerator]; NSEnumerator *e = [items objectEnumerator];
NSToolbarItem *item; NSToolbarItem *item;
NSView *backView;
NSRect lastBackViewFrame; NSRect lastBackViewFrame;
float lengthAvailable; float lengthAvailable;
unsigned int flexibleSpaceItemsNumber = 0; unsigned int flexibleSpaceItemsNumber = 0;
@ -678,7 +677,16 @@ static void initSystemExtensionsColors(void)
{ {
flexibleSpaceItemsNumber++; flexibleSpaceItemsNumber++;
} }
maxX += [item maxSize].width;
// Currently only item with a view are resizable
if ([item view] != nil)
{
maxX += [item maxSize].width;
}
else
{
maxX += NSWidth([[item _backView] frame]);
}
} }
if (flexibleSpaceItemsNumber > 0) if (flexibleSpaceItemsNumber > 0)
@ -689,7 +697,7 @@ static void initSystemExtensionsColors(void)
e = [items objectEnumerator]; e = [items objectEnumerator];
while ((item = [e nextObject]) != nil) while ((item = [e nextObject]) != nil)
{ {
backView = [item _backView]; NSView *backView = [item _backView];
if ([item _isFlexibleSpace]) if ([item _isFlexibleSpace])
{ {
NSRect backViewFrame = [backView frame]; NSRect backViewFrame = [backView frame];
@ -716,29 +724,43 @@ static void initSystemExtensionsColors(void)
if (maxX >= NSMaxX(lastBackViewFrame)) if (maxX >= NSMaxX(lastBackViewFrame))
{ {
CGFloat rel = lengthAvailable / (maxX - NSMaxX(lastBackViewFrame)); CGFloat rel = lengthAvailable / (maxX - NSMaxX(lastBackViewFrame));
if (rel > 1.0)
rel = 1.0;
e = [items objectEnumerator]; e = [items objectEnumerator];
while ((item = [e nextObject]) != nil) while ((item = [e nextObject]) != nil)
{ {
CGFloat diff = [item maxSize].width - [item minSize].width; NSView *view = [item view];
NSView *backView = [item _backView];
backView = [item _backView]; if (view != nil)
if (diff > 0)
{ {
NSRect backViewFrame = [backView frame]; CGFloat diff = [item maxSize].width - [item minSize].width;
[backView setFrame: NSMakeRect(x, backViewFrame.origin.y, if (diff > 0)
(rel * diff) + [item minSize].width, {
backViewFrame.size.height)]; NSRect backViewFrame = [backView frame];
mustAdjustNext = YES; NSRect viewFrame = [view frame];
[backView setFrame: NSMakeRect(x, backViewFrame.origin.y,
(rel * diff) + [item minSize].width,
backViewFrame.size.height)];
// Subtract InsetItemViewX
viewFrame.size.width = (rel * diff) + [item minSize].width
- 2 * 10;
[view setFrame: viewFrame];
mustAdjustNext = YES;
}
else if (mustAdjustNext)
{
NSRect backViewFrame = [backView frame];
[backView setFrame: NSMakeRect(x, backViewFrame.origin.y,
backViewFrame.size.width, backViewFrame.size.height)];
}
} }
else if (mustAdjustNext) x += NSWidth([backView frame]);
{
NSRect backViewFrame = [backView frame];
[backView setFrame: NSMakeRect(x, backViewFrame.origin.y,
backViewFrame.size.width, backViewFrame.size.height)];
}
x += [backView frame].size.width;
} }
} }
} }