Le 04/05/2012 00:21, Fred Kiefer a écrit :
> On 30.04.2012 19:39, Philippe Roussel wrote:
>> Le 30/04/2012 18:16, Philippe Roussel a écrit :
>>> Le 30/04/2012 17:03, Fred Kiefer a écrit :
>>>> Not handling move and reparenting events when the window is not visible
>>>> sounds like a great idea to me. The only problem is that we would need
>>>> to test this with each and every window manager that we support :-(
>>>>
>>>> A saver solution might be to just not save the window frame in the
>>>> event
>>>> handling code of NSWindow, when the window isn't visible. Could you
>>>> please test this and report back the results?
>>>> It definitely isn't a complete solutions, as the stored frame will be
>>>> wrong as long as the window isn't visible, but we could get away with a
>>>> lot less testing.
>>>
>>> I will test this tonight and report back.
>>
>> The following minimal patch/hack works for me without any visible bad
>> consequences.
>>
>> I'm still having problems when closing and reopening the preferences
>> panel without exiting the application (sometimes the panel wrongly
>> appears in the top left corner and with a bad size) but it doesn't seem
>> related. I'll try to dig further.
> 
> Most likely all this is related. In my new daytime job I am now using
> Unity as the window manager and have a somewhat better understanding of
> how this interferes with all windows. In some cases this is rather nice
> and gives an almost Mac like feeling, but in many cases it makes
> applications unusable. I haven't tried GNUstep in that environment, but
> I can imagine a lot of things that could go wrong there.
> 
> I think that normally we don't want to ignore resizes that happen while
> a window is invisible, but for Unity this may be the case. We have the
> extra case of NSAppKitDefined events that get handled even when a window
> is invisible in the [NSWindow sendEvent:] method and I think in most
> cases this is correct. You could change this as a test, but there is no
> guarantee then, that the window manager and the GNUstep application
> agree on where the window is positioned when it is made visible again.
> Due to our current code in [NSWindow orderWindow:relativeTo:] this wont
> do any harm for titled windows, but windows with out a title might be
> displayed at the wrong place.

Changing the code in sendEvent: from

if (!_f.visible && [theEvent type] != NSAppKitDefined)

to

if (!_f.visible)

seems to change a lot of things. The appicon isn't correctly displayed
for example but I didn't try to understand why.

I've observed other strange behaviours with newer window managers
(unity, gnome-shell, recent metacity). For example, a window with
NSStatusWindowLevel has no decorations and cannot be moved, contrary to
what happens with windowmaker. There might some work to do to support
those wms...

Thanks,
Philippe



_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to