Re: _NET_WM_STATE_BELOW doesn't work when set by an application
"R. Mattes" <[email protected]>
| Newsgroups | gmane.comp.window-managers.openbox |
|---|---|
| Message-ID | <[email protected]> |
On Wed, 5 Feb 2014 14:08:39 -0500, Dana Jansens wrote > On Wed, Feb 5, 2014 at 1:56 PM, Danny <[email protected]> wrote: > [...] > >>>> Hello, > >>>> > >>>> I'm using the default openbox (on gdm) on CentOS 6.5 and are working on an > >>>> application (based on Qt 5.1.1) which tries to set one of its windows to the > >>>> background. The application uses the Qt API to achieve this. This should > >>>> result in the windows manager flag _NET_WM_STATE_BELOW to be applied to the > >>>> window. It seems that openbox doesn't react on this window manager flag. > >>>> > >>>> To come up with a simple test case, I tried the same with the Qt example > >>>> "windowsflags". This results in the same behavior, the window doesn't seem > >>>> to be kept below when the application asks for it. > >>>> > >>>> Additionally testing shows that this also aplies to Openbox 1.5.2, which > >>>> is manually compiled from the sources. > >>>> > >>>> Furthermore, when using the openbox configure to set the specific window > >>>> to the lowest layer, it does seem to work as expected, as long as the > >>>> application itself doesn't ask to keep the window in the lowest layer. > >>>> > >>>> Another weird side effect is that the application is able to keep one > >>>> window on top. However this doesn't work anymore if the same application > >>>> also asks to keep another window below. > >>>> > >>>> Could this be a bug in openbox? Are there any suggestions how to proceed > >>>> with this issue? > >>> > >>> > >>> To change the state of a mapped window, a Client MUST send a _NET_WM_STATE > >>> client message to the root window: > >>> > >>> window = the respective client window > >>> message_type = _NET_WM_STATE > >>> format = 32 > >>> data.l[0] = the action, as listed below > >>> data.l[1] = first property to alter > >>> data.l[2] = second property to alter > >>> data.l[3] = source indication > >>> > >>> other data.l[] elements = 0 > >>> > >>> via http://standards.freedesktop.org/wm-spec/1.3/ar01s05.html This isn't really helpfull for the OP since he/she uses Qt and does not send raw messages to the server .... > >> > >> I noticed the Qt library uses xcb_change_property() calls to update > >> the windows properties, which seem fine to me and also are working > >> properly under gnome2. > >> > >> Is it correct to assume that if the obxprop command gives the > >> following result on the window: > >> > >> _NET_WM_STATE(ATOM) = _NET_WM_STATE_FULLSCREEN, _NET_WM_STATE_BELOW, > >> _OB_WM_STATE_UNDECORATED > >> > >> The messages are correctly applied and the window is expected to stay > >> below the others? > > > > There is not much ambiguity in "MUST send a _NET_WM_STATE client > > message to the root window". Which neither answers any of the OP's questions nor helps in deciding who's responisble for the described behaviour (OpenBox/libxcb/X). I'm in a hurry, but a quick grep and a bit of Google shows that Qt provides _two_ methods, QXcbWindow::setNetWmWindowFlags which only calls xcb_change_property and QXcbWindow::changeNetWmState which _does_ send an event to the root window. HTH Ralf Mattes _______________________________________________ openbox mailing list [email protected] http://icculus.org/mailman/listinfo/openbox