summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2018-11-28 12:57:58 -0500
committerLibravatar Brian Ashworth <bosrsf04@gmail.com>2018-11-28 13:02:54 -0500
commitf52277f66e85d13589b51a851b9e97c3457ed654 (patch)
treeb377b8b22ac59ab8cd40285d731f45b57d6f1c93
parentMerge pull request #3212 from martinetd/move_floating (diff)
downloadsway-f52277f66e85d13589b51a851b9e97c3457ed654.tar.gz
sway-f52277f66e85d13589b51a851b9e97c3457ed654.tar.zst
sway-f52277f66e85d13589b51a851b9e97c3457ed654.zip
Fix scratchpad segfault - NULL focused workspace
When adding a container to the scratchpad, it was possible for focus to be removed from the seat. This occurred when a single child was moved from it's parent to the scratchpad due to the focus_inactive for the parent being NULL. If the focus_inactive for the parent is NULL, the focus_inactive for the workspace should be focused.
-rw-r--r--sway/tree/root.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sway/tree/root.c b/sway/tree/root.c
index 9f6bf607..22c46aba 100644
--- a/sway/tree/root.c
+++ b/sway/tree/root.c
@@ -69,13 +69,16 @@ void root_scratchpad_add_container(struct sway_container *con) {
69 list_add(root->scratchpad, con); 69 list_add(root->scratchpad, con);
70 70
71 struct sway_seat *seat = input_manager_current_seat(); 71 struct sway_seat *seat = input_manager_current_seat();
72 struct sway_node *new_focus = NULL;
72 if (parent) { 73 if (parent) {
73 arrange_container(parent); 74 arrange_container(parent);
74 seat_set_focus(seat, seat_get_focus_inactive(seat, &parent->node)); 75 new_focus = seat_get_focus_inactive(seat, &parent->node);
75 } else { 76 }
77 if (!new_focus) {
76 arrange_workspace(workspace); 78 arrange_workspace(workspace);
77 seat_set_focus(seat, seat_get_focus_inactive(seat, &workspace->node)); 79 new_focus = seat_get_focus_inactive(seat, &workspace->node);
78 } 80 }
81 seat_set_focus(seat, new_focus);
79 82
80 ipc_event_window(con, "move"); 83 ipc_event_window(con, "move");
81} 84}