[libchamplain] Fix the view issues when it hasn't been realized yet
- From: Jiří Techet <jiritechet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libchamplain] Fix the view issues when it hasn't been realized yet
- Date: Sat, 4 May 2013 15:09:18 +0000 (UTC)
commit 99beb25437346a81632cdb24d3ffaa8feedac5c5
Author: Jiří Techet <techet gmail com>
Date: Sat May 4 17:08:05 2013 +0200
Fix the view issues when it hasn't been realized yet
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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]