summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2017-04-25 08:11:51 +0200
committerTimm Bäder <mail@baedert.org>2017-04-25 13:05:27 +0200
commit02ff0ab3eca5db5f54647d81156a7acd4d09af3a (patch)
treee8697f3d6786a3a8e7f230a04fd4c573848d35d8
parent5a034f34896abcb220e2c74544c319ac01099f92 (diff)
downloadgtk+-02ff0ab3eca5db5f54647d81156a7acd4d09af3a.tar.gz
frame: Compute clip directly
-rw-r--r--gtk/gtkframe.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/gtk/gtkframe.c b/gtk/gtkframe.c
index 0a5ae21d81..1011d00540 100644
--- a/gtk/gtkframe.c
+++ b/gtk/gtkframe.c
@@ -688,7 +688,7 @@ static void
gtk_frame_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
- GtkAllocation clip;
+ GtkAllocation clip = *allocation;
gtk_widget_set_allocation (widget, allocation);
@@ -712,6 +712,7 @@ gtk_frame_allocate (GtkCssGadget *gadget,
GtkFramePrivate *priv;
GtkWidget *child;
GtkAllocation new_allocation;
+ GtkAllocation clip;
widget = gtk_css_gadget_get_owner (gadget);
frame = GTK_FRAME (widget);
@@ -743,13 +744,17 @@ gtk_frame_allocate (GtkCssGadget *gadget,
priv->label_allocation.width = width;
gtk_widget_size_allocate (priv->label_widget, &priv->label_allocation);
+ gtk_widget_get_clip (priv->label_widget, &clip);
+ gdk_rectangle_union (out_clip, out_clip, &clip);
}
child = gtk_bin_get_child (GTK_BIN (widget));
if (child && gtk_widget_get_visible (child))
- gtk_widget_size_allocate (child, &priv->child_allocation);
-
- gtk_container_get_children_clip (GTK_CONTAINER (widget), out_clip);
+ {
+ gtk_widget_size_allocate (child, &priv->child_allocation);
+ gtk_widget_get_clip (child, &clip);
+ gdk_rectangle_union (out_clip, out_clip, &clip);
+ }
}
static void