From 805d2f536a2c8869b73721200203bd6b354f3e9b Mon Sep 17 00:00:00 2001 From: Manuel Bachmann Date: Wed, 5 Mar 2014 12:21:34 +0100 Subject: [PATCH] shell: position input panel layer above fullscreen layer 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 --- desktop-shell/input-panel.c | 2 +- desktop-shell/shell.c | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/desktop-shell/input-panel.c b/desktop-shell/input-panel.c index c08a403f..12fe686f 100644 --- a/desktop-shell/input-panel.c +++ b/desktop-shell/input-panel.c @@ -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, diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c index 97e8b1ea..b4cd93cf 100644 --- a/desktop-shell/shell.c +++ b/desktop-shell/shell.c @@ -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));