_NET_WM_STATE_FULLSCREEN may result in ConfigureNotify event w/ virtual screen size, instead of monitor-mode size (NV + Fglrx).
ConfigureNotify reflects the actual size of the window and is being propagated
to NEWT and the GLEventListener.
With Mesa/Intel open-source driver, the correct desired monitor mode size is reported
at least on one test machine here.
Remedy is to not use _NET_WM_STATE_FULLSCREEN, but fallback
to our 'FLAG_IS_FULLSCREEN_SPAN' path - simply setting the window's:
- size and position
.. while doing so, we _shall_ set the new EWMH property
synchronous to _NET_WM_STATE_ABOVE.
Further more .. to deal w/ an occupying task bar etc, i.e. to be above other WM elements,
we would need to utilize _NET_WM_STATE_FLAG_ABOVE since _NET_WM_STATE_FULLSCREEN
Since _NET_WM_STATE_FLAG_ABOVE would not allow to utilize TAB-Switch
to another application, we shall only enable it temporarely during fullscreen
if not already requested by the NEWT window!
Note: The TAB-Switch will revoke the focus of our windows,
only to be returned if selected again.
Hence we need to break this temporary state if the window loses the focus
or ends fullscreen mode.
We may renable it while still in fullscreen mode and regaining the focus.
(In reply to comment #1)
> Further more .. to deal w/ an occupying task bar etc, i.e. to be above
> other WM elements,
> we would need to utilize _NET_WM_STATE_FLAG_ABOVE since
> is gone.
Temporary claim of _NET_WM_STATE_FLAG_ABOVE
will allow us to claim _NET_WM_BYPASS_COMPOSITOR as well ..!
fixed .. following description and comments, see commit 205a17de1abec614d3d06386f873170fc1691e86.
Only use FLAG_IS_FULLSCREEN_SPAN if required; At MonitoMode change, reset fullscreen if FLAG_IS_FULLSCREEN_SPAN is supported.
- Bug 770: Only use FLAG_IS_FULLSCREEN_SPAN if required
- If X11 WindowDriver _and_ virtual-screen-size > fullscreenViewport,
- else we still use _NET_WM_STATE_FULLSCREEN on X11!
- Bug 771: At MonitoMode change, reset fullscreen if FLAG_IS_FULLSCREEN_SPAN is supported
- Since we may still use _NET_WM_STATE_FULLSCREEN on X11:
- Pause fullscreen at monitorModeChangeNotify(..)
- Resume fullscreen at monitorModeChanged(..)
Created attachment 697 [details]