diff options
author | waker <wakeroid@gmail.com> | 2012-12-01 12:28:35 +0100 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2012-12-01 12:28:35 +0100 |
commit | a954e42b465dbe11293f0446978ddf443e8c520e (patch) | |
tree | b4a7eea54ebadf042c16b8125aa75d7f88f9b517 /plugins | |
parent | 731a5fb0160d7411f1577d2dfc2756df7c5fa638 (diff) |
gtkui: fixed widget remove/destroy logic
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/gtkui/widgets.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/plugins/gtkui/widgets.c b/plugins/gtkui/widgets.c index f547c568..02b1af57 100644 --- a/plugins/gtkui/widgets.c +++ b/plugins/gtkui/widgets.c @@ -178,6 +178,13 @@ w_append (ddb_gtkui_widget_t *cont, ddb_gtkui_widget_t *child) { void w_remove (ddb_gtkui_widget_t *cont, ddb_gtkui_widget_t *child) { + // recurse + while (child->children) { + ddb_gtkui_widget_t *c = child->children; + w_remove (child, c); + w_destroy (c); + } + if (cont->remove) { cont->remove (cont, child); } @@ -913,14 +920,8 @@ w_splitter_replace (ddb_gtkui_widget_t *cont, ddb_gtkui_widget_t *child, ddb_gtk void w_splitter_remove (ddb_gtkui_widget_t *cont, ddb_gtkui_widget_t *child) { - GtkWidget *container = NULL; + GtkWidget *container = ((w_splitter_t *)cont)->locked ? ((w_splitter_t *)cont)->box : cont->widget; w_splitter_t *w = (w_splitter_t *)cont; - if (w->locked) { - container = w->box; - } - else { - container = cont->widget; - } gtk_container_remove (GTK_CONTAINER (container), child->widget); } |