]> Pileus Git - ~andy/gtk/commitdiff
GtkApplicationWindow: Fix size-request logic
authorMatthias Clasen <mclasen@redhat.com>
Sat, 14 Jan 2012 18:26:09 +0000 (13:26 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 14 Jan 2012 18:26:09 +0000 (13:26 -0500)
When finding the width for a given height, we can pass the full
height to both the menubar and the content. Instead, give the
menubar its minimum height, and give the rest to the content.

gtk/gtkapplicationwindow.c

index 777ab8dcd3f016267e8d272de2f303e3f112a748..3bf318f3bc535c7a270fd079b0da57fbefec636b 100644 (file)
@@ -603,15 +603,21 @@ gtk_application_window_real_get_preferred_width_for_height (GtkWidget *widget,
                                                             gint      *natural_width)
 {
   GtkApplicationWindow *window = GTK_APPLICATION_WINDOW (widget);
+  gint menubar_height;
+
+  if (window->priv->menubar != NULL)
+    gtk_widget_get_preferred_height (window->priv->menubar, &menubar_height, NULL);
+  else
+    menubar_height = 0;
 
   GTK_WIDGET_CLASS (gtk_application_window_parent_class)
-    ->get_preferred_width_for_height (widget, height, minimum_width, natural_width);
+    ->get_preferred_width_for_height (widget, height - menubar_height, minimum_width, natural_width);
 
   if (window->priv->menubar != NULL)
     {
       gint menubar_min_width, menubar_nat_width;
 
-      gtk_widget_get_preferred_width_for_height (window->priv->menubar, height, &menubar_min_width, &menubar_nat_width);
+      gtk_widget_get_preferred_width_for_height (window->priv->menubar, menubar_height, &menubar_min_width, &menubar_nat_width);
       *minimum_width = MAX (*minimum_width, menubar_min_width);
       *natural_width = MAX (*natural_width, menubar_nat_width);
     }