GNOME Bugzilla – Bug 765020
Menu shows behind game board when Application Menu is turned off in GNOME Shell
Last modified: 2017-11-02 16:25:02 UTC
Created attachment 325890 [details] Screenshot showing menu behind game's board Game's menu shows behind game board when GNOME's Application Menu is turned off. See screenshot for further clarifications. Thanks!
Looks kinda like bug #763627, which was fixed in 3.20.2. Precisely what version of GTK+ 3.20 is this?
Is this wayland? Is the view a GtkClutterEmbed? AFAIR we can't currently raise the popover above wl_subsurfaces that are unknown to gdk, which is the case of GtkClutterEmbed.
Erm, I assumed it was Clutter, but it's actually not, it's being drawn with Cario in https://git.gnome.org/browse/four-in-a-row/tree/src/gfx.c So could potentially be a Four-in-a-row issue.... (In reply to Carlos Garnacho from comment #2) > Is this wayland? (Dunno.)
According to Pacman, this is gtk3 3.20.3-1. Not using Wayland. four-in-a-row 3.20.0-1. I would say this is a problem with the game because the same does not happen in five-or-more 3.20.0-1. Will add attachment. Thanks!
Created attachment 326197 [details] five-or-more screenshot (no issue) Here you can see how the menu works as expected in five-or-more.
Seems to come down to the gtk_widget_set_double_buffered() call in: https://git.gnome.org/browse/four-in-a-row/tree/src/main.c#n1163 Removing it makes the visual stacking right.
*** Bug 750505 has been marked as a duplicate of this bug. ***
Created attachment 362797 [details] [review] Proposed patch The patch does enable double-buffering (in spite of the comment to disable it as it is implemented inside the code) to make the popover work properly. Better have double-double-buffering than an incorrectly working menu.
Review of attachment 362797 [details] [review]: Oh, interesting! This is a step in the right direction, actually, since double-buffering does not work in Wayland. And I see four-in-a-row does not have any calls to gdk_window_begin_draw_frame() or gdk_window_end_draw_frame(), so I guess it wasn't really handling this itself anyway. ::: src/main.c @@ +1163,2 @@ /* We do our own double-buffering. */ + gtk_widget_set_double_buffered (GTK_WIDGET (drawarea), TRUE); Well the comment is stale now. You should remove both the comment and this function call, since TRUE is the default.
Created attachment 362810 [details] [review] Proposed patch second revision
This problem has been fixed in the unstable development version. The fix will be available in the next major software release. You may need to upgrade your Linux distribution to obtain that newer version.