[gtk+] GtkApplicationWindow: Fix size-allocation logic



commit 7234a2617edbf109262859a2a4edd3a325664b77
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Jan 14 13:23:02 2012 -0500

    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 files changed, 7 insertions(+), 8 deletions(-)
---
diff --git a/gtk/gtkapplicationwindow.c b/gtk/gtkapplicationwindow.c
index d8538c3..777ab8d 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);
         }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]