summaryrefslogtreecommitdiff
path: root/gtk/gtksizegroup.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2012-11-02 00:18:11 +0100
committerBenjamin Otte <otte@redhat.com>2012-11-04 15:24:17 +0100
commitdbbdefe4e073b1d046c7e40d2b14d1fb2e448d59 (patch)
treee78bd2672c969e55e430f7b3a07ad83c33386af5 /gtk/gtksizegroup.c
parentdfea266e1f4461192442f3a9c11c203197c8eb6f (diff)
downloadgtk+-dbbdefe4e073b1d046c7e40d2b14d1fb2e448d59.tar.gz
sizegroup: Don't keep groups around everywhere
The code is only interested in the actual widgets that belong together, not in the groups. So just don't return the groups.
Diffstat (limited to 'gtk/gtksizegroup.c')
-rw-r--r--gtk/gtksizegroup.c38
1 files changed, 5 insertions, 33 deletions
diff --git a/gtk/gtksizegroup.c b/gtk/gtksizegroup.c
index 13d0c79d5e..f96c5e4eba 100644
--- a/gtk/gtksizegroup.c
+++ b/gtk/gtksizegroup.c
@@ -115,7 +115,6 @@ struct _GtkSizeGroupPrivate
guint8 mode;
guint ignore_hidden : 1;
- guint visited : 1;
};
enum {
@@ -135,11 +134,9 @@ static void gtk_size_group_get_property (GObject *object,
static void add_group_to_closure (GtkSizeGroup *group,
GtkSizeGroupMode mode,
- GSList **groups,
GSList **widgets);
static void add_widget_to_closure (GtkWidget *widget,
GtkSizeGroupMode mode,
- GSList **groups,
GSList **widgets);
/* GtkBuildable */
@@ -157,12 +154,6 @@ static void gtk_size_group_buildable_custom_finished (GtkBuildable *buildable,
gpointer user_data);
static void
-mark_group_unvisited (GtkSizeGroup *group)
-{
- group->priv->visited = FALSE;
-}
-
-static void
mark_widget_unvisited (GtkWidget *widget)
{
_gtk_widget_set_sizegroup_visited (widget, FALSE);
@@ -171,30 +162,22 @@ mark_widget_unvisited (GtkWidget *widget)
static void
add_group_to_closure (GtkSizeGroup *group,
GtkSizeGroupMode mode,
- GSList **groups,
GSList **widgets)
{
GtkSizeGroupPrivate *priv = group->priv;
GSList *tmp_widgets;
- if (priv->visited)
- return;
-
- *groups = g_slist_prepend (*groups, group);
- priv->visited = TRUE;
-
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, groups, widgets);
+ add_widget_to_closure (tmp_widget, mode, widgets);
}
}
static void
add_widget_to_closure (GtkWidget *widget,
GtkSizeGroupMode mode,
- GSList **groups,
GSList **widgets)
{
GSList *tmp_groups;
@@ -216,7 +199,7 @@ add_widget_to_closure (GtkWidget *widget,
continue;
if (tmp_priv->mode == GTK_SIZE_GROUP_BOTH || tmp_priv->mode == mode)
- add_group_to_closure (tmp_group, mode, groups, widgets);
+ add_group_to_closure (tmp_group, mode, widgets);
}
}
@@ -255,7 +238,6 @@ queue_resize_on_widget (GtkWidget *widget,
while (parent)
{
GSList *widget_groups;
- GSList *groups;
GSList *widgets;
if (widget == parent && !check_siblings)
@@ -275,12 +257,10 @@ queue_resize_on_widget (GtkWidget *widget,
continue;
}
- groups = NULL;
widgets = NULL;
- add_widget_to_closure (parent, GTK_SIZE_GROUP_HORIZONTAL, &groups, &widgets);
+ add_widget_to_closure (parent, GTK_SIZE_GROUP_HORIZONTAL, &widgets);
g_slist_foreach (widgets, (GFunc)mark_widget_unvisited, NULL);
- g_slist_foreach (groups, (GFunc)mark_group_unvisited, NULL);
for (tmp_list = widgets; tmp_list; tmp_list = tmp_list->next)
{
@@ -298,14 +278,11 @@ queue_resize_on_widget (GtkWidget *widget,
}
g_slist_free (widgets);
- g_slist_free (groups);
- groups = NULL;
widgets = NULL;
- add_widget_to_closure (parent, GTK_SIZE_GROUP_VERTICAL, &groups, &widgets);
+ add_widget_to_closure (parent, GTK_SIZE_GROUP_VERTICAL, &widgets);
g_slist_foreach (widgets, (GFunc)mark_widget_unvisited, NULL);
- g_slist_foreach (groups, (GFunc)mark_group_unvisited, NULL);
for (tmp_list = widgets; tmp_list; tmp_list = tmp_list->next)
{
@@ -323,7 +300,6 @@ queue_resize_on_widget (GtkWidget *widget,
}
g_slist_free (widgets);
- g_slist_free (groups);
parent = gtk_widget_get_parent (parent);
}
@@ -388,7 +364,6 @@ gtk_size_group_init (GtkSizeGroup *size_group)
priv->widgets = NULL;
priv->mode = GTK_SIZE_GROUP_HORIZONTAL;
priv->ignore_hidden = FALSE;
- priv->visited = FALSE;
}
static void
@@ -673,13 +648,11 @@ compute_dimension (GtkWidget *widget,
gint *natural) /* in-out */
{
GSList *widgets = NULL;
- GSList *groups = NULL;
GSList *tmp_list;
gint min_result = 0, nat_result = 0;
- add_widget_to_closure (widget, mode, &groups, &widgets);
+ add_widget_to_closure (widget, mode, &widgets);
g_slist_foreach (widgets, (GFunc)mark_widget_unvisited, NULL);
- g_slist_foreach (groups, (GFunc)mark_group_unvisited, NULL);
g_slist_foreach (widgets, (GFunc)g_object_ref, NULL);
@@ -708,7 +681,6 @@ compute_dimension (GtkWidget *widget,
g_slist_foreach (widgets, (GFunc)g_object_unref, NULL);
g_slist_free (widgets);
- g_slist_free (groups);
*minimum = min_result;
*natural = nat_result;