summaryrefslogtreecommitdiff
path: root/scrollarea.c
diff options
context:
space:
mode:
authorSøren Sandmann <sandmann@redhat.com>2008-06-07 22:13:29 -0400
committerSøren Sandmann <sandmann@redhat.com>2008-06-07 22:13:29 -0400
commit8b2329b89ad8730e2c5825523c1569958964d22b (patch)
tree773b573606447e8eec62ffb1c94a26c2e330e3eb /scrollarea.c
parent548310edfa010e0a457eb1734fa0dad98ba2a267 (diff)
Better resizing
Diffstat (limited to 'scrollarea.c')
-rw-r--r--scrollarea.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/scrollarea.c b/scrollarea.c
index d5514cd..2c14070 100644
--- a/scrollarea.c
+++ b/scrollarea.c
@@ -6,6 +6,7 @@
#include "backingstore.h"
+
G_DEFINE_TYPE (FooScrollArea, foo_scroll_area, GTK_TYPE_CONTAINER);
static GtkWidgetClass *parent_class;
@@ -79,6 +80,8 @@ struct FooScrollAreaPrivate
BackingStore *store;
guint32 motion_notify_time;
+
+ gboolean in_size_allocate;
};
enum
@@ -775,6 +778,8 @@ foo_scroll_area_size_allocate (GtkWidget *widget,
GdkRectangle new_viewport;
GdkRectangle old_viewport;
+ scroll_area->priv->in_size_allocate = TRUE;
+
get_viewport (scroll_area, &old_viewport);
widget->allocation = *allocation;
@@ -797,10 +802,18 @@ foo_scroll_area_size_allocate (GtkWidget *widget,
}
set_adjustment_values (scroll_area);
-
+
get_viewport (scroll_area, &new_viewport);
emit_viewport_signals (scroll_area, &new_viewport, &old_viewport);
+
+ scroll_area->priv->in_size_allocate = FALSE;
+}
+
+gboolean
+foo_scroll_area_is_resizing (FooScrollArea *area)
+{
+ return area->priv->in_size_allocate;
}
static void