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
dev
Rafal Mielniczuk 12 years ago committed by Kristian Høgsberg
parent a6b63d0f67
commit 3e3862c3bc
  1. 5
      src/shell.c

@ -1421,6 +1421,7 @@ get_default_output(struct weston_compositor *compositor)
static void static void
shell_unset_fullscreen(struct shell_surface *shsurf) shell_unset_fullscreen(struct shell_surface *shsurf)
{ {
struct workspace *ws;
/* undo all fullscreen things here */ /* undo all fullscreen things here */
if (shsurf->fullscreen.type == WL_SHELL_SURFACE_FULLSCREEN_METHOD_DRIVER && if (shsurf->fullscreen.type == WL_SHELL_SURFACE_FULLSCREEN_METHOD_DRIVER &&
shell_surface_is_top_fullscreen(shsurf)) { shell_surface_is_top_fullscreen(shsurf)) {
@ -1442,6 +1443,10 @@ shell_unset_fullscreen(struct shell_surface *shsurf)
&shsurf->rotation.transform.link); &shsurf->rotation.transform.link);
shsurf->saved_rotation_valid = false; 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 static int

Loading…
Cancel
Save