shell: position input panel layer above fullscreen layer
authorManuel Bachmann <manuel.bachmann@open.eurogiciel.org>
Wed, 5 Mar 2014 11:21:34 +0000 (12:21 +0100)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 2 Apr 2014 17:35:26 +0000 (10:35 -0700)
When a client calls the input panel (weston-keyboard e.g.)
and then goes fullscreen, the panel will not be hidden
anymore.

Signed-off-by: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org>
desktop-shell/input-panel.c
desktop-shell/shell.c

index c08a403..12fe686 100644 (file)
@@ -63,7 +63,7 @@ show_input_panels(struct wl_listener *listener, void *data)
        shell->showing_input_panels = true;
 
        if (!shell->locked)
-               wl_list_insert(&shell->panel_layer.link,
+               wl_list_insert(&shell->compositor->cursor_layer.link,
                               &shell->input_panel_layer.link);
 
        wl_list_for_each_safe(ipsurf, next,
index 97e8b1e..b4cd93c 100644 (file)
@@ -72,9 +72,9 @@ enum shell_surface_type {
  * in the following order (top-most first):
  *  • Lock layer (only ever displayed on its own)
  *  • Cursor layer
+ *  • Input panel layer
  *  • Fullscreen layer
  *  • Panel layer
- *  • Input panel layer
  *  • Workspace layers
  *  • Background layer
  *
@@ -3886,18 +3886,19 @@ resume_desktop(struct desktop_shell *shell)
        terminate_screensaver(shell);
 
        wl_list_remove(&shell->lock_layer.link);
-       wl_list_insert(&shell->compositor->cursor_layer.link,
-                      &shell->fullscreen_layer.link);
-       wl_list_insert(&shell->fullscreen_layer.link,
-                      &shell->panel_layer.link);
        if (shell->showing_input_panels) {
-               wl_list_insert(&shell->panel_layer.link,
+               wl_list_insert(&shell->compositor->cursor_layer.link,
                               &shell->input_panel_layer.link);
                wl_list_insert(&shell->input_panel_layer.link,
-                              &ws->layer.link);
+                              &shell->fullscreen_layer.link);
        } else {
-               wl_list_insert(&shell->panel_layer.link, &ws->layer.link);
+               wl_list_insert(&shell->compositor->cursor_layer.link,
+                              &shell->fullscreen_layer.link);
        }
+       wl_list_insert(&shell->fullscreen_layer.link,
+                      &shell->panel_layer.link);
+       wl_list_insert(&shell->panel_layer.link,
+                      &ws->layer.link),
 
        restore_focus_state(shell, get_current_workspace(shell));