shell: Put popups and transients on top of their parent
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 6 Mar 2012 01:51:34 +0000 (20:51 -0500)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 6 Mar 2012 01:51:34 +0000 (20:51 -0500)
In other words, don't map the panel menu under the panel.

src/shell.c

index c40fc6b..5d2c239 100644 (file)
@@ -1489,6 +1489,7 @@ map(struct weston_shell *base, struct weston_surface *surface,
        struct weston_compositor *compositor = shell->compositor;
        struct shell_surface *shsurf;
        enum shell_surface_type surface_type = SHELL_SURFACE_NONE;
+       struct weston_surface *parent;
        int panel_height = 0;
 
        shsurf = get_shell_surface(surface);
@@ -1561,6 +1562,11 @@ map(struct weston_shell *base, struct weston_surface *surface,
                                compositor->state = WESTON_COMPOSITOR_IDLE;
                }
                break;
+       case SHELL_SURFACE_POPUP:
+       case SHELL_SURFACE_TRANSIENT:
+               parent = shsurf->parent->surface;
+               wl_list_insert(parent->layer_link.prev, &surface->layer_link);
+               break;
        case SHELL_SURFACE_FULLSCREEN:
        case SHELL_SURFACE_NONE:
                break;