mirror of
https://github.com/swaywm/sway.git
synced 2024-12-29 00:16:22 +01:00
parent
46e5aeac50
commit
5ecedc7199
2 changed files with 28 additions and 17 deletions
|
@ -516,11 +516,11 @@ swayc_t *destroy_view(swayc_t *view) {
|
|||
return NULL;
|
||||
}
|
||||
sway_log(L_DEBUG, "Destroying view '%p'", view);
|
||||
swayc_t *parent = view->parent;
|
||||
free_swayc(view);
|
||||
|
||||
// Destroy empty containers
|
||||
if (parent->type == C_CONTAINER) {
|
||||
swayc_t *parent = view->parent;
|
||||
if (parent && parent->type == C_CONTAINER) {
|
||||
return destroy_container(parent);
|
||||
}
|
||||
return parent;
|
||||
|
|
|
@ -553,22 +553,24 @@ static void handle_view_destroyed(wlc_handle handle) {
|
|||
bool fullscreen = swayc_is_fullscreen(view);
|
||||
remove_view_from_scratchpad(view);
|
||||
swayc_t *parent = destroy_view(view);
|
||||
if (fullscreen) {
|
||||
parent->fullscreen = NULL;
|
||||
if (parent) {
|
||||
if (fullscreen) {
|
||||
parent->fullscreen = NULL;
|
||||
}
|
||||
|
||||
ipc_event_window(parent, "close");
|
||||
|
||||
// Destroy empty workspaces
|
||||
if (parent->type == C_WORKSPACE &&
|
||||
parent->children->length == 0 &&
|
||||
parent->floating->length == 0 &&
|
||||
swayc_active_workspace() != parent &&
|
||||
!parent->visible) {
|
||||
parent = destroy_workspace(parent);
|
||||
}
|
||||
|
||||
arrange_windows(parent, -1, -1);
|
||||
}
|
||||
|
||||
ipc_event_window(parent, "close");
|
||||
|
||||
// Destroy empty workspaces
|
||||
if (parent->type == C_WORKSPACE &&
|
||||
parent->children->length == 0 &&
|
||||
parent->floating->length == 0 &&
|
||||
swayc_active_workspace() != parent &&
|
||||
!parent->visible) {
|
||||
parent = destroy_workspace(parent);
|
||||
}
|
||||
|
||||
arrange_windows(parent, -1, -1);
|
||||
} else {
|
||||
// Is it unmanaged?
|
||||
int i;
|
||||
|
@ -584,6 +586,15 @@ static void handle_view_destroyed(wlc_handle handle) {
|
|||
}
|
||||
}
|
||||
}
|
||||
// Is it in the scratchpad?
|
||||
for (i = 0; i < scratchpad->length; ++i) {
|
||||
swayc_t *item = scratchpad->items[i];
|
||||
if (item->handle == handle) {
|
||||
list_del(scratchpad, i);
|
||||
destroy_view(item);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
set_focused_container(get_focused_view(&root_container));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue