summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann <sandmann@redhat.com>2008-06-07 17:58:10 -0400
committerSøren Sandmann <sandmann@redhat.com>2008-06-07 17:58:10 -0400
commit548310edfa010e0a457eb1734fa0dad98ba2a267 (patch)
tree1c7404c7720697627a98c1c1ad06e3f310f5957e
parentd28d25e4c00fe7276bef61b248de5d5dde2c34fd (diff)
Add ugly workaround for first size allocation
-rw-r--r--main.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/main.c b/main.c
index 4511490..893f567 100644
--- a/main.c
+++ b/main.c
@@ -69,13 +69,28 @@ on_main_viewport_size_changed (FooScrollArea *scroll_area,
gpointer data)
{
App *app = data;
- int nth_slide = deck_get_view_slide (app->deck, old_viewport);
- int old_location = deck_get_slide_location (app->deck, old_viewport, nth_slide);
- int new_location = deck_get_slide_location (app->deck, new_viewport, nth_slide);
int height = deck_get_height (app->deck, new_viewport);
-
- foo_scroll_area_set_size_fixed_y (scroll_area, new_viewport->width,
- height, old_location, new_location);
+ static int first = 1;
+ if (first)
+ {
+ old_viewport = NULL;
+ first = 0;
+ }
+
+ if (old_viewport)
+ {
+ int nth_slide = deck_get_view_slide (app->deck, old_viewport);
+ int old_location = deck_get_slide_location (app->deck, old_viewport, nth_slide);
+ int new_location = deck_get_slide_location (app->deck, new_viewport, nth_slide);
+ foo_scroll_area_set_size_fixed_y (scroll_area, new_viewport->width,
+ height, old_location, new_location);
+ }
+ else
+ {
+ foo_scroll_area_set_size (scroll_area, new_viewport->width, height);
+
+ foo_scroll_area_set_viewport_pos (scroll_area, 0, 0);
+ }
foo_scroll_area_invalidate (scroll_area);
}