From 7df7e092b98858139244c55779194f0770d870da Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 28 Mar 2013 13:24:04 +0100 Subject: [PATCH] GtkOverlay: Respect overlay child min size Never allocate an overlayed child less than its minimum request. If the minimum doesn't fit we will gracefully clip via the widget window. https://bugzilla.gnome.org/show_bug.cgi?id=696623 --- gtk/gtkoverlay.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gtk/gtkoverlay.c b/gtk/gtkoverlay.c index d87e9774b4..c69e104556 100644 --- a/gtk/gtkoverlay.c +++ b/gtk/gtkoverlay.c @@ -372,15 +372,15 @@ gtk_overlay_get_child_position (GtkOverlay *overlay, GtkAllocation *alloc) { GtkAllocation main_alloc; - GtkRequisition req; + GtkRequisition min, req; GtkAlign halign; GtkTextDirection direction; gtk_overlay_get_main_widget_allocation (overlay, &main_alloc); - gtk_widget_get_preferred_size (widget, NULL, &req); + gtk_widget_get_preferred_size (widget, &min, &req); alloc->x = main_alloc.x; - alloc->width = MIN (main_alloc.width, req.width); + alloc->width = MAX (min.width, MIN (main_alloc.width, req.width)); direction = gtk_widget_get_direction (widget); @@ -391,7 +391,7 @@ gtk_overlay_get_child_position (GtkOverlay *overlay, /* nothing to do */ break; case GTK_ALIGN_FILL: - alloc->width = main_alloc.width; + alloc->width = MAX (alloc->width, main_alloc.width); break; case GTK_ALIGN_CENTER: alloc->x += main_alloc.width / 2 - req.width / 2; @@ -402,7 +402,7 @@ gtk_overlay_get_child_position (GtkOverlay *overlay, } alloc->y = main_alloc.y; - alloc->height = MIN (main_alloc.height, req.height); + alloc->height = MAX (min.height, MIN (main_alloc.height, req.height)); switch (gtk_widget_get_valign (widget)) { @@ -410,7 +410,7 @@ gtk_overlay_get_child_position (GtkOverlay *overlay, /* nothing to do */ break; case GTK_ALIGN_FILL: - alloc->height = main_alloc.height; + alloc->height = MAX (alloc->height, main_alloc.height); break; case GTK_ALIGN_CENTER: alloc->y += main_alloc.height / 2 - req.height / 2;