diff options
author | 2016-03-17 17:02:17 +0100 | |
---|---|---|
committer | 2016-03-17 17:02:17 +0100 | |
commit | c1d57914828b33d24b14a27d371931b10721df11 (patch) | |
tree | 1965747b05e5a9cc2cff508f5f03c18a44eb849a /sway | |
parent | Merge pull request #513 from mikkeloscar/sway-bar-manpage (diff) | |
download | sway-c1d57914828b33d24b14a27d371931b10721df11.tar.gz sway-c1d57914828b33d24b14a27d371931b10721df11.tar.zst sway-c1d57914828b33d24b14a27d371931b10721df11.zip |
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
Diffstat (limited to 'sway')
-rw-r--r-- | sway/extensions.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sway/extensions.c b/sway/extensions.c index b3984595..9283b656 100644 --- a/sway/extensions.c +++ b/sway/extensions.c | |||
@@ -129,7 +129,12 @@ static void set_lock_surface(struct wl_client *client, struct wl_resource *resou | |||
129 | desktop_shell.is_locked = true; | 129 | desktop_shell.is_locked = true; |
130 | // reset input state | 130 | // reset input state |
131 | input_init(); | 131 | input_init(); |
132 | set_focused_container(view); | 132 | // set focus if the lockscreen is spawned on the currently |
133 | // active output | ||
134 | swayc_t *focus_output = swayc_active_output(); | ||
135 | if (focus_output == output) { | ||
136 | set_focused_container(view); | ||
137 | } | ||
133 | arrange_windows(workspace, -1, -1); | 138 | arrange_windows(workspace, -1, -1); |
134 | list_add(desktop_shell.lock_surfaces, surface); | 139 | list_add(desktop_shell.lock_surfaces, surface); |
135 | wl_resource_set_destructor(surface, lock_surface_destructor); | 140 | wl_resource_set_destructor(surface, lock_surface_destructor); |