From 113c74f6da1af4c6e06a79cb30617f713192c8ff Mon Sep 17 00:00:00 2001 From: Rob Norris Date: Mon, 6 Sep 2010 21:14:34 +0100 Subject: [PATCH] Need to store the containing trw layer for later usage of selected track(s) or waypoint(s) operations. --- src/viktrwlayer.c | 8 ++++---- src/vikwindow.c | 17 ++++++++++++----- src/vikwindow.h | 10 ++++++---- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/viktrwlayer.c b/src/viktrwlayer.c index 2da2491a..26c100d2 100644 --- a/src/viktrwlayer.c +++ b/src/viktrwlayer.c @@ -1805,28 +1805,28 @@ gboolean vik_trw_layer_selected ( VikTrwLayer *l, gint subtype, gpointer sublaye { case VIK_TRW_LAYER_SUBLAYER_TRACKS: { - vik_window_set_selected_tracks ( (VikWindow *)VIK_GTK_WINDOW_FROM_LAYER(l), l->tracks ); + vik_window_set_selected_tracks ( (VikWindow *)VIK_GTK_WINDOW_FROM_LAYER(l), l->tracks, l ); /* Mark for redraw */ return TRUE; } break; case VIK_TRW_LAYER_SUBLAYER_TRACK: { - vik_window_set_selected_track ( (VikWindow *)VIK_GTK_WINDOW_FROM_LAYER(l), g_hash_table_lookup ( l->tracks, sublayer ) ); + vik_window_set_selected_track ( (VikWindow *)VIK_GTK_WINDOW_FROM_LAYER(l), g_hash_table_lookup ( l->tracks, sublayer ), l ); /* Mark for redraw */ return TRUE; } break; case VIK_TRW_LAYER_SUBLAYER_WAYPOINTS: { - vik_window_set_selected_waypoints ( (VikWindow *)VIK_GTK_WINDOW_FROM_LAYER(l), l->waypoints ); + vik_window_set_selected_waypoints ( (VikWindow *)VIK_GTK_WINDOW_FROM_LAYER(l), l->waypoints, l ); /* Mark for redraw */ return TRUE; } break; case VIK_TRW_LAYER_SUBLAYER_WAYPOINT: { - vik_window_set_selected_waypoint ( (VikWindow *)VIK_GTK_WINDOW_FROM_LAYER(l), g_hash_table_lookup ( l->waypoints, sublayer ) ); + vik_window_set_selected_waypoint ( (VikWindow *)VIK_GTK_WINDOW_FROM_LAYER(l), g_hash_table_lookup ( l->waypoints, sublayer ), l ); /* Mark for redraw */ return TRUE; } diff --git a/src/vikwindow.c b/src/vikwindow.c index 3a63af0d..682189ad 100644 --- a/src/vikwindow.c +++ b/src/vikwindow.c @@ -176,6 +176,8 @@ struct _VikWindow { gpointer selected_track; /* notionally VikTrack */ gpointer selected_waypoints; /* notionally GList */ gpointer selected_waypoint; /* notionally VikWaypoint */ + /* For track(s) & waypoint(s) it is the layer they are in - this helps refering to the individual item easier */ + gpointer containing_vtl; /* notionally VikTrwLayer */ }; enum { @@ -2556,7 +2558,8 @@ gpointer vik_window_get_selected_trw_layer ( VikWindow *vw ) void vik_window_set_selected_trw_layer ( VikWindow *vw, gpointer vtl ) { - vw->selected_vtl = vtl; + vw->selected_vtl = vtl; + vw->containing_vtl = vtl; /* Clear others */ vw->selected_track = NULL; vw->selected_tracks = NULL; @@ -2569,9 +2572,10 @@ gpointer vik_window_get_selected_tracks ( VikWindow *vw ) return vw->selected_tracks; } -void vik_window_set_selected_tracks ( VikWindow *vw, gpointer gl ) +void vik_window_set_selected_tracks ( VikWindow *vw, gpointer gl, gpointer vtl ) { vw->selected_tracks = gl; + vw->containing_vtl = vtl; /* Clear others */ vw->selected_vtl = NULL; vw->selected_track = NULL; @@ -2584,9 +2588,10 @@ gpointer vik_window_get_selected_track ( VikWindow *vw ) return vw->selected_track; } -void vik_window_set_selected_track ( VikWindow *vw, gpointer *vt ) +void vik_window_set_selected_track ( VikWindow *vw, gpointer *vt, gpointer vtl ) { vw->selected_track = vt; + vw->containing_vtl = vtl; /* Clear others */ vw->selected_vtl = NULL; vw->selected_tracks = NULL; @@ -2598,9 +2603,10 @@ gpointer vik_window_get_selected_waypoints ( VikWindow *vw ) return vw->selected_waypoints; } -void vik_window_set_selected_waypoints ( VikWindow *vw, gpointer gl ) +void vik_window_set_selected_waypoints ( VikWindow *vw, gpointer gl, gpointer vtl ) { vw->selected_waypoints = gl; + vw->containing_vtl = vtl; /* Clear others */ vw->selected_vtl = NULL; vw->selected_track = NULL; @@ -2613,9 +2619,10 @@ gpointer vik_window_get_selected_waypoint ( VikWindow *vw ) return vw->selected_waypoint; } -void vik_window_set_selected_waypoint ( VikWindow *vw, gpointer *vwp ) +void vik_window_set_selected_waypoint ( VikWindow *vw, gpointer *vwp, gpointer vtl ) { vw->selected_waypoint = vwp; + vw->containing_vtl = vtl; /* Clear others */ vw->selected_vtl = NULL; vw->selected_track = NULL; diff --git a/src/vikwindow.h b/src/vikwindow.h index 757dfda6..e86c9705 100644 --- a/src/vikwindow.h +++ b/src/vikwindow.h @@ -64,13 +64,15 @@ void vik_window_enable_layer_tool ( VikWindow *vw, gint layer_id, gint tool_id ) gpointer vik_window_get_selected_trw_layer ( VikWindow *vw ); /* return type VikTrwLayer */ void vik_window_set_selected_trw_layer ( VikWindow *vw, gpointer vtl ); /* input VikTrwLayer */ gpointer vik_window_get_selected_tracks ( VikWindow *vw ); /* return type GList */ -void vik_window_set_selected_tracks ( VikWindow *vw, gpointer gl ); /* input GList */ +void vik_window_set_selected_tracks ( VikWindow *vw, gpointer gl, gpointer vtl ); /* input GList, VikTrwLayer */ gpointer vik_window_get_selected_track ( VikWindow *vw ); /* return type VikTrack */ -void vik_window_set_selected_track ( VikWindow *vw, gpointer *vt ); /* input VikTrack */ +void vik_window_set_selected_track ( VikWindow *vw, gpointer *vt, gpointer vtl ); /* input VikTrack, VikTrwLayer */ gpointer vik_window_get_selected_waypoints ( VikWindow *vw ); /* return type GList */ -void vik_window_set_selected_waypoints ( VikWindow *vw, gpointer gl ); /* input GList */ +void vik_window_set_selected_waypoints ( VikWindow *vw, gpointer gl, gpointer vtl ); /* input GList, VikTrwLayer */ gpointer vik_window_get_selected_waypoint ( VikWindow *vw ); /* return type VikWaypoint */ -void vik_window_set_selected_waypoint ( VikWindow *vw, gpointer *vwp ); /* input VikWaypoint */ +void vik_window_set_selected_waypoint ( VikWindow *vw, gpointer *vwp, gpointer vtl ); /* input VikWaypoint, VikTrwLayer */ +/* Return the VikTrwLayer of the selected track(s) or waypoint(s) are in (maybe NULL) */ +gpointer vik_window_get_containing_trw_layer ( VikWindow *vw ); /* return indicates if a redraw is necessary */ gboolean vik_window_clear_highlight ( VikWindow *vw ); -- 2.39.5