From 04f36d9233f93ea0412e072214c6c49ede480709 Mon Sep 17 00:00:00 2001 From: Rob Norris Date: Fri, 16 Sep 2011 20:23:17 +0100 Subject: [PATCH] Fix SF#3408170: Selected Track Thickness is Always 1px Allow setting of the highlight line thickness. Allow track thickness to be read from the TrackWaypoint Layer. Use this value when setting the highlighted track(s). NB ATM this only gets done on setting the highlight - thus changing the track thickness properties when already highlighted, won't update the current highlight thickness. This limitation is quite minor, so overall it's acceptable for use. --- src/viktrwlayer.c | 8 ++++++++ src/viktrwlayer.h | 2 ++ src/vikviewport.c | 6 ++++++ src/vikviewport.h | 1 + src/vikwindow.c | 7 +++++++ 5 files changed, 24 insertions(+) diff --git a/src/viktrwlayer.c b/src/viktrwlayer.c index 646d4aea..e47b8b79 100644 --- a/src/viktrwlayer.c +++ b/src/viktrwlayer.c @@ -1620,6 +1620,14 @@ gboolean vik_trw_layer_sublayer_toggle_visible ( VikTrwLayer *l, gint subtype, g return TRUE; } +/* + * Return a property about tracks for this layer + */ +gint vik_trw_layer_get_property_tracks_line_thickness ( VikTrwLayer *vtl ) +{ + return vtl->line_thickness; +} + // Structure to hold multiple track information for a layer typedef struct { gdouble length; diff --git a/src/viktrwlayer.h b/src/viktrwlayer.h index 7ce4ddcf..fdc7a399 100644 --- a/src/viktrwlayer.h +++ b/src/viktrwlayer.h @@ -58,6 +58,8 @@ void vik_trw_layer_free ( VikTrwLayer *trwlayer ); VikTrwLayer *vik_trw_layer_create ( VikViewport *vp ); gboolean vik_trw_layer_properties ( VikTrwLayer *vtl, gpointer vp ); +gint vik_trw_layer_get_property_tracks_line_thickness ( VikTrwLayer *vtl ); + void vik_trw_layer_add_waypoint ( VikTrwLayer *vtl, gchar *name, VikWaypoint *wp ); void vik_trw_layer_add_track ( VikTrwLayer *vtl, gchar *name, VikTrack *t ); VikWaypoint *vik_trw_layer_get_waypoint ( VikTrwLayer *vtl, gchar *name ); diff --git a/src/vikviewport.c b/src/vikviewport.c index 15bedf6c..68584ab6 100644 --- a/src/vikviewport.c +++ b/src/vikviewport.c @@ -281,6 +281,12 @@ GdkGC *vik_viewport_get_gc_highlight ( VikViewport *vvp ) return vvp->highlight_gc; } +void vik_viewport_set_highlight_thickness ( VikViewport *vvp, gint thickness ) +{ + // Otherwise same GDK_* attributes as in vik_viewport_new_gc + gdk_gc_set_line_attributes ( vvp->highlight_gc, thickness, GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND ); +} + GdkGC *vik_viewport_new_gc ( VikViewport *vvp, const gchar *colorname, gint thickness ) { GdkGC *rv = NULL; diff --git a/src/vikviewport.h b/src/vikviewport.h index bbdf1a76..eca466fb 100644 --- a/src/vikviewport.h +++ b/src/vikviewport.h @@ -168,6 +168,7 @@ const gchar *vik_viewport_get_highlight_color ( VikViewport *vvp ); GdkColor *vik_viewport_get_highlight_gdkcolor ( VikViewport *vvp ); void vik_viewport_set_highlight_gdkcolor ( VikViewport *vvp, GdkColor * ); GdkGC* vik_viewport_get_gc_highlight ( VikViewport *vvp ); +void vik_viewport_set_highlight_thickness ( VikViewport *vvp, gint thickness ); /* Drawing primitives */ void a_viewport_clip_line ( gint *x1, gint *y1, gint *x2, gint *y2 ); /* run this before drawing a line. vik_viewport_draw_line runs it for you */ diff --git a/src/vikwindow.c b/src/vikwindow.c index e9ae89e8..2cc7feb0 100644 --- a/src/vikwindow.c +++ b/src/vikwindow.c @@ -2789,6 +2789,8 @@ void vik_window_set_selected_trw_layer ( VikWindow *vw, gpointer vtl ) 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 ) @@ -2806,6 +2808,8 @@ void vik_window_set_selected_tracks ( VikWindow *vw, gpointer gl, gpointer vtl ) 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 ) @@ -2823,7 +2827,10 @@ void vik_window_set_selected_track ( VikWindow *vw, gpointer *vt, gpointer vtl, 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; -- 2.39.5