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:
Fred Kiefer 2010-05-13 14:25:54 +00:00
parent ccfd4b4fd5
commit 4335c12ae4
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>
* Source/GSNibLoading.m (-nibInstantiateWithOwner:topLeveObjects:,
@ -76,7 +82,6 @@
Fix bug where some objects from the nib file were not sent an
-awakeFromNib message.
>>>>>>> .r30369
2010-05-11 Fred Kiefer <FredKiefer@gmx.de>
* Headers/Additions/GNUstepGUI/GSTheme.h:

View file

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