diff options
author | Benjamin Otte <otte@redhat.com> | 2011-04-30 06:34:58 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2011-05-01 04:44:56 +0200 |
commit | c52f733a2da92f8d6ce14e0102b37fbfc742d809 (patch) | |
tree | 73be6eb2238106ac324ca0bafd7ae334d235e539 /gtk/gtkmenubar.c | |
parent | 3091a90538e10425e1e405e75fb6b43baa52e571 (diff) | |
download | gtk+-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.c | 36 |
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 |