After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 648080 - Window in _NET_WM_STATE_FULLSCREEN state always stays in z-order above a window with transient_for hint set to that fullscreen window.
Window in _NET_WM_STATE_FULLSCREEN state always stays in z-order above a wind...
Status: RESOLVED OBSOLETE
Product: mutter
Classification: Core
Component: general
git master
Other Linux
: Normal normal
: ---
Assigned To: Metacity maintainers list
Metacity maintainers list
Depends on:
Blocks:
 
 
Reported: 2011-04-18 09:25 UTC by Dmitry Timoshkov
Modified: 2021-07-05 13:48 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Dmitry Timoshkov 2011-04-18 09:25:23 UTC
I'm filing this report against Metacity 2.28.x, but as far as I see current
git sources have the same problem.

Recently Wine stopped to use _NET_WM_WINDOW_TYPE_DIALOG type for windows
(because of strange limitations on them, including inability to make them
fullscreen), and now uses _NET_WM_WINDOW_TYPE_NORMAL for all kinds of windows.
This led to a regression in windows z-order reported in
http://bugs.winehq.org/show_bug.cgi?id=26693.

While investigating that bug I found another problem with transient_for hint,
it was reported in the bug 648079.

After adding a workaround for the transient_for bug (by simply commenting out
setting a specifyied in the request window to None), I see another problem:
a window in _NET_WM_STATE_FULLSCREEN state always stays in z-order above
a window with transient_for hint set to that fullscreen window. Once I set
window type of the latter window to DIALOG the problem disappears.

Here are some snippets from the logs:

For DIALOG window type:

WINDOW_OPS: Fullscreening 0x3e00004 (Bionic Hea)
WINDOW_OPS: Raising window 0x3e00004 (Bionic Hea), ancestor of 0x3e00004 (Bionic Hea)
STACK: Window 0x3e00004 (Bionic Hea) already has position 8
...
STACK: Syncing window stack to server
STACK: Adding 1 windows to sorted list
STACK: Recomputing layers
STACK: Window 0x3e00004 (Bionic Hea) on layer 2 type = 0 has_focus = 0
STACK: Window 0x3e00004 (Bionic Hea) moved from layer 7 to 2
STACK: Window 0x1a00003 (Bottom Pan) on layer 4 type = 2 has_focus = 0
STACK: Window 0x1a00025 (Top Panel) on layer 4 type = 2 has_focus = 0
STACK: Window 0x3e00001 () on layer 2 type = 3 has_focus = 0
STACK: Window 0x1e0008b (dmitry@ubu) on layer 2 type = 0 has_focus = 1
STACK: Window 0x1e00146 (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1e00003 (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1e00030 (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1c0001c (x-nautilus) on layer 0 type = 1 has_focus = 0
STACK: Reapplying constraints
STACK: Constraining 0x3e00001 () above 0x3e00004 (Bionic Hea) as it's transient for its group
STACK: Window 0x3e00001 () had stack_position set to 8
STACK: 0x3e00001 () above at 8 > 0x3e00004 (Bionic Hea) below at 7
STACK: Sorting stack list
STACK: Top to bottom: 4:2 - 0x1a00003 (Bottom Pan) 4:0 - 0x1a00025 (Top Panel) 2:8 - 0x3e00001 () 2:7 - 0x3e00004 (Bionic Hea) 2:6 - 0x1e0008b (dmitry@ubu) 2:5 - 0x1e00146 (dmitry@ubu) 2:4 - 0x1e00003 (dmitry@ubu) 2:3 - 0x1e00030 (dmitry@ubu) 0:1 - 0x1c0001c (x-nautilus) 
...
STACK: Syncing window stack to server
STACK: Recomputing layers
STACK: Window 0x1a00003 (Bottom Pan) on layer 4 type = 2 has_focus = 0
STACK: Window 0x1a00025 (Top Panel) on layer 4 type = 2 has_focus = 0
STACK: Window 0x3e00001 (Bionic Hea) on layer 2 type = 3 has_focus = 0
STACK: Window 0x3e00004 (Bionic Hea) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1e0008b (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1e00146 (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1e00003 (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1e00030 (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1c0001c (x-nautilus) on layer 0 type = 1 has_focus = 0
STACK: Top to bottom: 4:2 - 0x1a00003 (Bottom Pan) 4:0 - 0x1a00025 (Top Panel) 2:8 - 0x3e00001 (Bionic Hea) 2:7 - 0x3e00004 (Bionic Hea) 2:6 - 0x1e0008b (dmitry@ubu) 2:5 - 0x1e00146 (dmitry@ubu) 2:4 - 0x1e00003 (dmitry@ubu) 2:3 - 0x1e00030 (dmitry@ubu) 0:1 - 0x1c0001c (x-nautilus) 

For NORMAL window type:

WINDOW_OPS: Fullscreening 0x3e00004 (Bionic Hea)
WINDOW_OPS: Raising window 0x3e00004 (Bionic Hea), ancestor of 0x3e00004 (Bionic Hea)
STACK: Window 0x3e00004 (Bionic Hea) already has position 8
...
STACK: Syncing window stack to server
STACK: Adding 1 windows to sorted list
STACK: Recomputing layers
STACK: Window 0x3e00004 (Bionic Hea) on layer 2 type = 0 has_focus = 0
STACK: Window 0x3e00004 (Bionic Hea) moved from layer 7 to 2
STACK: Window 0x1a00003 (Bottom Pan) on layer 4 type = 2 has_focus = 0
STACK: Window 0x1a00025 (Top Panel) on layer 4 type = 2 has_focus = 0
STACK: Window 0x3e00001 () on layer 2 type = 0 has_focus = 0
STACK: Window 0x1e0008b (dmitry@ubu) on layer 2 type = 0 has_focus = 1
STACK: Window 0x1e000a0 (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1e00003 (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1e00030 (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1c0001c (x-nautilus) on layer 0 type = 1 has_focus = 0
STACK: Reapplying constraints
STACK: Constraining 0x3e00001 () above 0x3e00004 (Bionic Hea) due to transiency
STACK: Window 0x3e00001 () had stack_position set to 8
STACK: 0x3e00001 () above at 8 > 0x3e00004 (Bionic Hea) below at 7
STACK: Sorting stack list
STACK: Top to bottom: 4:2 - 0x1a00003 (Bottom Pan) 4:1 - 0x1a00025 (Top Panel) 2:8 - 0x3e00001 () 2:7 - 0x3e00004 (Bionic Hea) 2:6 - 0x1e0008b (dmitry@ubu) 2:5 - 0x1e000a0 (dmitry@ubu) 2:4 - 0x1e00003 (dmitry@ubu) 2:3 - 0x1e00030 (dmitry@ubu) 0:0 - 0x1c0001c (x-nautilus) 
...
so far so good
...
STACK: Syncing window stack to server
STACK: Recomputing layers
STACK: Window 0x1a00003 (Bottom Pan) on layer 4 type = 2 has_focus = 0
STACK: Window 0x1a00025 (Top Panel) on layer 4 type = 2 has_focus = 0
STACK: Window 0x3e00001 (Bionic Hea) on layer 2 type = 0 has_focus = 0
STACK: Window 0x3e00004 (Bionic Hea) on layer 5 type = 0 has_focus = 0
STACK: Window 0x3e00004 (Bionic Hea) moved from layer 2 to 5
STACK: Window 0x1e0008b (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1e000a0 (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1e00003 (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1e00030 (dmitry@ubu) on layer 2 type = 0 has_focus = 0
STACK: Window 0x1c0001c (x-nautilus) on layer 0 type = 1 has_focus = 0
STACK: Reapplying constraints
STACK: Constraining 0x3e00001 (Bionic Hea) above 0x3e00004 (Bionic Hea) due to transiency
STACK: 0x3e00001 (Bionic Hea) above at 8 > 0x3e00004 (Bionic Hea) below at 7
STACK: Sorting stack list
STACK: Top to bottom: 5:7 - 0x3e00004 (Bionic Hea) 4:2 - 0x1a00003 (Bottom Pan) 4:1 - 0x1a00025 (Top Panel) 2:8 - 0x3e00001 (Bionic Hea) 2:6 - 0x1e0008b (dmitry@ubu) 2:5 - 0x1e000a0 (dmitry@ubu) 2:4 - 0x1e00003 (dmitry@ubu) 2:3 - 0x1e00030 (dmitry@ubu) 0:0 - 0x1c0001c (x-nautilus) 

now it's broken.
Comment 1 Dmitry Timoshkov 2011-06-20 05:40:29 UTC
Obviously mutter has the same codebase and exactly the same problem. Changing
component in the hope that this bug report takes more attention.
Comment 2 Dmitry Timoshkov 2011-08-03 07:54:11 UTC
Is there any hope to get at least some comment to this bug report?
Comment 3 Jonas Ådahl 2018-02-01 08:07:13 UTC
Wine bug was fixed so I assume the issue was on that side. Reopen if I'm wrong.
Comment 4 Dmitry Timoshkov 2018-02-01 08:18:37 UTC
(In reply to Jonas Ådahl from comment #3)
> Wine bug was fixed so I assume the issue was on that side. Reopen if I'm
> wrong.

While the Wine bug is marked as fixed, that's because a workaround for
this Gnome bug was committed to Wine code.

It would be better to have a real fix in Gnome instead, for correct
handling of a window with _NET_WM_STATE_FULLSCREEN and its z-order to
a window with transient_for hint.
Comment 5 Jonas Ådahl 2018-02-01 08:21:17 UTC
Could you provide a minimal test case that illustrates the issue?
Comment 6 Dmitry Timoshkov 2018-02-01 08:34:22 UTC
(In reply to Jonas Ådahl from comment #5)
> Could you provide a minimal test case that illustrates the issue?

Thanks for your interest in fixing this bug.

I'm afraid that I have no a minimal test case. The problem could be
reproduced by running under Wine the program, mentioned in the bug
https://bugs.winehq.org/show_bug.cgi?id=26693, after reverting a workaround.

For the reference here is a Wine commit with a workaround:
https://source.winehq.org/git/wine.git/commitdiff/fd043c56443430ee993c7d7281845b9b726b48d6
Comment 7 GNOME Infrastructure Team 2021-07-05 13:48:45 UTC
GNOME is going to shut down bugzilla.gnome.org in favor of gitlab.gnome.org.
As part of that, we are mass-closing older open tickets in bugzilla.gnome.org
which have not seen updates for a longer time (resources are unfortunately
quite limited so not every ticket can get handled).

If you can still reproduce the situation described in this ticket in a recent
and supported software version, then please follow
  https://wiki.gnome.org/GettingInTouch/BugReportingGuidelines
and create a new ticket at
  https://gitlab.gnome.org/GNOME/mutter/-/issues/

Thank you for your understanding and your help.