summaryrefslogtreecommitdiff
path: root/gtk/gtkbox.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkbox.c')
-rw-r--r--gtk/gtkbox.c40
1 files changed, 18 insertions, 22 deletions
diff --git a/gtk/gtkbox.c b/gtk/gtkbox.c
index 868f0f1459..5c94a272bd 100644
--- a/gtk/gtkbox.c
+++ b/gtk/gtkbox.c
@@ -341,20 +341,17 @@ gtk_box_pack_start (GtkBox *box,
box->children = g_list_append (box->children, child_info);
gtk_widget_set_parent (child, GTK_WIDGET (box));
+
+ if (GTK_WIDGET_REALIZED (box))
+ gtk_widget_realize (child);
- if (GTK_WIDGET_VISIBLE (GTK_WIDGET (box)))
+ if (GTK_WIDGET_VISIBLE (box) && GTK_WIDGET_VISIBLE (child))
{
- if (GTK_WIDGET_REALIZED (GTK_WIDGET (box)) &&
- !GTK_WIDGET_REALIZED (child))
- gtk_widget_realize (child);
-
- if (GTK_WIDGET_MAPPED (GTK_WIDGET (box)) &&
- !GTK_WIDGET_MAPPED (child))
+ if (GTK_WIDGET_MAPPED (box))
gtk_widget_map (child);
- }
- if (GTK_WIDGET_VISIBLE (child) && GTK_WIDGET_VISIBLE (box))
- gtk_widget_queue_resize (child);
+ gtk_widget_queue_resize (child);
+ }
}
void
@@ -382,19 +379,16 @@ gtk_box_pack_end (GtkBox *box,
gtk_widget_set_parent (child, GTK_WIDGET (box));
- if (GTK_WIDGET_VISIBLE (GTK_WIDGET (box)))
+ if (GTK_WIDGET_REALIZED (box))
+ gtk_widget_realize (child);
+
+ if (GTK_WIDGET_VISIBLE (box) && GTK_WIDGET_VISIBLE (child))
{
- if (GTK_WIDGET_REALIZED (GTK_WIDGET (box)) &&
- !GTK_WIDGET_REALIZED (child))
- gtk_widget_realize (child);
-
- if (GTK_WIDGET_MAPPED (GTK_WIDGET (box)) &&
- !GTK_WIDGET_MAPPED (child))
+ if (GTK_WIDGET_MAPPED (box))
gtk_widget_map (child);
+
+ gtk_widget_queue_resize (child);
}
-
- if (GTK_WIDGET_VISIBLE (child) && GTK_WIDGET_VISIBLE (box))
- gtk_widget_queue_resize (child);
}
void
@@ -660,7 +654,8 @@ gtk_box_draw (GtkWidget *widget,
child = children->data;
children = children->next;
- if (gtk_widget_intersect (child->widget, area, &child_area))
+ if (GTK_WIDGET_DRAWABLE (child->widget) &&
+ gtk_widget_intersect (child->widget, area, &child_area))
gtk_widget_draw (child->widget, &child_area);
}
}
@@ -691,7 +686,8 @@ gtk_box_expose (GtkWidget *widget,
child = children->data;
children = children->next;
- if (GTK_WIDGET_NO_WINDOW (child->widget) &&
+ if (GTK_WIDGET_DRAWABLE (child->widget) &&
+ GTK_WIDGET_NO_WINDOW (child->widget) &&
gtk_widget_intersect (child->widget, &event->area, &child_event.area))
gtk_widget_event (child->widget, (GdkEvent*) &child_event);
}