shell: Always set focus when restoring focus state
authorJonas Ådahl <jadahl@gmail.com>
Wed, 29 Aug 2012 20:12:59 +0000 (22:12 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 31 Aug 2012 23:51:04 +0000 (19:51 -0400)
To avoid having a surface on a hidden workspace in focus always set the
focus (even to NULL) when restoring.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
src/shell.c

index 45323c2..6ad312b 100644 (file)
@@ -439,11 +439,13 @@ static void
 restore_focus_state(struct desktop_shell *shell, struct workspace *ws)
 {
        struct focus_state *state, *next;
+       struct wl_surface *surface;
 
        wl_list_for_each_safe(state, next, &ws->focus_list, link) {
-               if (state->keyboard_focus)
-                       wl_keyboard_set_focus(state->seat->seat.keyboard,
-                                             &state->keyboard_focus->surface);
+               surface = state->keyboard_focus ?
+                       &state->keyboard_focus->surface : NULL;
+
+               wl_keyboard_set_focus(state->seat->seat.keyboard, surface);
        }
 }