summaryrefslogtreecommitdiff
path: root/gtk/gtkoverlay.c
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2012-02-29 12:20:25 -0500
committerCosimo Cecchi <cosimoc@gnome.org>2012-02-29 12:26:00 -0500
commit421d27c8581ce3a986c13577bbc7bcbc9821cd4f (patch)
tree22467b62ea6ce5e944bfe25a9ccf2a9d8ae084ff /gtk/gtkoverlay.c
parentc7ad56786371a06025b8460ce99d03e10999863e (diff)
downloadgtk+-421d27c8581ce3a986c13577bbc7bcbc9821cd4f.tar.gz
overlay: factor out gtk_overlay_get_main_widget_allocation
This will be used later in a subsequent commit.
Diffstat (limited to 'gtk/gtkoverlay.c')
-rw-r--r--gtk/gtkoverlay.c61
1 files changed, 36 insertions, 25 deletions
diff --git a/gtk/gtkoverlay.c b/gtk/gtkoverlay.c
index 66fc9ee90f..331d9ee600 100644
--- a/gtk/gtkoverlay.c
+++ b/gtk/gtkoverlay.c
@@ -114,6 +114,41 @@ gtk_overlay_create_child_window (GtkOverlay *overlay,
}
static void
+gtk_overlay_get_main_widget_allocation (GtkOverlay *overlay,
+ GtkAllocation *main_alloc_out)
+{
+ GtkWidget *main_widget;
+ GtkAllocation main_alloc;
+
+ main_widget = gtk_bin_get_child (GTK_BIN (overlay));
+
+ /* special-case scrolled windows */
+ if (GTK_IS_SCROLLED_WINDOW (main_widget))
+ {
+ GtkWidget *grandchild;
+ gint x, y;
+
+ grandchild = gtk_bin_get_child (GTK_BIN (main_widget));
+ res = gtk_widget_translate_coordinates (grandchild, main_widget, 0, 0, &x, &y);
+
+ main_alloc.x = x;
+ main_alloc.y = y;
+ main_alloc.width = gtk_widget_get_allocated_width (grandchild);
+ main_alloc.height = gtk_widget_get_allocated_height (grandchild);
+ }
+ else
+ {
+ main_alloc.x = 0;
+ main_alloc.y = 0;
+ main_alloc.width = gtk_widget_get_allocated_width (main_widget);
+ main_alloc.height = gtk_widget_get_allocated_height (main_widget);
+ }
+
+ if (main_alloc_out)
+ *main_alloc_out = main_alloc;
+}
+
+static void
gtk_overlay_child_allocate (GtkOverlay *overlay,
GtkOverlayChild *child)
{
@@ -247,36 +282,12 @@ gtk_overlay_get_child_position (GtkOverlay *overlay,
GtkWidget *widget,
GtkAllocation *alloc)
{
- GtkWidget *main_widget;
GtkAllocation main_alloc;
GtkRequisition req;
GtkAlign halign;
GtkTextDirection direction;
- main_widget = gtk_bin_get_child (GTK_BIN (overlay));
-
- /* special-case scrolled windows */
- if (GTK_IS_SCROLLED_WINDOW (main_widget))
- {
- GtkWidget *grandchild;
- gint x, y;
-
- grandchild = gtk_bin_get_child (GTK_BIN (main_widget));
- gtk_widget_translate_coordinates (grandchild, main_widget, 0, 0, &x, &y);
-
- main_alloc.x = x;
- main_alloc.y = y;
- main_alloc.width = gtk_widget_get_allocated_width (grandchild);
- main_alloc.height = gtk_widget_get_allocated_height (grandchild);
- }
- else
- {
- main_alloc.x = 0;
- main_alloc.y = 0;
- main_alloc.width = gtk_widget_get_allocated_width (main_widget);
- main_alloc.height = gtk_widget_get_allocated_height (main_widget);
- }
-
+ gtk_overlay_get_main_widget_allocation (overlay, &main_alloc);
gtk_widget_get_preferred_size (widget, NULL, &req);
alloc->x = main_alloc.x;