mirror of
https://github.com/swaywm/sway.git
synced 2024-12-28 16:06:37 +01:00
Merge pull request #1014 from cyphar/swaylock-fix-focus
sway: extensions: make locking give back focus
This commit is contained in:
commit
725582c2f1
1 changed files with 11 additions and 5 deletions
|
@ -65,10 +65,20 @@ void lock_surface_destructor(struct wl_resource *resource) {
|
||||||
if (surface == resource) {
|
if (surface == resource) {
|
||||||
list_del(desktop_shell.lock_surfaces, i);
|
list_del(desktop_shell.lock_surfaces, i);
|
||||||
arrange_windows(&root_container, -1, -1);
|
arrange_windows(&root_container, -1, -1);
|
||||||
desktop_shell.is_locked = false;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (desktop_shell.lock_surfaces->length == 0) {
|
||||||
|
sway_log(L_DEBUG, "Desktop shell unlocked");
|
||||||
|
desktop_shell.is_locked = false;
|
||||||
|
|
||||||
|
// We need to now give focus back to the focus which we internally
|
||||||
|
// track, since when we lock sway we don't actually change our internal
|
||||||
|
// focus tracking.
|
||||||
|
swayc_t *focus = get_focused_container(swayc_active_workspace());
|
||||||
|
set_focused_container(focus);
|
||||||
|
wlc_view_focus(focus->handle);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void set_background(struct wl_client *client, struct wl_resource *resource,
|
static void set_background(struct wl_client *client, struct wl_resource *resource,
|
||||||
|
@ -157,10 +167,6 @@ static void set_lock_surface(struct wl_client *client, struct wl_resource *resou
|
||||||
desktop_shell.is_locked = true;
|
desktop_shell.is_locked = true;
|
||||||
input_init();
|
input_init();
|
||||||
arrange_windows(workspace, -1, -1);
|
arrange_windows(workspace, -1, -1);
|
||||||
swayc_t *focus_output = swayc_active_output();
|
|
||||||
if (focus_output == output) {
|
|
||||||
set_focused_container(view);
|
|
||||||
}
|
|
||||||
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);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue