]> git.street.me.uk Git - andy/viking.git/commitdiff
Fix gps layer not showing items after file load.
authorRob Norris <rw_norris@hotmail.com>
Sun, 12 Mar 2017 23:02:18 +0000 (23:02 +0000)
committerRob Norris <rw_norris@hotmail.com>
Mon, 13 Mar 2017 23:41:21 +0000 (23:41 +0000)
Need to ensure the bounds of tracks/routes and waypoints are calculated,
so that they are shown.

src/vikgpslayer.c
src/viktrwlayer.c
src/viktrwlayer.h

index b5091413aabefc0532c7705e47804d5e1e492650..951a0148c5392a329e23c037bbbe080abb0e8c8c 100644 (file)
@@ -32,6 +32,7 @@
 #include "viking.h"
 #include "icons/icons.h"
 #include "babel.h"
+#include "viktrwlayer.h"
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
@@ -52,6 +53,7 @@ static void vik_gps_layer_realize ( VikGpsLayer *vgl, VikTreeview *vt, GtkTreeIt
 static void vik_gps_layer_free ( VikGpsLayer *vgl );
 static void vik_gps_layer_draw ( VikGpsLayer *vgl, VikViewport *vp );
 static VikGpsLayer *vik_gps_layer_new ( VikViewport *vp );
+static void vik_gps_layer_post_read ( VikGpsLayer *vgl, VikViewport *vp, gboolean from_file );
 
 static void gps_layer_marshall( VikGpsLayer *vgl, guint8 **data, gint *len );
 static VikGpsLayer *gps_layer_unmarshall( guint8 *data, gint len, VikViewport *vvp );
@@ -266,7 +268,7 @@ VikLayerInterface vik_gps_layer_interface = {
 
   (VikLayerFuncCreate)                  vik_gps_layer_create,
   (VikLayerFuncRealize)                 vik_gps_layer_realize,
-  (VikLayerFuncPostRead)                NULL,
+  (VikLayerFuncPostRead)                vik_gps_layer_post_read,
   (VikLayerFuncFree)                    vik_gps_layer_free,
 
   (VikLayerFuncProperties)              NULL,
@@ -727,6 +729,14 @@ VikGpsLayer *vik_gps_layer_new (VikViewport *vp)
   return vgl;
 }
 
+static void vik_gps_layer_post_read ( VikGpsLayer *vgl, VikViewport *vvp, gboolean from_file )
+{
+  for (guint i = 0; i < NUM_TRW; i++) {
+    trw_layer_calculate_bounds_waypoints ( vgl->trw_children[i] );
+    trw_layer_calculate_bounds_tracks ( vgl->trw_children[i] );
+  }
+}
+
 static void vik_gps_layer_draw ( VikGpsLayer *vgl, VikViewport *vp )
 {
   gint i;
index a4b230981ab093edbfb47b7fbe86f87e6bbc105a..9a7029df77d85aca2327b81d7e8a1750b95e6af0 100644 (file)
@@ -10728,7 +10728,7 @@ static void trw_layer_calculate_bounds_track ( gpointer id, VikTrack *trk )
   vik_track_calculate_bounds ( trk );
 }
 
-static void trw_layer_calculate_bounds_tracks ( VikTrwLayer *vtl )
+void trw_layer_calculate_bounds_tracks ( VikTrwLayer *vtl )
 {
   g_hash_table_foreach ( vtl->tracks, (GHFunc) trw_layer_calculate_bounds_track, NULL );
   g_hash_table_foreach ( vtl->routes, (GHFunc) trw_layer_calculate_bounds_track, NULL );
index 6be6d66555261bdebe2189ce5f3e33db3d9ff007..05c5a9d17dcb26acadc2121ce754ce2a253eda22 100644 (file)
@@ -145,6 +145,7 @@ gchar *trw_layer_new_unique_sublayer_name ( VikTrwLayer *vtl, gint sublayer_type
 void trw_layer_waypoint_rename ( VikTrwLayer *vtl, VikWaypoint *wp, const gchar *new_name );
 void trw_layer_waypoint_reset_icon ( VikTrwLayer *vtl, VikWaypoint *wp );
 void trw_layer_calculate_bounds_waypoints ( VikTrwLayer *vtl );
+void trw_layer_calculate_bounds_tracks ( VikTrwLayer *vtl );
 
 gboolean vik_trw_layer_get_tracks_visibility ( VikTrwLayer *vtl );
 gboolean vik_trw_layer_get_routes_visibility ( VikTrwLayer *vtl );