[gtk+] sizegroup: Use _gtk_widget_compute_size_for_orientation()



commit dd6931d1ba5d0b9700c65e6b357ba824843dfb71
Author: Benjamin Otte <otte redhat com>
Date:   Sat Nov 3 18:57:50 2012 +0100

    sizegroup: Use _gtk_widget_compute_size_for_orientation()
    
    With this function now available, we can do size computation in 2
    ways:
    (1) Compute size with size groups
    (2) Compute size without size groups
    
    And have (1) use (2) instead of setting flags on widgets. This patch
    does exactly that.

 gtk/gtksizegroup.c     |   83 +++++++++++++++---------------------------------
 gtk/gtkwidget.c        |   14 --------
 gtk/gtkwidgetprivate.h |    3 --
 3 files changed, 26 insertions(+), 74 deletions(-)
---
diff --git a/gtk/gtksizegroup.c b/gtk/gtksizegroup.c
index b9e2ac3..d1295d0 100644
--- a/gtk/gtksizegroup.c
+++ b/gtk/gtksizegroup.c
@@ -627,17 +627,36 @@ gtk_size_group_get_widgets (GtkSizeGroup *size_group)
   return size_group->priv->widgets;
 }
 
-static void
-compute_dimension (GtkWidget        *widget,
-		   GtkSizeGroupMode  mode,
-                   gint              for_size,
-		   gint             *minimum, /* in-out */
-		   gint             *natural) /* in-out */
+/**
+ * _gtk_size_group_bump_requisition:
+ * @widget: a #GtkWidget
+ * @mode: either %GTK_SIZE_GROUP_HORIZONTAL or %GTK_SIZE_GROUP_VERTICAL, depending
+ *        on the dimension in which to bump the size.
+ * @for_size: Size to request minimum and natural size for
+ * @minimum: a pointer to the widget's minimum size
+ * @natural: a pointer to the widget's natural size
+ *
+ * Refreshes the sizegroup while returning the groups requested
+ * value in the dimension @mode.
+ *
+ * This function is used both to update sizegroup minimum and natural size 
+ * information and widget minimum and natural sizes in multiple passes from 
+ * the size request apis.
+ */
+void
+_gtk_size_group_bump_requisition (GtkWidget        *widget,
+				  GtkSizeGroupMode  mode,
+                                  gint              for_size,
+				  gint             *minimum,
+				  gint             *natural)
 {
   GSList *widgets;
   GSList *tmp_list;
   gint    min_result = 0, nat_result = 0;
 
+  if (!_gtk_widget_get_sizegroups (widget))
+    return;
+
   widgets = widget_get_size_group_peers (widget, mode);
 
   g_slist_foreach (widgets, (GFunc)g_object_ref, NULL);
@@ -654,20 +673,7 @@ compute_dimension (GtkWidget        *widget,
         }
       else
         {
-          if (mode == GTK_SIZE_GROUP_HORIZONTAL)
-            {
-              if (for_size < 0)
-                gtk_widget_get_preferred_width (tmp_widget, &min_dimension, &nat_dimension);
-              else
-                gtk_widget_get_preferred_width_for_height (tmp_widget, for_size, &min_dimension, &nat_dimension);
-            }
-          else
-            {
-              if (for_size < 0)
-                gtk_widget_get_preferred_height (tmp_widget, &min_dimension, &nat_dimension);
-              else
-                gtk_widget_get_preferred_height_for_width (tmp_widget, for_size, &min_dimension, &nat_dimension);
-            }
+          _gtk_widget_compute_size_for_orientation (tmp_widget, mode, TRUE, for_size, &min_dimension, &nat_dimension);
         }
 
       min_result = MAX (min_result, min_dimension);
@@ -683,43 +689,6 @@ compute_dimension (GtkWidget        *widget,
 }
 
 /**
- * _gtk_size_group_bump_requisition:
- * @widget: a #GtkWidget
- * @mode: either %GTK_SIZE_GROUP_HORIZONTAL or %GTK_SIZE_GROUP_VERTICAL, depending
- *        on the dimension in which to bump the size.
- * @for_size: Size to request minimum and natural size for
- * @minimum: a pointer to the widget's minimum size
- * @natural: a pointer to the widget's natural size
- *
- * Refreshes the sizegroup while returning the groups requested
- * value in the dimension @mode.
- *
- * This function is used both to update sizegroup minimum and natural size 
- * information and widget minimum and natural sizes in multiple passes from 
- * the size request apis.
- */
-void
-_gtk_size_group_bump_requisition (GtkWidget        *widget,
-				  GtkSizeGroupMode  mode,
-                                  gint              for_size,
-				  gint             *minimum,
-				  gint             *natural)
-{
-  if (!_gtk_widget_get_sizegroup_bumping (widget))
-    {
-      /* Avoid recursion here */
-      _gtk_widget_set_sizegroup_bumping (widget, TRUE);
-
-      if (_gtk_widget_get_sizegroups (widget))
-	compute_dimension (widget, mode, for_size, minimum, natural);
-
-      _gtk_widget_set_sizegroup_bumping (widget, FALSE);
-    }
-}
-
-
-
-/**
  * _gtk_size_group_queue_resize:
  * @widget: a #GtkWidget
  * 
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 2f4dc08..73b8da3 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -357,7 +357,6 @@ struct _GtkWidgetPrivate
 
   /* SizeGroup related flags */
   guint sizegroup_visited     : 1;
-  guint sizegroup_bumping     : 1;
   guint have_size_groups      : 1;
 
   /* The widget's name. If the widget does not have a name
@@ -13831,19 +13830,6 @@ _gtk_widget_set_sizegroup_visited (GtkWidget    *widget,
   widget->priv->sizegroup_visited = visited;
 }
 
-gboolean
-_gtk_widget_get_sizegroup_bumping (GtkWidget    *widget)
-{
-  return widget->priv->sizegroup_bumping;
-}
-
-void
-_gtk_widget_set_sizegroup_bumping (GtkWidget    *widget,
-				   gboolean      bumping)
-{
-  widget->priv->sizegroup_bumping = bumping;
-}
-
 void
 _gtk_widget_add_sizegroup (GtkWidget    *widget,
 			   gpointer      group)
diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h
index a568ed0..4ee04e3 100644
--- a/gtk/gtkwidgetprivate.h
+++ b/gtk/gtkwidgetprivate.h
@@ -90,9 +90,6 @@ void         _gtk_widget_set_height_request_needed (GtkWidget *widget,
 gboolean     _gtk_widget_get_sizegroup_visited (GtkWidget    *widget);
 void         _gtk_widget_set_sizegroup_visited (GtkWidget    *widget,
 						gboolean      visited);
-gboolean     _gtk_widget_get_sizegroup_bumping (GtkWidget    *widget);
-void         _gtk_widget_set_sizegroup_bumping (GtkWidget    *widget,
-						gboolean      bumping);
 void         _gtk_widget_add_sizegroup         (GtkWidget    *widget,
 						gpointer      group);
 void         _gtk_widget_remove_sizegroup      (GtkWidget    *widget,



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