GNOME Bugzilla – Bug 742322
Full-screen window gets to front after switch from workspace 1 to workspace 2
Last modified: 2016-12-07 14:41:16 UTC
On the first workspace(call it "home"), full-screen a window(I tried evince and terminal) and let another one, normal size, on top(I tried emacs). Then switch to the second workspace(call it "other") and then switch back to "home". Notice that emacs is no longer on top of, say, terminal, but underneath it, and terminal is all I can see... that was unexpected! I expect to see exactly wat I left on the "home" workspace: one fullscreen app with a smaller emacs on top of it. Note: 1. This does not happen if the "home" workspace is the second one and the "other" is the first workspace in gnome. 2. This is happening systematically.
About Note 1: After some thinking I came to the conclusion that the deciding factor in of this not happening in case of note 1 is that the workspace I was switching to was empty; so note 1 should read: This does not happen if the "other" workspace is not empty(that is, there is a normal window on it). Also, one can use any two adjacent workspaces as "home" and "other" in order to reproduce this; also, it is interesting to note that the bug is happening at the return to the "home" workspace; to see this do: - On the first workspace(call it "home"), full-screen a window and let another one, normal size, on top. Then switch to the second workspace(call it "other"). Here, open a new normal window; and then switch back to "home"; notice that now the windows are positioned as expected: one fullscreen app with a smaller one on top of it.
It can be reproduced in 3.20. The fault is located in function get_standalone_layer(). get_standalone_layer (MetaWindow *window) { ... else if (window->fullscreen && (focused_transient || window == window->display->focus_window || window->display->focus_window == NULL || (window->display->focus_window != NULL && windows_on_different_monitor (window, window->display->focus_window)))) ... } I think line 'window->display->focus_window == NULL ||' need to be deleted. In 3.22 the function get_standalone_layer() is improved. Now the problem disappears.
*** This bug has been marked as a duplicate of bug 768221 ***