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