Fix scratchpad related crashes

* Was crashing when a view was moved to the scratchpad (prev focus had
no parent).
* Was crashing when a hidden scratchpad view unmaps because it has no
workspace.
This commit is contained in:
Ryan Dwyer 2018-09-02 15:37:56 +10:00
parent 93ff7879f1
commit 4e0452fce3
2 changed files with 6 additions and 3 deletions

View File

@ -618,7 +618,10 @@ void seat_set_focus_warp(struct sway_seat *seat, struct sway_node *node,
if (last_focus) { if (last_focus) {
seat_send_unfocus(last_focus, seat); seat_send_unfocus(last_focus, seat);
node_set_dirty(last_focus); node_set_dirty(last_focus);
node_set_dirty(node_get_parent(last_focus)); struct sway_node *parent = node_get_parent(last_focus);
if (parent) {
node_set_dirty(parent);
}
} }
// Put the container parents on the focus stack, then the workspace, then // Put the container parents on the focus stack, then the workspace, then

View File

@ -560,11 +560,11 @@ void view_unmap(struct sway_view *view) {
container_begin_destroy(view->container); container_begin_destroy(view->container);
if (parent) { if (parent) {
container_reap_empty(parent); container_reap_empty(parent);
} else { } else if (ws) {
workspace_consider_destroy(ws); workspace_consider_destroy(ws);
} }
if (!ws->node.destroying) { if (ws && !ws->node.destroying) {
arrange_workspace(ws); arrange_workspace(ws);
workspace_detect_urgent(ws); workspace_detect_urgent(ws);
} }