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:
parent
93ff7879f1
commit
4e0452fce3
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue