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));