diff --git a/src/WindowManager.vala b/src/WindowManager.vala index 41d307218..628871bbd 100644 --- a/src/WindowManager.vala +++ b/src/WindowManager.vala @@ -49,6 +49,8 @@ namespace Gala { */ public Clutter.Actor shell_group { get; private set; } + private Clutter.Actor menu_group { get; set; } + /** * {@inheritDoc} */ @@ -221,6 +223,7 @@ namespace Gala { * +-- window switcher * +-- window overview * +-- shell group + * +-- menu group * +-- feedback group (e.g. DND icons) * +-- pointer locator * +-- dwell click timer @@ -289,6 +292,9 @@ namespace Gala { shell_group = new Clutter.Actor (); ui_group.add_child (shell_group); + menu_group = new Clutter.Actor (); + ui_group.add_child (menu_group); + var feedback_group = display.get_compositor ().get_feedback_group (); stage.remove_child (feedback_group); ui_group.add_child (feedback_group); @@ -1012,6 +1018,15 @@ namespace Gala { notification_stack.show_notification (actor); } + // Workaround for X11 bug: https://github.com/elementary/gala/issues/2071 + if (window.window_type == MENU || + window.window_type == DROPDOWN_MENU || + window.window_type == POPUP_MENU || + window.window_type == TOOLTIP + ) { + InternalUtils.clutter_actor_reparent (actor, menu_group); + } + // Workaround for X11 bug: https://github.com/elementary/dock/issues/479 if (!Meta.Util.is_wayland_compositor () && window.window_type == DND) { InternalUtils.clutter_actor_reparent (actor, get_display ().get_compositor ().get_feedback_group ());