gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Window manager interaction


From: Wolfgang Lux
Subject: Re: Window manager interaction
Date: Sat, 17 Oct 2009 01:01:24 +0200

Richard Frith-Macdonald wrote:

On 16 Oct 2009, at 19:16, Wolfgang Lux wrote:


IMHO Richard's proposal is much too complicated. I'd suggest something radically simpler: If an application does not have an appicon the hide
command should just minimize all application windows. As far as I
understand this also was the solution used by Apple in OpenStep 4.2 for Windows. See, e.g., http://support.apple.com/kb/TA45871 and search for
the term "hide" (with quotation marks) in that document. This can be
implemented trivially with the three-line patch below in NSApplication.m.

Good idea, but unfortunately that approach does not really work and is not really that simple:

1. the app is not properly hidden ... there are potentially loads of miniwindows left visible 2. the app is potentially 'lost' (as at present) if it has no windows (and hence no miniwindows) 3. there is no consideration of unhiding ... allowing for that would require a lot more code (to track which windows were miniaturised as part of the hide process, and automatically deminiaturise them when you click on any of the miniwindows of the 'hidden' app).

Problem (2) is the problem we currently have ... so this approach actually adds an issue (1) without solving the original issue.

You are right with issue (1), but this is only for the case where an application deliberately hides its appicon. On the other hand, in Phillipe's case I feel that GSSupressAppIcon is abused (somewhat) as a workaround for the lack of better integration with the foreign environment. Maybe it would be a better idea to make use of the current interface style instead of checking the _app_icon_window attribute. Then, assuming that, e.g., an interface style NSWindows95InterfaceStyle indicates the presence of a taskbar, the application should suppress its appicon *and* not manage any miniwindows on itself. Thus, problem (1) would go away.

With respect to problem (2), I think that this could be handled by terminating applications by default when their last window is closed and the application delegate does not respond to - applicationShouldTerminateAfterLastWindowClosed:.

I see issue (3) as rather unproblematic. If the app is properly hidden, the user cannot invoke -unhide: in the first place except by selecting the Show All menu command from another GNUstep application. We could simply ignore this request since the native applications of the foreign gui environment do not understand
that request and we would at least be consistent with our environment.

But even if you are not happy with that suggestion, I'd really prefer to add the additional flag to every window that would allow distinguishing whether a window was miniaturized or "hidden" than to delve into the hairy interaction with lots of different window managers out there and trying to convince them to manage the offscreen appicon. In my opinion back is already bloated too much with conditional code that is supposed to work with WindowMaker, KDE, Gnome, and whats not. Yet, it nevertheless does not really work with, e.g., Apple's quartz-wm (Apple managed to implement the NETWM specification in completely weird ways, but that is a
different story).

Wolfgang







reply via email to

[Prev in Thread] Current Thread [Next in Thread]