SF.net SVN: geany:[4297] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Mon Oct 12 10:53:39 UTC 2009


Revision: 4297
          http://geany.svn.sourceforge.net/geany/?rev=4297&view=rev
Author:   ntrel
Date:     2009-10-12 10:53:39 +0000 (Mon, 12 Oct 2009)

Log Message:
-----------
Don't use filetype submenus for templates (slower to navigate, often
only 1 per-filetype anyway).

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

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-10-12 08:25:04 UTC (rev 4296)
+++ trunk/ChangeLog	2009-10-12 10:53:39 UTC (rev 4297)
@@ -1,6 +1,13 @@
+2009-10-12  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/templates.c:
+   Don't use filetype submenus for templates (slower to navigate, often
+   only 1 per-filetype anyway).
+
+
 2009-10-12  Lex Trotman  <elextr(at)gmail(dot)com>
 
- * build.c
+ * build.c:
    Ensure that old style build config is not loaded if it does not exist.
 
 

Modified: trunk/src/templates.c
===================================================================
--- trunk/src/templates.c	2009-10-12 08:25:04 UTC (rev 4296)
+++ trunk/src/templates.c	2009-10-12 10:53:39 UTC (rev 4297)
@@ -357,55 +357,6 @@
 }
 
 
-static void add_file_items(GSList *list)
-{
-	GSList *node;
-	gsize size = sizeof(GtkWidget*) * filetypes_array->len;
-	GtkWidget **menus = g_alloca(size);
-
-	memset(menus, 0, size);	/* if only we had g_newa0() */
-
-	foreach_slist(node, list)
-	{
-		const gchar *fname = node->data;
-		GeanyFiletype *ft = filetypes_detect_from_extension(fname);
-		GtkWidget *menu = menus[ft->id];
-		GtkWidget *item;
-
-		if (!menu)
-		{
-			item = gtk_menu_item_new_with_label(ft->name);
-			menu = gtk_menu_new();
-			gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);
-			gtk_widget_show_all(item);
-			gtk_container_add(GTK_CONTAINER(new_with_template_menu), item);
-			menus[ft->id] = menu;
-		}
-		add_file_item(fname, menu);
-	}
-}
-
-
-static gint compare_filenames_by_filetype(gconstpointer a, gconstpointer b)
-{
-	GeanyFiletype *ft_a = filetypes_detect_from_extension(a);
-	GeanyFiletype *ft_b = filetypes_detect_from_extension(b);
-
-	/* sort by filetype name first */
-	if (G_LIKELY(ft_a != ft_b))
-	{
-		/* None filetypes should come first */
-		if (G_UNLIKELY(ft_a->id == GEANY_FILETYPES_NONE))
-			return -1;
-		if (G_UNLIKELY(ft_b->id == GEANY_FILETYPES_NONE))
-			return 1;
-
-		return utils_str_casecmp(ft_a->name, ft_b->name);
-	}
-	return utils_str_casecmp(a, b);
-}
-
-
 static void utils_slist_remove_next(GSList *node)
 {
 	GSList *old = node->next;
@@ -434,7 +385,7 @@
 	/* merge lists */
 	list = g_slist_concat(list, syslist);
 
-	list = g_slist_sort(list, compare_filenames_by_filetype);
+	list = g_slist_sort(list, (GCompareFunc) utils_str_casecmp);
 	/* remove duplicates (next to each other after sorting) */
 	foreach_slist(node, list)
 	{
@@ -444,8 +395,13 @@
 			utils_slist_remove_next(node);
 		}
 	}
-	add_file_items(list);
-	g_slist_foreach(list, (GFunc) g_free, NULL);
+	foreach_slist(node, list)
+	{
+		gchar *fname = node->data;
+
+		add_file_item(fname, new_with_template_menu);
+		g_free(fname);
+	}
 	g_slist_free(list);
 	g_free(path);
 	return list != NULL;


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