]> git.neil.brown.name Git - edlib.git/commitdiff
Disconnect pane where possible before closing children.
authorNeilBrown <neil@brown.name>
Fri, 11 Dec 2015 02:43:14 +0000 (13:43 +1100)
committerNeilBrown <neil@brown.name>
Fri, 11 Dec 2015 02:43:14 +0000 (13:43 +1100)
This limits multiple closes due to recursion to some extent.

Signed-off-by: NeilBrown <neil@brown.name>
core-pane.c

index 2720cb248cd8583c1d26bafedce002616f523668..d0862eff51be8e58ccde6eff11b6324871b55728 100644 (file)
@@ -217,6 +217,9 @@ void pane_close(struct pane *p)
        p->damaged |= DAMAGED_CLOSED;
        pane_check(p);
 
+       list_del_init(&p->siblings);
+       pane_drop_notifiers(p);
+
        while (!list_empty(&p->children)) {
                c = list_first_entry(&p->children, struct pane, siblings);
                pane_close(c);
@@ -225,8 +228,6 @@ void pane_close(struct pane *p)
                pane_damaged(p->parent, DAMAGED_CURSOR);
                p->parent->focus = NULL;
        }
-       list_del_init(&p->siblings);
-       pane_drop_notifiers(p);
        pane_notify_close(p);
        if (p->handle) {
                struct cmd_info ci = {0};