From 3e3862c3bc5a68118b0bd3d2b9a27f2c896e8387 Mon Sep 17 00:00:00 2001 From: Rafal Mielniczuk Date: Sun, 7 Oct 2012 20:25:36 +0200 Subject: [PATCH] shell: restore correct layer in shell_unset_fullscreen This fixes the bug where surface is above panel_layer just after it is restored from fullscreen mode. How to reproduce: * move surface under panel * set surface fullscreen * restore surface to normal mode --- src/shell.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/shell.c b/src/shell.c index 1c44e39..c799409 100644 --- a/src/shell.c +++ b/src/shell.c @@ -1421,6 +1421,7 @@ get_default_output(struct weston_compositor *compositor) static void shell_unset_fullscreen(struct shell_surface *shsurf) { + struct workspace *ws; /* undo all fullscreen things here */ if (shsurf->fullscreen.type == WL_SHELL_SURFACE_FULLSCREEN_METHOD_DRIVER && shell_surface_is_top_fullscreen(shsurf)) { @@ -1442,6 +1443,10 @@ shell_unset_fullscreen(struct shell_surface *shsurf) &shsurf->rotation.transform.link); shsurf->saved_rotation_valid = false; } + + ws = get_current_workspace(shsurf->shell); + wl_list_remove(&shsurf->surface->layer_link); + wl_list_insert(&ws->layer.surface_list, &shsurf->surface->layer_link); } static int -- 2.7.4