diff options
author | Jiří Techet <techet@gmail.com> | 2013-05-04 17:08:05 +0200 |
---|---|---|
committer | Jiří Techet <techet@gmail.com> | 2013-05-04 17:08:05 +0200 |
commit | 99beb25437346a81632cdb24d3ffaa8feedac5c5 (patch) | |
tree | a6c98057fc8c3f2b034972b6f9bc328c2d9340d4 | |
parent | 382902bb40952508ff0e97f20628b9100c7467f4 (diff) | |
download | libchamplain-99beb25437346a81632cdb24d3ffaa8feedac5c5.tar.gz |
Fix the view issues when it hasn't been realized yet
-rw-r--r-- | champlain/champlain-view.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/champlain/champlain-view.c b/champlain/champlain-view.c index 175337c..5c96eec 100644 --- a/champlain/champlain-view.c +++ b/champlain/champlain-view.c @@ -922,11 +922,12 @@ champlain_view_realized_cb (ChamplainView *view, clutter_actor_grab_key_focus (priv->kinetic_scroll); - g_object_notify (G_OBJECT (view), "zoom-level"); - g_object_notify (G_OBJECT (view), "map-source"); - resize_viewport (view); champlain_view_center_on (view, priv->latitude, priv->longitude); + + g_object_notify (G_OBJECT (view), "zoom-level"); + g_object_notify (G_OBJECT (view), "map-source"); + g_signal_emit_by_name (view, "layer-relocated", NULL); } @@ -2467,7 +2468,9 @@ view_set_zoom_level_at (ChamplainView *view, y = priv->viewport_height / 2.0; } - show_zoom_actor (view, zoom_level, x, y); + /* don't do anything when view not yet realized */ + if (CLUTTER_ACTOR_IS_REALIZED (view)) + show_zoom_actor (view, zoom_level, x, y); gdouble deltazoom = pow (2, -(gdouble)priv->zoom_level + (gdouble)zoom_level); new_x = (priv->viewport_x + x) * deltazoom - x; @@ -2475,13 +2478,16 @@ view_set_zoom_level_at (ChamplainView *view, priv->zoom_level = zoom_level; - resize_viewport (view); - remove_all_tiles (view); - position_viewport (view, new_x, new_y); - load_visible_tiles (view, FALSE); + if (CLUTTER_ACTOR_IS_REALIZED (view)) + { + resize_viewport (view); + remove_all_tiles (view); + position_viewport (view, new_x, new_y); + load_visible_tiles (view, FALSE); - if (!priv->animate_zoom) - position_zoom_actor (view); + if (!priv->animate_zoom) + position_zoom_actor (view); + } g_object_notify (G_OBJECT (view), "zoom-level"); return TRUE; |