summaryrefslogtreecommitdiff
path: root/gtk/gtkmenubar.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2011-04-30 06:34:58 +0200
committerBenjamin Otte <otte@redhat.com>2011-05-01 04:44:56 +0200
commitc52f733a2da92f8d6ce14e0102b37fbfc742d809 (patch)
tree73be6eb2238106ac324ca0bafd7ae334d235e539 /gtk/gtkmenubar.c
parent3091a90538e10425e1e405e75fb6b43baa52e571 (diff)
downloadgtk+-c52f733a2da92f8d6ce14e0102b37fbfc742d809.tar.gz
menubar: Actually query minimum and natural size of children
Previously, we only queried the minimum size and reported that as natural size, too.
Diffstat (limited to 'gtk/gtkmenubar.c')
-rw-r--r--gtk/gtkmenubar.c36
1 files changed, 25 insertions, 11 deletions
diff --git a/gtk/gtkmenubar.c b/gtk/gtkmenubar.c
index 35741484f6..713785ef6f 100644
--- a/gtk/gtkmenubar.c
+++ b/gtk/gtkmenubar.c
@@ -323,7 +323,10 @@ gtk_menu_bar_size_request (GtkWidget *widget,
gint ipadding;
guint border_width;
gboolean use_toggle_size, use_maximize;
- gint child_size, size = 0;
+ gint child_minimum, child_natural;
+
+ *minimum = 0;
+ *natural = 0;
menu_bar = GTK_MENU_BAR (widget);
menu_shell = GTK_MENU_SHELL (widget);
@@ -350,7 +353,7 @@ gtk_menu_bar_size_request (GtkWidget *widget,
if (gtk_widget_get_visible (child))
{
- get_preferred_size_for_size (child, orientation, -1, &child_size, NULL);
+ get_preferred_size_for_size (child, orientation, -1, &child_minimum, &child_natural);
if (use_toggle_size)
{
@@ -359,20 +362,27 @@ gtk_menu_bar_size_request (GtkWidget *widget,
gtk_menu_item_toggle_size_request (GTK_MENU_ITEM (child),
&toggle_size);
- child_size += toggle_size;
+ child_minimum += toggle_size;
+ child_natural += toggle_size;
}
if (use_maximize)
- size = MAX (size, child_size);
+ {
+ *minimum = MAX (*minimum, child_minimum);
+ *natural = MAX (*natural, child_natural);
+ }
else
- size += child_size;
+ {
+ *minimum += child_minimum;
+ *natural += child_natural;
+ }
}
}
gtk_widget_style_get (widget, "internal-padding", &ipadding, NULL);
-
border_width = gtk_container_get_border_width (GTK_CONTAINER (menu_bar));
- size += (border_width + ipadding + BORDER_SPACING) * 2;
+ *minimum += (border_width + ipadding + BORDER_SPACING) * 2;
+ *natural += (border_width + ipadding + BORDER_SPACING) * 2;
if (get_shadow_type (menu_bar) != GTK_SHADOW_NONE)
{
@@ -386,13 +396,17 @@ gtk_menu_bar_size_request (GtkWidget *widget,
NULL);
if (orientation == GTK_ORIENTATION_HORIZONTAL)
- size += border->left + border->right;
+ {
+ *minimum += border->left + border->right;
+ *natural += border->left + border->right;
+ }
else
- size += border->top + border->bottom;
+ {
+ *minimum += border->top + border->bottom;
+ *natural += border->top + border->bottom;
+ }
gtk_border_free (border);
}
-
- *minimum = *natural = size;
}
static void