Fix endless loop when trying to kill a visible workspace
This regression was introduced with commit
97b086efd9
fixes #1103
This commit is contained in:
parent
f9d8a1b4d6
commit
eef9042713
18
src/tree.c
18
src/tree.c
|
@ -229,11 +229,6 @@ bool tree_close(Con *con, kill_window_t kill_window, bool dont_kill_parent, bool
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (workspace_is_visible(con)) {
|
|
||||||
DLOG("A visible workspace cannot be killed.\n");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (con->window != NULL) {
|
if (con->window != NULL) {
|
||||||
if (kill_window != DONT_KILL_WINDOW) {
|
if (kill_window != DONT_KILL_WINDOW) {
|
||||||
x_window_kill(con->window->id, kill_window);
|
x_window_kill(con->window->id, kill_window);
|
||||||
|
@ -369,6 +364,19 @@ void tree_close_con(kill_window_t kill_window) {
|
||||||
assert(focused->type != CT_OUTPUT);
|
assert(focused->type != CT_OUTPUT);
|
||||||
assert(focused->type != CT_ROOT);
|
assert(focused->type != CT_ROOT);
|
||||||
|
|
||||||
|
if (focused->type == CT_WORKSPACE) {
|
||||||
|
DLOG("Workspaces cannot be close, closing all children instead\n");
|
||||||
|
Con *child, *nextchild;
|
||||||
|
for (child = TAILQ_FIRST(&(focused->nodes_head)); child; ) {
|
||||||
|
nextchild = TAILQ_NEXT(child, nodes);
|
||||||
|
DLOG("killing child=%p\n", child);
|
||||||
|
tree_close(child, kill_window, false, false);
|
||||||
|
child = nextchild;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Kill con */
|
/* Kill con */
|
||||||
tree_close(focused, kill_window, false, false);
|
tree_close(focused, kill_window, false, false);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue