sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit f52277f66e85d13589b51a851b9e97c3457ed654
parent 5341e034df75f387184f85cb6a5fc0c95faf537e
Author: Brian Ashworth <bosrsf04@gmail.com>
Date:   Wed, 28 Nov 2018 12:57:58 -0500

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.

Diffstat:
Msway/tree/root.c | 9++++++---
1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/sway/tree/root.c b/sway/tree/root.c @@ -69,13 +69,16 @@ void root_scratchpad_add_container(struct sway_container *con) { list_add(root->scratchpad, con); struct sway_seat *seat = input_manager_current_seat(); + struct sway_node *new_focus = NULL; if (parent) { arrange_container(parent); - seat_set_focus(seat, seat_get_focus_inactive(seat, &parent->node)); - } else { + new_focus = seat_get_focus_inactive(seat, &parent->node); + } + if (!new_focus) { arrange_workspace(workspace); - seat_set_focus(seat, seat_get_focus_inactive(seat, &workspace->node)); + new_focus = seat_get_focus_inactive(seat, &workspace->node); } + seat_set_focus(seat, new_focus); ipc_event_window(con, "move"); }