aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/test-reflow.c
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/test-reflow.c')
-rw-r--r--widgets/test-reflow.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/widgets/test-reflow.c b/widgets/test-reflow.c
index f03232c72d..067e520754 100644
--- a/widgets/test-reflow.c
+++ b/widgets/test-reflow.c
@@ -26,6 +26,7 @@
/* This is a horrible thing to do, but it is just a test. */
GnomeCanvasItem *reflow;
GnomeCanvasItem *rect;
+GtkAllocation last_alloc;
static void destroy_callback(GtkWidget *app, gpointer data)
{
@@ -35,6 +36,7 @@ static void destroy_callback(GtkWidget *app, gpointer data)
static void allocate_callback(GtkWidget *canvas, GtkAllocation *allocation, gpointer data)
{
double width;
+ last_alloc = *allocation;
gnome_canvas_item_set( reflow,
"height", (double) allocation->height,
NULL );
@@ -49,6 +51,20 @@ static void allocate_callback(GtkWidget *canvas, GtkAllocation *allocation, gpoi
NULL );
}
+static void resize(GnomeCanvasItem *item, gpointer data)
+{
+ double width;
+ gtk_object_get(GTK_OBJECT(reflow),
+ "width", &width,
+ NULL);
+ width = MAX(width, last_alloc.width);
+ gnome_canvas_set_scroll_region(item->canvas , 0, 0, width, last_alloc.height );
+ gnome_canvas_item_set( rect,
+ "x2", (double) width,
+ "y2", (double) last_alloc.height,
+ NULL );
+}
+
static void about_callback( GtkWidget *widget, gpointer data )
{
@@ -98,6 +114,9 @@ int main( int argc, char *argv[] )
"y", (double) 0,
"height", (double) 100,
NULL );
+ gtk_signal_connect( GTK_OBJECT( reflow ), "resize",
+ GTK_SIGNAL_FUNC( resize ),
+ ( gpointer ) app);
for ( i = 0; i < 200; i++ )
{
GnomeCanvasItem *item;