Merge pull request #2414 from RyanDwyer/fix-inactive-fullscreen-crash

Fix crash when fullscreen view closes on inactive workspace
master
emersion 6 years ago committed by GitHub
commit b49904dd7e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -592,19 +592,18 @@ void view_unmap(struct sway_view *view) {
view->urgent_timer = NULL; view->urgent_timer = NULL;
} }
struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE); bool was_fullscreen = view->swayc->is_fullscreen;
struct sway_container *surviving_ancestor = container_destroy(view->swayc);
struct sway_container *parent;
if (container_is_fullscreen_or_child(view->swayc)) { // If the workspace wasn't reaped
parent = container_destroy(view->swayc); if (surviving_ancestor->type >= C_WORKSPACE) {
arrange_windows(ws->parent); struct sway_container *ws = surviving_ancestor->type == C_WORKSPACE ?
} else { surviving_ancestor :
parent = container_destroy(view->swayc); container_parent(surviving_ancestor, C_WORKSPACE);
arrange_windows(parent); arrange_windows(was_fullscreen ? ws : surviving_ancestor);
}
if (parent->type >= C_WORKSPACE) { // if the workspace still exists
workspace_detect_urgent(ws); workspace_detect_urgent(ws);
} }
transaction_commit_dirty(); transaction_commit_dirty();
view->surface = NULL; view->surface = NULL;
} }

Loading…
Cancel
Save