diff options
author | Benjamin Otte <otte@redhat.com> | 2012-11-02 00:28:10 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2012-11-04 15:24:17 +0100 |
commit | c8f23283370dab9bb05a495ebc41040eab692d3f (patch) | |
tree | ebd34d8d64a69608308e5409f4f9a88d4c5abd7b /gtk/gtksizegroup.c | |
parent | dbbdefe4e073b1d046c7e40d2b14d1fb2e448d59 (diff) | |
download | gtk+-c8f23283370dab9bb05a495ebc41040eab692d3f.tar.gz |
sizegroup: Add a function for clarity
... and restructure code to accomodate that function.
Diffstat (limited to 'gtk/gtksizegroup.c')
-rw-r--r-- | gtk/gtksizegroup.c | 59 |
1 files changed, 22 insertions, 37 deletions
diff --git a/gtk/gtksizegroup.c b/gtk/gtksizegroup.c index f96c5e4eba..594e90af5b 100644 --- a/gtk/gtksizegroup.c +++ b/gtk/gtksizegroup.c @@ -132,13 +132,6 @@ static void gtk_size_group_get_property (GObject *object, GValue *value, GParamSpec *pspec); -static void add_group_to_closure (GtkSizeGroup *group, - GtkSizeGroupMode mode, - GSList **widgets); -static void add_widget_to_closure (GtkWidget *widget, - GtkSizeGroupMode mode, - GSList **widgets); - /* GtkBuildable */ static void gtk_size_group_buildable_init (GtkBuildableIface *iface); static gboolean gtk_size_group_buildable_custom_tag_start (GtkBuildable *buildable, @@ -160,27 +153,11 @@ mark_widget_unvisited (GtkWidget *widget) } static void -add_group_to_closure (GtkSizeGroup *group, - GtkSizeGroupMode mode, - GSList **widgets) -{ - GtkSizeGroupPrivate *priv = group->priv; - GSList *tmp_widgets; - - for (tmp_widgets = priv->widgets; tmp_widgets; tmp_widgets = tmp_widgets->next) - { - GtkWidget *tmp_widget = tmp_widgets->data; - - add_widget_to_closure (tmp_widget, mode, widgets); - } -} - -static void add_widget_to_closure (GtkWidget *widget, GtkSizeGroupMode mode, GSList **widgets) { - GSList *tmp_groups; + GSList *tmp_groups, *tmp_widgets; gboolean hidden; if (_gtk_widget_get_sizegroup_visited (widget)) @@ -198,11 +175,26 @@ add_widget_to_closure (GtkWidget *widget, if (tmp_priv->ignore_hidden && hidden) continue; - if (tmp_priv->mode == GTK_SIZE_GROUP_BOTH || tmp_priv->mode == mode) - add_group_to_closure (tmp_group, mode, widgets); + if (tmp_priv->mode != GTK_SIZE_GROUP_BOTH && tmp_priv->mode != mode) + continue; + + for (tmp_widgets = tmp_priv->widgets; tmp_widgets; tmp_widgets = tmp_widgets->next) + add_widget_to_closure (tmp_widgets->data, mode, widgets); } } +static GSList * +widget_get_size_group_peers (GtkWidget *widget, + GtkSizeGroupMode mode) +{ + GSList *result = NULL; + + add_widget_to_closure (widget, mode, &result); + g_slist_foreach (result, (GFunc) mark_widget_unvisited, NULL); + + return result; +} + static void real_queue_resize (GtkWidget *widget, GtkQueueResizeFlags flags) @@ -257,10 +249,7 @@ queue_resize_on_widget (GtkWidget *widget, continue; } - widgets = NULL; - - add_widget_to_closure (parent, GTK_SIZE_GROUP_HORIZONTAL, &widgets); - g_slist_foreach (widgets, (GFunc)mark_widget_unvisited, NULL); + widgets = widget_get_size_group_peers (parent, GTK_SIZE_GROUP_HORIZONTAL); for (tmp_list = widgets; tmp_list; tmp_list = tmp_list->next) { @@ -279,10 +268,7 @@ queue_resize_on_widget (GtkWidget *widget, g_slist_free (widgets); - widgets = NULL; - - add_widget_to_closure (parent, GTK_SIZE_GROUP_VERTICAL, &widgets); - g_slist_foreach (widgets, (GFunc)mark_widget_unvisited, NULL); + widgets = widget_get_size_group_peers (parent, GTK_SIZE_GROUP_VERTICAL); for (tmp_list = widgets; tmp_list; tmp_list = tmp_list->next) { @@ -647,12 +633,11 @@ compute_dimension (GtkWidget *widget, gint *minimum, /* in-out */ gint *natural) /* in-out */ { - GSList *widgets = NULL; + GSList *widgets; GSList *tmp_list; gint min_result = 0, nat_result = 0; - add_widget_to_closure (widget, mode, &widgets); - g_slist_foreach (widgets, (GFunc)mark_widget_unvisited, NULL); + widgets = widget_get_size_group_peers (widget, mode); g_slist_foreach (widgets, (GFunc)g_object_ref, NULL); |