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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.