X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/ba9d0a00bb9c614423562381e6edca2a33d28b54..539ba03824a31edbe738121113793cb69b611f34:/src/viktrwlayer.c diff --git a/src/viktrwlayer.c b/src/viktrwlayer.c index 58ae3e2f..9bafdaca 100644 --- a/src/viktrwlayer.c +++ b/src/viktrwlayer.c @@ -3127,7 +3127,7 @@ static void trw_layer_split_by_timestamp ( gpointer pass_along[6] ) } if (ts - prev_ts > thr*60) { /* flush accumulated trackpoints into new list */ - newlists = g_list_prepend(newlists, g_list_reverse(newtps)); + newlists = g_list_append(newlists, g_list_reverse(newtps)); newtps = NULL; } @@ -3137,30 +3137,33 @@ static void trw_layer_split_by_timestamp ( gpointer pass_along[6] ) iter = g_list_next(iter); } if (newtps) { - newlists = g_list_prepend(newlists, g_list_reverse(newtps)); + newlists = g_list_append(newlists, g_list_reverse(newtps)); } /* put lists of trackpoints into tracks */ iter = newlists; i = 1; - while (iter) { - gchar *new_tr_name; - VikTrack *tr; + // Only bother updating if the split results in new tracks + if (g_list_length (newlists) > 1) { + while (iter) { + gchar *new_tr_name; + VikTrack *tr; - tr = vik_track_new(); - tr->visible = track->visible; - tr->trackpoints = (GList *)(iter->data); + tr = vik_track_new(); + tr->visible = track->visible; + tr->trackpoints = (GList *)(iter->data); - new_tr_name = g_strdup_printf("%s #%d", (gchar *) pass_along[3], i++); - vik_trw_layer_add_track(VIK_TRW_LAYER(pass_along[0]), new_tr_name, tr); - /* g_print("adding track %s, times %d - %d\n", new_tr_name, VIK_TRACKPOINT(tr->trackpoints->data)->timestamp, + new_tr_name = g_strdup_printf("%s #%d", (gchar *) pass_along[3], i++); + vik_trw_layer_add_track(VIK_TRW_LAYER(pass_along[0]), new_tr_name, tr); + /* g_print("adding track %s, times %d - %d\n", new_tr_name, VIK_TRACKPOINT(tr->trackpoints->data)->timestamp, VIK_TRACKPOINT(g_list_last(tr->trackpoints)->data)->timestamp);*/ - iter = g_list_next(iter); + iter = g_list_next(iter); + } + vik_trw_layer_delete_track(VIK_TRW_LAYER(pass_along[0]), (gchar *)pass_along[3]); + vik_layer_emit_update(VIK_LAYER(pass_along[0])); } g_list_free(newlists); - vik_trw_layer_delete_track(VIK_TRW_LAYER(pass_along[0]), (gchar *)pass_along[3]); - vik_layer_emit_update(VIK_LAYER(pass_along[0])); } /** @@ -3496,6 +3499,19 @@ gboolean vik_trw_layer_sublayer_add_menu_items ( VikTrwLayer *l, GtkMenu *menu, gtk_widget_show ( item ); } + if ( subtype == VIK_TRW_LAYER_SUBLAYER_WAYPOINTS ) + { + item = gtk_menu_item_new_with_mnemonic ( _("_View All Waypoints") ); + g_signal_connect_swapped ( G_OBJECT(item), "activate", G_CALLBACK(trw_layer_auto_waypoints_view), pass_along ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show ( item ); + + item = gtk_menu_item_new_with_mnemonic ( _("Goto _Waypoint...") ); + g_signal_connect_swapped ( G_OBJECT(item), "activate", G_CALLBACK(trw_layer_goto_wp), pass_along ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show ( item ); + } + if ( subtype == VIK_TRW_LAYER_SUBLAYER_TRACK ) { GtkWidget *goto_submenu;