SF.net SVN: geany: [2361] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Tue Mar 18 16:09:12 UTC 2008


Revision: 2361
          http://geany.svn.sourceforge.net/geany/?rev=2361&view=rev
Author:   eht16
Date:     2008-03-18 09:09:11 -0700 (Tue, 18 Mar 2008)

Log Message:
-----------
Save sorting order of the symbol list when saving a file (#1917262).

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

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-03-18 16:05:58 UTC (rev 2360)
+++ trunk/ChangeLog	2008-03-18 16:09:11 UTC (rev 2361)
@@ -1,3 +1,9 @@
+2008-03-18  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
+
+ * src/treeviews.c, src/symbols.c, src/symbols.h:
+   Save sorting order of the symbol list when saving a file (#1917262).
+
+
 2008-03-17  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * doc/geany.txt, doc/geany.html:

Modified: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c	2008-03-18 16:05:58 UTC (rev 2360)
+++ trunk/src/symbols.c	2008-03-18 16:09:11 UTC (rev 2361)
@@ -368,11 +368,11 @@
 }
 
 
-static const GList *get_tag_list(gint idx, guint tag_types, gboolean sort_by_name)
+static const GList *get_tag_list(gint idx, guint tag_types, gint sort_mode)
 {
 	static GList *tag_names = NULL;
 
-	if (idx >= 0 && doc_list[idx].is_valid && doc_list[idx].tm_file &&
+	if (DOC_IDX_VALID(idx) && doc_list[idx].tm_file &&
 		doc_list[idx].tm_file->tags_array)
 	{
 		TMTag *tag;
@@ -432,7 +432,7 @@
 				if (! doc_is_utf8) g_free(utf8_name);
 			}
 		}
-		if (sort_by_name)
+		if (sort_mode == SYMBOLS_SORT_BY_NAME)
 			tag_names = g_list_sort(tag_names, (GCompareFunc) compare_symbol);
 		else
 			tag_names = g_list_sort(tag_names, (GCompareFunc) compare_symbol_lines);
@@ -797,17 +797,23 @@
 }
 
 
-gboolean symbols_recreate_tag_list(gint idx, gboolean sort_by_name)
+gboolean symbols_recreate_tag_list(gint idx, gint sort_mode)
 {
 	GList *tmp;
 	const GList *tags;
 	GtkTreeIter iter;
 	GtkTreeModel *model;
+	static gint prev_sort_mode = SYMBOLS_SORT_BY_NAME;
 	filetype_id ft_id = FILETYPE_ID(doc_list[idx].file_type);
 
 	g_return_val_if_fail(DOC_IDX_VALID(idx), FALSE);
 
-	tags = get_tag_list(idx, tm_tag_max_t, sort_by_name);
+	if (sort_mode == SYMBOLS_SORT_USE_PREVIOUS)
+		sort_mode = prev_sort_mode;
+	else
+		prev_sort_mode = sort_mode;
+
+	tags = get_tag_list(idx, tm_tag_max_t, sort_mode);
 	if (doc_list[idx].tm_file == NULL || tags == NULL)
 		return FALSE;
 

Modified: trunk/src/symbols.h
===================================================================
--- trunk/src/symbols.h	2008-03-18 16:05:58 UTC (rev 2360)
+++ trunk/src/symbols.h	2008-03-18 16:09:11 UTC (rev 2361)
@@ -27,7 +27,14 @@
 
 extern const guint TM_GLOBAL_TYPE_MASK;
 
+enum
+{
+	SYMBOLS_SORT_BY_NAME,
+	SYMBOLS_SORT_BY_APPEARANCE,
+	SYMBOLS_SORT_USE_PREVIOUS
+};
 
+
 void symbols_global_tags_loaded(gint file_type_idx);
 
 GString *symbols_find_tags_as_string(GPtrArray *tags_array, guint tag_types, gint lang);
@@ -42,7 +49,7 @@
 
 void symbols_finalize(void);
 
-gboolean symbols_recreate_tag_list(gint idx, gboolean sort_by_name);
+gboolean symbols_recreate_tag_list(gint idx, gint sort_mode);
 
 gint symbols_generate_global_tags(gint argc, gchar **argv, gboolean want_preprocess);
 

Modified: trunk/src/treeviews.c
===================================================================
--- trunk/src/treeviews.c	2008-03-18 16:05:58 UTC (rev 2360)
+++ trunk/src/treeviews.c	2008-03-18 16:09:11 UTC (rev 2361)
@@ -189,7 +189,7 @@
 			g_object_ref((gpointer)doc_list[idx].tag_tree);	/* to hold it after removing */
 		}
 
-		doc_list[idx].has_tags = symbols_recreate_tag_list(idx, TRUE); /* sort by name by default */
+		doc_list[idx].has_tags = symbols_recreate_tag_list(idx, SYMBOLS_SORT_USE_PREVIOUS);
 	}
 
 	if (doc_list[idx].has_tags)
@@ -602,14 +602,14 @@
 		{
 			gint idx = document_get_cur_idx();
 			if (DOC_IDX_VALID(idx))
-				doc_list[idx].has_tags = symbols_recreate_tag_list(idx, TRUE);
+				doc_list[idx].has_tags = symbols_recreate_tag_list(idx, SYMBOLS_SORT_BY_NAME);
 			break;
 		}
 		case SYMBOL_ACTION_SORT_BY_APPEARANCE:
 		{
 			gint idx = document_get_cur_idx();
 			if (DOC_IDX_VALID(idx))
-				doc_list[idx].has_tags = symbols_recreate_tag_list(idx, FALSE);
+				doc_list[idx].has_tags = symbols_recreate_tag_list(idx, SYMBOLS_SORT_BY_APPEARANCE);
 			break;
 		}
 		case SYMBOL_ACTION_HIDE:


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