When compiz is running, the fullscreen preview of gnome-screen-saver doesn't
work the first time. The second time it does work.
What's going on here is that compiz has it's own "type" for a window that is
different from the wmspec's idea. This field determines among other things
whether a window can be fullscreened. So what happens is:
- Application creates a _NET_WM_TYPE_NORMAL window with a transient parent
- compiz decides that the internal type for such a window is 'dialog' because
of the transient parent
- Application tries to fullscreen window
- Compiz denies this, since it doesn't think dialogs should be fullscreened
- The next time compiz looks at the window, it sees that it has the FULLSCREEN
state set, causing it to decide that the window should have internal type
- At this point, fullscreening *is* allowed.
Net result: the first time the preview window is shown it won't be fullscreened;
the second time it will.
That's pretty bad.
That the state is changed even though the fullscreen action isn't allowed must
be that the client is setting the fullscreen state before mapping the window and
there's a missing call to constrainWindowState when receiving _NET_WM_STATE
property changes. It was only constraining the state when getting client messages.
So after fixing that, it's at least consistent and never makes the window
Second problem is of course that this type of window should be allowed to go
fullscreen. Allowing the fullscreen action on all windows with actual
_NET_WM_WINDOW_TYPE set to _NET_WM_WINDOW_TYPE_NORMAL seems OK.
I've pushed out these changes and it seems to be working OK now. Please give it
a try and close the bug if there's no problems with it.
Looks like it's working. Thanks.