Focus correct swaylock view in multimonitor setup

Swaylock spawns and focuses a view for each output in sway. This can
sometimes move the focus to a new output after locking and unlocking the
screens.

This patch makes sure that the output which had focus when swaylock
was invoked, will regain focus once swaylock is closed/unlocked.

Fix #499
This commit is contained in:
Mikkel Oscar Lyderik 2016-03-17 17:02:17 +01:00
parent bb67a3d809
commit c1d5791482

View file

@ -129,7 +129,12 @@ static void set_lock_surface(struct wl_client *client, struct wl_resource *resou
desktop_shell.is_locked = true; desktop_shell.is_locked = true;
// reset input state // reset input state
input_init(); input_init();
set_focused_container(view); // set focus if the lockscreen is spawned on the currently
// active output
swayc_t *focus_output = swayc_active_output();
if (focus_output == output) {
set_focused_container(view);
}
arrange_windows(workspace, -1, -1); arrange_windows(workspace, -1, -1);
list_add(desktop_shell.lock_surfaces, surface); list_add(desktop_shell.lock_surfaces, surface);
wl_resource_set_destructor(surface, lock_surface_destructor); wl_resource_set_destructor(surface, lock_surface_destructor);