diff options
-rw-r--r-- | sway/tree/root.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sway/tree/root.c b/sway/tree/root.c index 233358d2..831c75a5 100644 --- a/sway/tree/root.c +++ b/sway/tree/root.c | |||
@@ -145,7 +145,10 @@ void root_scratchpad_show(struct sway_container *con) { | |||
145 | // Show the container | 145 | // Show the container |
146 | if (old_ws) { | 146 | if (old_ws) { |
147 | container_detach(con); | 147 | container_detach(con); |
148 | workspace_consider_destroy(old_ws); | 148 | // Make sure the last inactive container on the old workspace is above |
149 | // the workspace itself in the focus stack. | ||
150 | struct sway_node *node = seat_get_focus_inactive(seat, &old_ws->node); | ||
151 | seat_set_raw_focus(seat, node); | ||
149 | } else { | 152 | } else { |
150 | // Act on the ancestor of scratchpad hidden split containers | 153 | // Act on the ancestor of scratchpad hidden split containers |
151 | while (con->pending.parent) { | 154 | while (con->pending.parent) { |
@@ -163,6 +166,9 @@ void root_scratchpad_show(struct sway_container *con) { | |||
163 | 166 | ||
164 | arrange_workspace(new_ws); | 167 | arrange_workspace(new_ws); |
165 | seat_set_focus(seat, seat_get_focus_inactive(seat, &con->node)); | 168 | seat_set_focus(seat, seat_get_focus_inactive(seat, &con->node)); |
169 | if (old_ws) { | ||
170 | workspace_consider_destroy(old_ws); | ||
171 | } | ||
166 | } | 172 | } |
167 | 173 | ||
168 | static void disable_fullscreen(struct sway_container *con, void *data) { | 174 | static void disable_fullscreen(struct sway_container *con, void *data) { |