+ char buffer[256];
+
+ if (!gtk_tree_view_get_tooltip_context (tree_view, &x, &y,
+ keyboard_tip,
+ &model, &path, &iter))
+ return FALSE;
+
+ /* ATM normally treeview doesn't call into layers - maybe another level of redirection required? */
+ gint rv;
+ gtk_tree_model_get (model, &iter, TYPE_COLUMN, &rv, -1);
+ if ( rv == VIK_TREEVIEW_TYPE_SUBLAYER ) {
+
+ gtk_tree_model_get (model, &iter, ITEM_DATA_COLUMN, &rv, -1);
+
+ gpointer sublayer;
+ gtk_tree_model_get (model, &iter, ITEM_POINTER_COLUMN, &sublayer, -1);
+
+ gpointer parent;
+ gtk_tree_model_get (model, &iter, ITEM_PARENT_COLUMN, &parent, -1);
+
+ g_snprintf (buffer, sizeof(buffer), "%s", vik_layer_sublayer_tooltip (VIK_LAYER(parent), rv, sublayer));
+ }
+ else if ( rv == VIK_TREEVIEW_TYPE_LAYER ) {
+ gpointer layer;
+ gtk_tree_model_get (model, &iter, ITEM_POINTER_COLUMN, &layer, -1);
+ g_snprintf (buffer, sizeof(buffer), "%s", vik_layer_layer_tooltip (VIK_LAYER(layer)));
+ }
+ else
+ return FALSE;
+
+ // Don't display null strings :)
+ if ( strncmp (buffer, "(null)", 6) == 0 ) {
+ return FALSE;
+ }
+ else {
+ // No point in using (Pango) markup verson - gtk_tooltip_set_markup()
+ // especially as waypoint comments may well contain HTML markup which confuses the pango markup parser
+ // This plain text is probably faster too.
+ gtk_tooltip_set_text (tooltip, buffer);
+ }
+
+ gtk_tree_view_set_tooltip_row (tree_view, tooltip, path);
+
+ gtk_tree_path_free (path);
+
+ return TRUE;