summaryrefslogtreecommitdiff
path: root/gtk/gtksizerequest.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2012-11-02 13:40:00 +0100
committerBenjamin Otte <otte@redhat.com>2012-11-04 15:24:18 +0100
commit02bc58958362f3e4bddd19e90cfa172568fb8498 (patch)
treedb7ef76a0a97a0bf437c899ed0f99f4c9e0eafbe /gtk/gtksizerequest.c
parent1d6e896fef8937e64cf074621c4bfc72c86edb06 (diff)
downloadgtk+-02bc58958362f3e4bddd19e90cfa172568fb8498.tar.gz
sizerequest: Export _gtk_widget_compute_size_for_orientation()
and add an "ignore_size_groups" flag to it. This way we can use it for size group shenanigans.
Diffstat (limited to 'gtk/gtksizerequest.c')
-rw-r--r--gtk/gtksizerequest.c77
1 files changed, 52 insertions, 25 deletions
diff --git a/gtk/gtksizerequest.c b/gtk/gtksizerequest.c
index 289317bd65..f9a9d93c4d 100644
--- a/gtk/gtksizerequest.c
+++ b/gtk/gtksizerequest.c
@@ -331,12 +331,13 @@ get_vfunc_name (GtkSizeGroupMode orientation,
* not cached. If the for_size here is -1, then get_preferred_width()
* or get_preferred_height() will be used.
*/
-static void
-compute_size_for_orientation (GtkWidget *widget,
- GtkSizeGroupMode orientation,
- gint for_size,
- gint *minimum_size,
- gint *natural_size)
+void
+_gtk_widget_compute_size_for_orientation (GtkWidget *widget,
+ GtkSizeGroupMode orientation,
+ gboolean ignore_size_groups,
+ gint for_size,
+ gint *minimum_size,
+ gint *natural_size)
{
CachedSize *cached_size;
gboolean found_in_cache = FALSE;
@@ -472,11 +473,12 @@ compute_size_for_orientation (GtkWidget *widget,
nat_size = cached_size->natural_size;
}
- _gtk_size_group_bump_requisition (widget,
- orientation,
- for_size,
- &min_size,
- &nat_size);
+ if (!ignore_size_groups)
+ _gtk_size_group_bump_requisition (widget,
+ orientation,
+ for_size,
+ &min_size,
+ &nat_size);
if (minimum_size)
*minimum_size = min_size;
@@ -487,12 +489,13 @@ compute_size_for_orientation (GtkWidget *widget,
g_assert (min_size <= nat_size);
GTK_NOTE (SIZE_REQUEST,
- g_print ("[%p] %s\t%s: %d is minimum %d and natural: %d (hit cache: %s)\n",
+ g_print ("[%p] %s\t%s: %d is minimum %d and natural: %d (hit cache: %s, ignore size groups: %s)\n",
widget, G_OBJECT_TYPE_NAME (widget),
orientation == GTK_SIZE_GROUP_HORIZONTAL ?
"width for height" : "height for width" ,
for_size, min_size, nat_size,
- found_in_cache ? "yes" : "no"));
+ found_in_cache ? "yes" : "no",
+ ignore_size_groups ? "yes" : "no"));
}
@@ -547,8 +550,12 @@ gtk_widget_get_preferred_width (GtkWidget *widget,
g_return_if_fail (GTK_IS_WIDGET (widget));
g_return_if_fail (minimum_width != NULL || natural_width != NULL);
- compute_size_for_orientation (widget, GTK_SIZE_GROUP_HORIZONTAL,
- -1, minimum_width, natural_width);
+ _gtk_widget_compute_size_for_orientation (widget,
+ GTK_SIZE_GROUP_HORIZONTAL,
+ FALSE,
+ -1,
+ minimum_width,
+ natural_width);
}
@@ -578,8 +585,12 @@ gtk_widget_get_preferred_height (GtkWidget *widget,
g_return_if_fail (GTK_IS_WIDGET (widget));
g_return_if_fail (minimum_height != NULL || natural_height != NULL);
- compute_size_for_orientation (widget, GTK_SIZE_GROUP_VERTICAL,
- -1, minimum_height, natural_height);
+ _gtk_widget_compute_size_for_orientation (widget,
+ GTK_SIZE_GROUP_VERTICAL,
+ FALSE,
+ -1,
+ minimum_height,
+ natural_height);
}
@@ -613,11 +624,19 @@ gtk_widget_get_preferred_width_for_height (GtkWidget *widget,
g_return_if_fail (height >= 0);
if (GTK_WIDGET_GET_CLASS (widget)->get_request_mode (widget) == GTK_SIZE_REQUEST_CONSTANT_SIZE)
- compute_size_for_orientation (widget, GTK_SIZE_GROUP_HORIZONTAL,
- -1, minimum_width, natural_width);
+ _gtk_widget_compute_size_for_orientation (widget,
+ GTK_SIZE_GROUP_HORIZONTAL,
+ FALSE,
+ -1,
+ minimum_width,
+ natural_width);
else
- compute_size_for_orientation (widget, GTK_SIZE_GROUP_HORIZONTAL,
- height, minimum_width, natural_width);
+ _gtk_widget_compute_size_for_orientation (widget,
+ GTK_SIZE_GROUP_HORIZONTAL,
+ FALSE,
+ height,
+ minimum_width,
+ natural_width);
}
/**
@@ -649,11 +668,19 @@ gtk_widget_get_preferred_height_for_width (GtkWidget *widget,
g_return_if_fail (width >= 0);
if (GTK_WIDGET_GET_CLASS (widget)->get_request_mode (widget) == GTK_SIZE_REQUEST_CONSTANT_SIZE)
- compute_size_for_orientation (widget, GTK_SIZE_GROUP_VERTICAL,
- -1, minimum_height, natural_height);
+ _gtk_widget_compute_size_for_orientation (widget,
+ GTK_SIZE_GROUP_VERTICAL,
+ FALSE,
+ -1,
+ minimum_height,
+ natural_height);
else
- compute_size_for_orientation (widget, GTK_SIZE_GROUP_VERTICAL,
- width, minimum_height, natural_height);
+ _gtk_widget_compute_size_for_orientation (widget,
+ GTK_SIZE_GROUP_VERTICAL,
+ FALSE,
+ width,
+ minimum_height,
+ natural_height);
}
/**