summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2012-12-01 12:28:35 +0100
committerGravatar waker <wakeroid@gmail.com>2012-12-01 12:28:35 +0100
commita954e42b465dbe11293f0446978ddf443e8c520e (patch)
treeb4a7eea54ebadf042c16b8125aa75d7f88f9b517 /plugins
parent731a5fb0160d7411f1577d2dfc2756df7c5fa638 (diff)
gtkui: fixed widget remove/destroy logic
Diffstat (limited to 'plugins')
-rw-r--r--plugins/gtkui/widgets.c15
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);
}