- return size_group->widgets;
-}
-
-static gint
-get_base_dimension (GtkWidget *widget,
- GtkSizeGroupMode mode)
-{
- GtkWidgetAuxInfo *aux_info = _gtk_widget_get_aux_info (widget, FALSE);
-
- if (mode == GTK_SIZE_GROUP_HORIZONTAL)
- {
- if (aux_info && aux_info->width > 0)
- return aux_info->width;
- else
- return widget->requisition.width;
- }
- else
- {
- if (aux_info && aux_info->height > 0)
- return aux_info->height;
- else
- return widget->requisition.height;
- }
-}
-
-static void
-do_size_request (GtkWidget *widget, gint width, gint height)
-{
- if (GTK_WIDGET_REQUEST_NEEDED (widget))
- {
- gtk_widget_ensure_style (widget);
- GTK_PRIVATE_UNSET_FLAG (widget, GTK_REQUEST_NEEDED);
- g_signal_emit_by_name (widget,
- "size-request",
- &widget->requisition);
- }
-
- /* Also update size groups from _gtk_size_group_bump_requisition() */
- widget->requisition.width = MAX (widget->requisition.width, width);
- widget->requisition.height = MAX (widget->requisition.height, height);
-}
-
-/* NOTE: This is only ever called for either mode horizontal or mode vertical
- * but never as both.
- */
-static gint
-compute_base_dimension (GtkWidget *widget,
- GtkSizeGroupMode mode,
- gint minimum)
-{
- if (mode == GTK_SIZE_GROUP_HORIZONTAL)
- do_size_request (widget, minimum, -1);
- else /* (mode == GTK_SIZE_GROUP_VERTICAL) */
- do_size_request (widget, -1, minimum);
-
- return get_base_dimension (widget, mode);
-}
-
-/* NOTE: This is only ever called for either mode horizontal or mode vertical
- * but never as both.
- */
-static gint
-compute_dimension (GtkWidget *widget,
- GtkSizeGroupMode mode,
- gint minimum)
-{
- GSList *widgets = NULL;
- GSList *groups = NULL;
- GSList *tmp_list;
- gint result = 0;
-
- add_widget_to_closure (widget, mode, &groups, &widgets);
-
- g_slist_foreach (widgets, (GFunc)mark_unvisited, NULL);
- g_slist_foreach (groups, (GFunc)mark_unvisited, NULL);
-
- g_slist_foreach (widgets, (GFunc)g_object_ref, NULL);
-
- if (!groups)
- {
- result = compute_base_dimension (widget, mode, minimum);
- }
- else
- {
- GtkSizeGroup *group = groups->data;
-
- if (mode == GTK_SIZE_GROUP_HORIZONTAL && group->have_width)
- result = group->requisition.width;
- else if (mode == GTK_SIZE_GROUP_VERTICAL && group->have_height)
- result = group->requisition.height;
- else
- {
- tmp_list = widgets;
- while (tmp_list)
- {
- GtkWidget *tmp_widget = tmp_list->data;
-
- gint dimension = compute_base_dimension (tmp_widget, mode, minimum);
-
- if (gtk_widget_get_mapped (tmp_widget) || !group->ignore_hidden)
- {
- if (dimension > result)
- result = dimension;
- }
-
- tmp_list = tmp_list->next;
- }
-
- tmp_list = groups;
- while (tmp_list)
- {
- GtkSizeGroup *tmp_group = tmp_list->data;
-
- if (mode == GTK_SIZE_GROUP_HORIZONTAL)
- {
- tmp_group->have_width = TRUE;
- tmp_group->requisition.width = MAX (result, minimum);
- }
- else
- {
- tmp_group->have_height = TRUE;
- tmp_group->requisition.height = MAX (result, minimum);
- }
-
- tmp_list = tmp_list->next;
- }
- }
- }
-
- g_slist_foreach (widgets, (GFunc)g_object_unref, NULL);
-
- g_slist_free (widgets);
- g_slist_free (groups);
-
- return result;
-}
-
-static gint
-get_dimension (GtkWidget *widget,
- GtkSizeGroupMode mode)
-{
- GSList *widgets = NULL;
- GSList *groups = NULL;
- gint result = 0;
-
- add_widget_to_closure (widget, mode, &groups, &widgets);
-
- g_slist_foreach (widgets, (GFunc)mark_unvisited, NULL);
- g_slist_foreach (groups, (GFunc)mark_unvisited, NULL);
-
- if (!groups)
- {
- result = get_base_dimension (widget, mode);
- }
- else
- {
- GtkSizeGroup *group = groups->data;
-
- if (mode == GTK_SIZE_GROUP_HORIZONTAL && group->have_width)
- result = group->requisition.width;
- else if (mode == GTK_SIZE_GROUP_VERTICAL && group->have_height)
- result = group->requisition.height;
- }
-
- g_slist_free (widgets);
- g_slist_free (groups);
-
- return result;
-}
-
-static void
-get_fast_child_requisition (GtkWidget *widget,
- GtkRequisition *requisition)
-{
- GtkWidgetAuxInfo *aux_info = _gtk_widget_get_aux_info (widget, FALSE);
-
- *requisition = widget->requisition;
-
- if (aux_info)
- {
- if (aux_info->width > 0)
- requisition->width = aux_info->width;
- if (aux_info && aux_info->height > 0)
- requisition->height = aux_info->height;
- }