]> Pileus Git - ~andy/gtk/commitdiff
window: Remove overeagerness with new size guessing
authorBenjamin Otte <otte@redhat.com>
Sun, 1 May 2011 05:19:55 +0000 (07:19 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 1 May 2011 06:02:15 +0000 (08:02 +0200)
Don't use the guessed size when we are interested in the minimum size.
So now we can really shrink menubars.

This reverts parts of 08b2ac1d90b4f3dfa76d6a76fa04ca28c6b7ba12

gtk/gtkwindow.c

index 5b9be4ebf05c723ce78059176e96284edbbe2a59..18ac3a222409e462a1011dbb78ddf6bac1295d65 100644 (file)
@@ -7176,13 +7176,16 @@ gtk_window_compute_hints (GtkWindow   *window,
                          guint       *new_flags)
 {
   GtkWindowPrivate *priv = window->priv;
+  GtkWidget *widget;
   gint extra_width = 0;
   gint extra_height = 0;
   GtkWindowGeometryInfo *geometry_info;
-  int width, height;
+  GtkRequisition requisition;
+
+  widget = GTK_WIDGET (window);
 
-  gtk_window_guess_default_size (window, &width, &height);
-  geometry_info = gtk_window_get_geometry_info (window, FALSE);
+  gtk_widget_get_preferred_size (widget, &requisition, NULL);
+  geometry_info = gtk_window_get_geometry_info (GTK_WINDOW (widget), FALSE);
 
   if (geometry_info)
     {
@@ -7224,7 +7227,7 @@ gtk_window_compute_hints (GtkWindow   *window,
       _gtk_widget_override_size_request (geometry_info->widget,
                                         TEMPORARY_SIZE, TEMPORARY_SIZE,
                                         &current_width, &current_height);
-      gtk_widget_get_preferred_size (GTK_WIDGET (window),
+      gtk_widget_get_preferred_size (widget,
                                      &requisition, NULL);
       _gtk_widget_restore_size_request (geometry_info->widget,
                                        current_width, current_height);
@@ -7279,32 +7282,32 @@ gtk_window_compute_hints (GtkWindow   *window,
   if (*new_flags & GDK_HINT_MIN_SIZE)
     {
       if (new_geometry->min_width < 0)
-       new_geometry->min_width = width;
+       new_geometry->min_width = requisition.width;
       else
-        new_geometry->min_width = MAX (width, new_geometry->min_width + extra_width);
+        new_geometry->min_width = MAX (requisition.width, new_geometry->min_width + extra_width);
 
       if (new_geometry->min_height < 0)
-       new_geometry->min_height = height;
+       new_geometry->min_height = requisition.height;
       else
-       new_geometry->min_height = MAX (height, new_geometry->min_height + extra_height);
+       new_geometry->min_height = MAX (requisition.height, new_geometry->min_height + extra_height);
     }
   else
     {
       *new_flags |= GDK_HINT_MIN_SIZE;
       
-      new_geometry->min_width = width;
-      new_geometry->min_height = height;
+      new_geometry->min_width = requisition.width;
+      new_geometry->min_height = requisition.height;
     }
   
   if (*new_flags & GDK_HINT_MAX_SIZE)
     {
       if (new_geometry->max_width < 0)
-       new_geometry->max_width = width;
+       new_geometry->max_width = requisition.width;
       else
        new_geometry->max_width += extra_width;
 
       if (new_geometry->max_height < 0)
-       new_geometry->max_height = height;
+       new_geometry->max_height = requisition.height;
       else
        new_geometry->max_height += extra_height;
     }
@@ -7312,8 +7315,8 @@ gtk_window_compute_hints (GtkWindow   *window,
     {
       *new_flags |= GDK_HINT_MAX_SIZE;
       
-      new_geometry->max_width = width;
-      new_geometry->max_height = height;
+      new_geometry->max_width = requisition.width;
+      new_geometry->max_height = requisition.height;
     }
 
   *new_flags |= GDK_HINT_WIN_GRAVITY;