[libchamplain] Fix the view issues when it hasn't been realized yet



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]