+gpointer vik_window_get_selected_trw_layer ( VikWindow *vw )
+{
+ return vw->selected_vtl;
+}
+
+void vik_window_set_selected_trw_layer ( VikWindow *vw, gpointer vtl )
+{
+ vw->selected_vtl = vtl;
+ vw->containing_vtl = vtl;
+ /* Clear others */
+ vw->selected_track = NULL;
+ vw->selected_tracks = NULL;
+ vw->selected_waypoint = NULL;
+ vw->selected_waypoints = NULL;
+ vw->selected_name = NULL;
+ // Set highlight thickness
+ vik_viewport_set_highlight_thickness ( vw->viking_vvp, vik_trw_layer_get_property_tracks_line_thickness (vw->containing_vtl) );
+}
+
+gpointer vik_window_get_selected_tracks ( VikWindow *vw )
+{
+ return vw->selected_tracks;
+}
+
+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;
+ vw->selected_waypoint = NULL;
+ vw->selected_waypoints = NULL;
+ vw->selected_name = NULL;
+ // Set highlight thickness
+ vik_viewport_set_highlight_thickness ( vw->viking_vvp, vik_trw_layer_get_property_tracks_line_thickness (vw->containing_vtl) );
+}
+
+gpointer vik_window_get_selected_track ( VikWindow *vw )
+{
+ return vw->selected_track;
+}
+
+void vik_window_set_selected_track ( VikWindow *vw, gpointer *vt, gpointer vtl, gpointer name )
+{
+ vw->selected_track = vt;
+ vw->containing_vtl = vtl;
+ vw->selected_name = name;
+ /* Clear others */
+ vw->selected_vtl = NULL;
+ vw->selected_tracks = NULL;
+ vw->selected_waypoint = NULL;
+ vw->selected_waypoints = NULL;
+ // Set highlight thickness
+ vik_viewport_set_highlight_thickness ( vw->viking_vvp, vik_trw_layer_get_property_tracks_line_thickness (vw->containing_vtl) );
+}
+
+gpointer vik_window_get_selected_waypoints ( VikWindow *vw )
+{
+ return vw->selected_waypoints;
+}
+
+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;
+ vw->selected_tracks = NULL;
+ vw->selected_waypoint = NULL;
+ vw->selected_name = NULL;
+}
+
+gpointer vik_window_get_selected_waypoint ( VikWindow *vw )
+{
+ return vw->selected_waypoint;
+}
+
+void vik_window_set_selected_waypoint ( VikWindow *vw, gpointer *vwp, gpointer vtl, gpointer name )
+{
+ vw->selected_waypoint = vwp;
+ vw->containing_vtl = vtl;
+ vw->selected_name = name;
+ /* Clear others */
+ vw->selected_vtl = NULL;
+ vw->selected_track = NULL;
+ vw->selected_tracks = NULL;
+ vw->selected_waypoints = NULL;
+}
+
+gpointer vik_window_get_selected_name ( VikWindow *vw )
+{
+ return vw->selected_name;
+}
+
+gboolean vik_window_clear_highlight ( VikWindow *vw )
+{
+ gboolean need_redraw = FALSE;
+ if ( vw->selected_vtl != NULL ) {
+ vw->selected_vtl = NULL;
+ need_redraw = TRUE;
+ }
+ if ( vw->selected_track != NULL ) {
+ vw->selected_track = NULL;
+ need_redraw = TRUE;
+ }
+ if ( vw->selected_tracks != NULL ) {
+ vw->selected_tracks = NULL;
+ need_redraw = TRUE;
+ }
+ if ( vw->selected_waypoint != NULL ) {
+ vw->selected_waypoint = NULL;
+ need_redraw = TRUE;
+ }
+ if ( vw->selected_waypoints != NULL ) {
+ vw->selected_waypoints = NULL;
+ need_redraw = TRUE;
+ }
+ return need_redraw;
+}