[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
autoresizing in the case of negative flexible space (was Re: Pixel-align
From: |
Tim Schmielau |
Subject: |
autoresizing in the case of negative flexible space (was Re: Pixel-aligned autoresizing) |
Date: |
Fri, 22 Jul 2011 20:27:17 +0100 |
On 8 Jul 2011, at 22:56, Eric Wasylishen wrote:
>
>
> On 2011-07-08, at 2:27 AM, Fred Kiefer wrote:
>
>> On 08.07.2011 09:34, Eric Wasylishen wrote:
>>> Ok, great! I committed a slightly improved version of my rounding patch,
>>> and now both tests pass.
>>>
>>> It looks like switching to the proportional autoresizing has cause a few
>>> glitches in gui; the colour pickers aren't showing up, and the font panel
>>> doesn't resize properly when stretched horizontally. Hopefully these will
>>> be easy to fix.
>>
>> Thank you for spotting this. I noticed a strange problem with the NSBox test
>> in GSTest and put in the check if options is greater than 0.0 to work around
>> that. I hadn't noticed the other ones. Most likely there is a common cause
>> (maybe related to negative coordinate?), we just need to find and fix it.
>>
>> The good thing is that your change requires that people have to recompile
>> all their libraries and applications. This should buy us time to fix the
>> problem before they notice.
>>
> I found and fixed the main problem, which was not handling cases where the
> sum of the flexible space is 0. I added some more tests for this as well,
> which are all passing now.
>
> I think NSFontPanel will need some manual tweaking so it resizes properly,
> maybe we can change it to use a GSHBox to hold the columns.
Hi Eric and Fred,
thanks for the great work you are doing! I'd like to suggest a little change
though to fix a recently introduced incompatibility:
I have an app where at the bottom of a window there is a GUI element whose
visibility can change. When the visibility changes, the height of the window is
adjusted for the additional space needed. As the GUI element is supposed to
appear at a fixed position from the top left corner of the window, only
NSViewMinYMargin is set in the _autoresizingMask of the GUI element.
I believe this to be a common pattern under Cocoa, and the code worked well
both on Mac OS and on GNUstep before the recent changes.
Since SVN revision 33482 however, the GUI element permanently disappears below
the lower window border on the first time it is made invisible. This is because
the window size adjustment makes the (now invisible) GUI element move to a
negative Y position. Once the Y position is negative, the total flexibleSpace
is negative, and the GUI element will not be moved back up again when the
window becomes larger again.
This is a deviation from the behavior on Cocoa. While I haven't investigated
Cocoa's behavior more closely, it can be fixed by falling back to the old
autoresizing behavior instead of just giving up when negative flexible space is
encountered. The simple patch below achieves that.
Thanks,
Tim
Index: Source/NSView.m
===================================================================
--- Source/NSView.m (revision 33608)
+++ Source/NSView.m (working copy)
@@ -1970,7 +1970,7 @@
flexibleSpace += oldContainerSize - oldContentPosition - oldContentSize;
- if (flexibleSpace == 0.0)
+ if (flexibleSpace <= 0.0)
{
/**
* In this code path there is no flexible space so we divide
@@ -1994,7 +1994,7 @@
}
}
}
- else if (flexibleSpace > 0.0)
+ else
{
/**
* In this code path we distribute the change proportionately
- Re: Graphics Rounding (was Re: Pixel-aligned autoresizing), (continued)
- Re: Graphics Rounding (was Re: Pixel-aligned autoresizing), Fred Kiefer, 2011/07/10
- Re: Graphics Rounding (was Re: Pixel-aligned autoresizing), Eric Wasylishen, 2011/07/10
- Re: Graphics Rounding (was Re: Pixel-aligned autoresizing), Riccardo Mottola, 2011/07/11
- Re: Graphics Rounding (was Re: Pixel-aligned autoresizing), Eric Wasylishen, 2011/07/11
- Re: Graphics Rounding (was Re: Pixel-aligned autoresizing), Tim Schmielau, 2011/07/11
- Re: Graphics Rounding (was Re: Pixel-aligned autoresizing), Riccardo Mottola, 2011/07/12
- Re: Graphics Rounding (was Re: Pixel-aligned autoresizing), Philippe Roussel, 2011/07/11
- Re: Graphics Rounding (was Re: Pixel-aligned autoresizing), Eric Wasylishen, 2011/07/12
- Re: Graphics Rounding (was Re: Pixel-aligned autoresizing), Philippe Roussel, 2011/07/13
- Re: Graphics Rounding (was Re: Pixel-aligned autoresizing), David Chisnall, 2011/07/20
- autoresizing in the case of negative flexible space (was Re: Pixel-aligned autoresizing),
Tim Schmielau <=
- Re: autoresizing in the case of negative flexible space (was Re: Pixel-aligned autoresizing), Fred Kiefer, 2011/07/23
- Re: autoresizing in the case of negative flexible space (was Re: Pixel-aligned autoresizing), Tim Schmielau, 2011/07/23