SF.net SVN: geany: [1936] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Tue Oct 9 12:26:44 UTC 2007


Revision: 1936
          http://geany.svn.sourceforge.net/geany/?rev=1936&view=rev
Author:   eht16
Date:     2007-10-09 05:26:44 -0700 (Tue, 09 Oct 2007)

Log Message:
-----------
Add full file name as tooltip in the open files list (only for GTK 2.12 and above).

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/treeviews.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2007-10-09 12:06:24 UTC (rev 1935)
+++ trunk/ChangeLog	2007-10-09 12:26:44 UTC (rev 1936)
@@ -3,6 +3,8 @@
  * src/document.c, src/highlighting.c, src/symbols.c, src/symbols.h:
    Fix wrong colouring of type keywords of tags from different
    filetypes.
+ * src/treeviews.c: Add full file name as tooltip in the open files list
+                    (only for GTK 2.12 and above).
 
 
 2007-10-09  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: trunk/src/treeviews.c
===================================================================
--- trunk/src/treeviews.c	2007-10-09 12:06:24 UTC (rev 1935)
+++ trunk/src/treeviews.c	2007-10-09 12:26:44 UTC (rev 1936)
@@ -186,6 +186,34 @@
 }
 
 
+#if GTK_CHECK_VERSION(2, 12, 0)
+gboolean on_treeviews_tooltip_queried(GtkWidget *widget, gint x, gint y, gboolean keyboard_mode,
+									  GtkTooltip *tooltip, gpointer user_data)
+{
+	GtkTreePath *path;
+
+	if (gtk_tree_view_get_path_at_pos(
+			GTK_TREE_VIEW(tv.tree_openfiles), x, y, &path, NULL, NULL, NULL))
+	{
+		GtkTreeIter iter;
+		gchar *file_name = NULL;
+
+		gtk_tree_model_get_iter(GTK_TREE_MODEL(store_openfiles), &iter, path);
+		gtk_tree_path_free(path);
+		gtk_tree_model_get(GTK_TREE_MODEL(store_openfiles), &iter, 3, &file_name, -1);
+		if (file_name != NULL)
+		{
+			gtk_tooltip_set_text(tooltip, file_name);
+			g_free(file_name);
+			return TRUE;
+		}
+	}
+
+	return FALSE;
+}
+#endif
+
+
 /* does some preparing things to the open files list widget */
 static void prepare_openfiles()
 {
@@ -193,12 +221,17 @@
 	GtkTreeViewColumn *column;
 	GtkTreeSelection *select;
 	PangoFontDescription *pfd;
-	GtkTreeSortable    *sortable;
+	GtkTreeSortable *sortable;
 
 	tv.tree_openfiles = lookup_widget(app->window, "treeview6");
 
-	// store the short filename to show, and the index as reference
+	// store the short filename to show, and the index as reference,
+	// the colour (black/red/green) and the full name for the tooltip
+#if GTK_CHECK_VERSION(2, 12, 0)
+	store_openfiles = gtk_list_store_new(4, G_TYPE_STRING, G_TYPE_INT, GDK_TYPE_COLOR, G_TYPE_STRING);
+#else
 	store_openfiles = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, GDK_TYPE_COLOR);
+#endif
 	gtk_tree_view_set_model(GTK_TREE_VIEW(tv.tree_openfiles), GTK_TREE_MODEL(store_openfiles));
 
 	// set policy settings for the scolledwindow around the treeview again, because glade
@@ -223,6 +256,13 @@
 	gtk_widget_modify_font(tv.tree_openfiles, pfd);
 	pango_font_description_free(pfd);
 
+#if GTK_CHECK_VERSION(2, 12, 0)
+	// GTK 2.12 tooltips
+	gtk_widget_set_has_tooltip(tv.tree_openfiles, TRUE);
+	g_signal_connect(G_OBJECT(tv.tree_openfiles), "query-tooltip",
+						G_CALLBACK(on_treeviews_tooltip_queried), NULL);
+#endif
+
 	g_signal_connect(G_OBJECT(tv.tree_openfiles), "button-press-event",
 						G_CALLBACK(on_treeviews_button_press_event), GINT_TO_POINTER(TREEVIEW_OPENFILES));
 
@@ -251,7 +291,11 @@
 
 	basename = g_path_get_basename(DOC_FILENAME(idx));
 	gtk_list_store_set(store_openfiles, &doc_list[idx].iter,
+#if GTK_CHECK_VERSION(2, 12, 0)
+		0, basename, 1, idx, 2, color, 3, DOC_FILENAME(idx), -1);
+#else
 		0, basename, 1, idx, 2, color, -1);
+#endif
 	g_free(basename);
 }
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list