From 7234a2617edbf109262859a2a4edd3a325664b77 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 14 Jan 2012 13:23:02 -0500 Subject: [PATCH] GtkApplicationWindow: Fix size-allocation logic The code was not properly removing the menubar height from the height given to the content, causing the statusbar to drop off the bottom of the window in some examples. --- gtk/gtkapplicationwindow.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/gtk/gtkapplicationwindow.c b/gtk/gtkapplicationwindow.c index d8538c3e8d..777ab8dcd3 100644 --- a/gtk/gtkapplicationwindow.c +++ b/gtk/gtkapplicationwindow.c @@ -626,12 +626,12 @@ gtk_application_window_real_size_allocate (GtkWidget *widget, if (window->priv->menubar != NULL) { GtkAllocation menubar_allocation = *allocation; - gint menubar_min_height, menubar_nat_height; + gint menubar_height; GtkWidget *child; - gtk_widget_get_preferred_height_for_width (window->priv->menubar, allocation->width, &menubar_min_height, &menubar_nat_height); + gtk_widget_get_preferred_height_for_width (window->priv->menubar, allocation->width, &menubar_height, NULL); - menubar_allocation.height = menubar_min_height; + menubar_allocation.height = menubar_height; gtk_widget_size_allocate (window->priv->menubar, &menubar_allocation); child = gtk_bin_get_child (GTK_BIN (window)); @@ -640,13 +640,12 @@ gtk_application_window_real_size_allocate (GtkWidget *widget, GtkAllocation child_allocation = *allocation; gint border_width; - child_allocation.height = MAX (1, child_allocation.height - menubar_min_height); - border_width = gtk_container_get_border_width (GTK_CONTAINER (window)); child_allocation.x += border_width; - child_allocation.y += border_width + menubar_min_height; - child_allocation.width -= border_width * 2; - child_allocation.height -= border_width * 2 - menubar_min_height; + child_allocation.y += border_width + menubar_height; + child_allocation.width = MAX (1, child_allocation.width - border_width * 2); + child_allocation.height = MAX (1, child_allocation.height - border_width * 2 - menubar_height); + gtk_widget_size_allocate (child, &child_allocation); }