mirror of
https://github.com/swaywm/sway.git
synced 2024-11-10 20:44:01 +01:00
root: Set inactive focus when scratchpad is moved to new workspace
Fixes an issue where an already visible scratchpad window being moved due to 'scratchpad show' leaves the entire workspace at the top of the focus stack in the old workspace. Moving by 'focus output' back to the old workspace would focus the entire workspace instead of just the last active container.
This commit is contained in:
parent
90c2d631e2
commit
f21090f978
@ -145,7 +145,10 @@ void root_scratchpad_show(struct sway_container *con) {
|
|||||||
// Show the container
|
// Show the container
|
||||||
if (old_ws) {
|
if (old_ws) {
|
||||||
container_detach(con);
|
container_detach(con);
|
||||||
workspace_consider_destroy(old_ws);
|
// Make sure the last inactive container on the old workspace is above
|
||||||
|
// the workspace itself in the focus stack.
|
||||||
|
struct sway_node *node = seat_get_focus_inactive(seat, &old_ws->node);
|
||||||
|
seat_set_raw_focus(seat, node);
|
||||||
} else {
|
} else {
|
||||||
// Act on the ancestor of scratchpad hidden split containers
|
// Act on the ancestor of scratchpad hidden split containers
|
||||||
while (con->pending.parent) {
|
while (con->pending.parent) {
|
||||||
@ -163,6 +166,9 @@ void root_scratchpad_show(struct sway_container *con) {
|
|||||||
|
|
||||||
arrange_workspace(new_ws);
|
arrange_workspace(new_ws);
|
||||||
seat_set_focus(seat, seat_get_focus_inactive(seat, &con->node));
|
seat_set_focus(seat, seat_get_focus_inactive(seat, &con->node));
|
||||||
|
if (old_ws) {
|
||||||
|
workspace_consider_destroy(old_ws);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void disable_fullscreen(struct sway_container *con, void *data) {
|
static void disable_fullscreen(struct sway_container *con, void *data) {
|
||||||
|
Loading…
Reference in New Issue
Block a user