gnustep-dev
[Top][All Lists]
Advanced

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

Re: windowmaker - application icon missing at first start


From: Wolfgang Lux
Subject: Re: windowmaker - application icon missing at first start
Date: Sun, 18 Oct 2020 13:38:20 +0200

Hi Sergii,
> 
> 
> Hi,
> 
>> On Oct 17, 2020, at 00:27, Wolfgang Lux <wolfgang.lux@gmail.com> wrote:
>> 
>> Hi Riccardo,
>> 
>>> I noticed we recently have a strange behaviour, which is slightly
>>> different from setup (= installation on different computers) to setup I have
>>> 
>>> The first time I start a GNUstep application with windowmaker (I mean
>>> the first GNUstep app started ever after X11 start essentially) it has a
>>> bad icon.
>>> - on some setup it has a "generic" icon by windowmaker
>>> - on other setups it has a black looking icon, as only the "mask" of the
>>> icon, the contours are drawn
> 
> Riccardo, could you please provide more info on your specific setups?
> Do you have “UseWindowMakerIcons” set to “NO” in NSGlobalDomain?
> 
>>> 
>>> A restart of the app and then starting any other app, fixes that.
>>> 
>>> 
>>> This was not happening before.
>> 
>> Actually, this has been happening before, but it was fixed about five years 
>> ago in this commit:
>> https://github.com/gnustep/libs-back/commit/1e1185abb364f2ffcb5f06f62c1241d419b8b697#diff-c3c9abc7461037f8abf3f590d909cff84c39bc7817b79d7dfd379b38a3756385
>> 
>>> I think it is related to at least this
>>> commit - merge:
>>> 
>>> https://github.com/mozilla/newtab-dev/raw/6be44da368fb869a3d3e1975f515857352a7d9fc/browser/modules/ProcessHangMonitor.jsm
>> 
>> I assume you meant this commit instead
>> https://github.com/gnustep/libs-back/commit/31b7c4ed2f8efa0127605511aaf4eafef6a3d1c8
>> And, yes, your suspicion is correct because it exactly comments out the 
>> earlier fix.
> 
> As stated in description to this commit it fixes flickering of appicon at 
> application start. Quote: “This fix based on the fact that root application 
> window (ROOT) is mapped in `-orderwindow:::` and this is the event of 
> application recognition by WindowMaker because it is a first application 
> window that is mapped.”. That "root application window" is called “group 
> leader” and saved in every application window structure (WWindow) member 
> `main_window` inside WM. It holds all required properties to be detected by 
> WM correctly.
> 
> The earlier fix probably masks other unknown problem. My WindowMaker 0.95.7 
> default configuration tests work like a charm.
> Wolfgang, do you observe the same behaviour as Riccardo? I yes, could you 
> please share your setup?

Sorry, I haven't been using WindowMaker for a while so I can't really 
contribute anything
here. However, I can perhaps try to better explain the rationale for the fix. 
Normally,
WindowMaker manages the app icon and the menu on the app icon itself. However, 
it does
allow GNUstep applications to override that app icon by supplying those on the 
app icon
windows. The problem here is that this works only if the app icon is the first 
window which
is opened by the GNUstep application. This is not a problem in general, as the 
first window
opened by gnustep-gui is the app icon. However, for the very first application 
in an X11
session, gnustep-back wants to determine the frame offsets and it does so by 
opening a set
of off-screen windows in the _checkStyle: method, which is called from 
setupRootWindow.
The important point here is that these windows are created *before* the app 
icon window is
created in the -window:::: method. And at the point where the first auxiliary 
window is
created WindowMaker creates an app icon for our application itself. Our 
attempts to set the
icon and menu through the app icon window created by the -window:::: method 
then go to the
wrong window are ignored by WindowMaker. The fix I had committed simply 
attempts to make
sure that our app icon window is created before the auxiliary windows. If you 
see a flickering
here, you might attempt to improve the fix by creating the app icon only when 
the backend
is actually going to call _checkStyle: and create any auxiliary windows.

Note that in a normal configuration the issue applies only to the first 
application started
in an X11 Session, but you can set the default GSIgnoreRootOffsets to YES to 
have the backend
determine the frame offsets for every application.

Hope this helps,
Wolfgang






reply via email to

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