From 90611609bb167a50236f8685a84a542ee5809ab3 Mon Sep 17 00:00:00 2001 From: Rob Norris Date: Sun, 24 Mar 2013 17:25:23 +0000 Subject: [PATCH] SF#3608417: Add Preference option to control the display of the track creation distance tooltip. Since the distance is also shown in the statusbar, one may consider the tooltip to get in the way. Thus you can now turn it off. --- src/globals.c | 9 +++++++++ src/globals.h | 2 ++ src/viktrwlayer.c | 42 +++++++++++++++++++++++------------------- 3 files changed, 34 insertions(+), 19 deletions(-) diff --git a/src/globals.c b/src/globals.c index e5d61479..e7dc2f6d 100644 --- a/src/globals.c +++ b/src/globals.c @@ -95,6 +95,7 @@ static VikLayerParam io_prefs_external_gpx[] = { static VikLayerParam prefs_advanced[] = { { VIK_LAYER_NUM_TYPES, VIKING_PREFERENCES_ADVANCED_NAMESPACE "save_file_reference_mode", VIK_LAYER_PARAM_UINT, VIK_LAYER_GROUP_NONE, N_("Save File Reference Mode:"), VIK_LAYER_WIDGET_COMBOBOX, params_vik_fileref, NULL, N_("When saving a Viking .vik file, this determines how the directory paths of filenames are written."), NULL }, + { VIK_LAYER_NUM_TYPES, VIKING_PREFERENCES_ADVANCED_NAMESPACE "create_track_tooltip", VIK_LAYER_PARAM_BOOLEAN, VIK_LAYER_GROUP_NONE, N_("Show Tooltip during Track Creation:"), VIK_LAYER_WIDGET_CHECKBUTTON, NULL, NULL, NULL, NULL }, }; /* End of Options static stuff */ @@ -155,6 +156,9 @@ void a_vik_preferences_init () tmp.u = VIK_FILE_REF_FORMAT_ABSOLUTE; a_preferences_register(&prefs_advanced[0], tmp, VIKING_PREFERENCES_ADVANCED_GROUP_KEY); + + tmp.b = TRUE; + a_preferences_register(&prefs_advanced[1], tmp, VIKING_PREFERENCES_ADVANCED_GROUP_KEY); } vik_degree_format_t a_vik_get_degree_format ( ) @@ -252,3 +256,8 @@ vik_file_ref_format_t a_vik_get_file_ref_format ( ) format = a_preferences_get(VIKING_PREFERENCES_ADVANCED_NAMESPACE "save_file_reference_mode")->u; return format; } + +gboolean a_vik_get_create_track_tooltip ( ) +{ + return a_preferences_get(VIKING_PREFERENCES_ADVANCED_NAMESPACE "create_track_tooltip")->b; +} diff --git a/src/globals.h b/src/globals.h index 155c682a..ea094e3d 100644 --- a/src/globals.h +++ b/src/globals.h @@ -165,6 +165,8 @@ typedef enum { vik_file_ref_format_t a_vik_get_file_ref_format ( ); +gboolean a_vik_get_create_track_tooltip ( ); + /* Group for global preferences */ #define VIKING_PREFERENCES_GROUP_KEY "viking.globals" #define VIKING_PREFERENCES_NAMESPACE "viking.globals." diff --git a/src/viktrwlayer.c b/src/viktrwlayer.c index 3296fd71..98b961dd 100644 --- a/src/viktrwlayer.c +++ b/src/viktrwlayer.c @@ -7878,28 +7878,34 @@ static VikLayerToolFuncStatus tool_new_track_move ( VikTrwLayer *vtl, GdkEventMo elev_loss += last_tpt->altitude - elev_new; } } - - gchar *str = distance_string (distance); - PangoLayout *pl = gtk_widget_create_pango_layout (GTK_WIDGET(vvp), NULL); - pango_layout_set_font_description (pl, gtk_widget_get_style(GTK_WIDGET(vvp))->font_desc); + // + // Display of the distance 'tooltip' during track creation is controlled by a preference + // + if ( a_vik_get_create_track_tooltip() ) { + + gchar *str = distance_string (distance); - pango_layout_set_text (pl, str, -1); - gint wd, hd; - pango_layout_get_pixel_size ( pl, &wd, &hd ); + PangoLayout *pl = gtk_widget_create_pango_layout (GTK_WIDGET(vvp), NULL); + pango_layout_set_font_description (pl, gtk_widget_get_style(GTK_WIDGET(vvp))->font_desc); + pango_layout_set_text (pl, str, -1); + gint wd, hd; + pango_layout_get_pixel_size ( pl, &wd, &hd ); - gint xd,yd; - // offset from cursor a bit depending on font size - xd = event->x + 10; - yd = event->y - hd; + gint xd,yd; + // offset from cursor a bit depending on font size + xd = event->x + 10; + yd = event->y - hd; - // Create a background block to make the text easier to read over the background map - GdkGC *background_block_gc = vik_viewport_new_gc ( vvp, "#cccccc", 1); - gdk_draw_rectangle (pixmap, background_block_gc, TRUE, xd-2, yd-2, wd+4, hd+2); - gdk_draw_layout (pixmap, vtl->current_track_newpoint_gc, xd, yd, pl); + // Create a background block to make the text easier to read over the background map + GdkGC *background_block_gc = vik_viewport_new_gc ( vvp, "#cccccc", 1); + gdk_draw_rectangle (pixmap, background_block_gc, TRUE, xd-2, yd-2, wd+4, hd+2); + gdk_draw_layout (pixmap, vtl->current_track_newpoint_gc, xd, yd, pl); - g_object_unref ( G_OBJECT ( pl ) ); - g_object_unref ( G_OBJECT ( background_block_gc ) ); + g_object_unref ( G_OBJECT ( pl ) ); + g_object_unref ( G_OBJECT ( background_block_gc ) ); + g_free (str); + } passalong = g_new(draw_sync_t,1); // freed by draw_sync() passalong->vtl = vtl; @@ -7914,8 +7920,6 @@ static VikLayerToolFuncStatus tool_new_track_move ( VikTrwLayer *vtl, GdkEventMo // Update statusbar with full gain/loss information statusbar_write (distance, elev_gain, elev_loss, last_step, angle, vtl); - g_free (str); - // draw pixmap when we have time to g_idle_add_full (G_PRIORITY_HIGH_IDLE + 10, draw_sync, passalong, NULL); vtl->draw_sync_done = FALSE; -- 2.39.5