]> Pileus Git - ~andy/gtk/commitdiff
menubar: compute in advance wether to add toggle size
authorBenjamin Otte <otte@redhat.com>
Sat, 30 Apr 2011 04:16:18 +0000 (06:16 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 1 May 2011 02:44:56 +0000 (04:44 +0200)
gtk/gtkmenubar.c

index e42cd9b6af0a8a39e45c631cbf1531154778b0a6..b456cf418ec44de43abb5669ba89400ceca39887 100644 (file)
@@ -305,6 +305,7 @@ gtk_menu_bar_size_request (GtkWidget      *widget,
   GtkRequisition requisition;
   gint ipadding;
   guint border_width;
+  gboolean use_toggle_size;
 
   requisition.width = 0;
   requisition.height = 0;
@@ -315,6 +316,12 @@ gtk_menu_bar_size_request (GtkWidget      *widget,
 
   children = menu_shell->priv->children;
 
+  if (priv->child_pack_direction == GTK_PACK_DIRECTION_LTR ||
+      priv->child_pack_direction == GTK_PACK_DIRECTION_RTL)
+    use_toggle_size = (orientation == GTK_ORIENTATION_HORIZONTAL);
+  else
+    use_toggle_size = (orientation == GTK_ORIENTATION_VERTICAL);
+
   while (children)
     {
       child = children->data;
@@ -322,17 +329,18 @@ gtk_menu_bar_size_request (GtkWidget      *widget,
 
       if (gtk_widget_get_visible (child))
         {
-          gint toggle_size;
-
           gtk_widget_get_preferred_size (child, &child_requisition, NULL);
-          gtk_menu_item_toggle_size_request (GTK_MENU_ITEM (child),
-                                             &toggle_size);
 
-          if (priv->child_pack_direction == GTK_PACK_DIRECTION_LTR ||
-              priv->child_pack_direction == GTK_PACK_DIRECTION_RTL)
-            child_requisition.width += toggle_size;
-          else
-            child_requisition.height += toggle_size;
+          if (use_toggle_size)
+            {
+              gint toggle_size;
+
+              gtk_menu_item_toggle_size_request (GTK_MENU_ITEM (child),
+                                                 &toggle_size);
+
+              child_requisition.width += toggle_size;
+              child_requisition.height += toggle_size;
+            }
 
           if (priv->pack_direction == GTK_PACK_DIRECTION_LTR ||
               priv->pack_direction == GTK_PACK_DIRECTION_RTL)