From d4820a25a47b50491dee2337e8682ef73e586e79 Mon Sep 17 00:00:00 2001 From: Robert Fewell <14uBobIT@gmail.com> Date: Tue, 21 Feb 2023 10:04:05 +0000 Subject: [PATCH] Sort the gnc tree view column menu --- gnucash/gnome-utils/gnc-tree-view.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/gnucash/gnome-utils/gnc-tree-view.c b/gnucash/gnome-utils/gnc-tree-view.c index 0e48e3b849..ed43471c07 100644 --- a/gnucash/gnome-utils/gnc-tree-view.c +++ b/gnucash/gnome-utils/gnc-tree-view.c @@ -40,6 +40,7 @@ #include "gnc-tree-view.h" #include "gnc-engine.h" +#include "gnc-glib-utils.h" #include "gnc-gnome-utils.h" #include "gnc-gobject-utils.h" #include "gnc-cell-renderer-date.h" @@ -1287,6 +1288,21 @@ gnc_tree_view_create_menu_item (GtkTreeViewColumn *column, // LEAVE(" "); } +static gint +column_menu_sort (GtkTreeViewColumn *columna, GtkTreeViewColumn *columnb) +{ + const gchar *column_namea = g_object_get_data (G_OBJECT(columna), REAL_TITLE); + const gchar *column_nameb = g_object_get_data (G_OBJECT(columnb), REAL_TITLE); + + if (!column_namea) + column_namea = gtk_tree_view_column_get_title (columna); + + if (!column_nameb) + column_nameb = gtk_tree_view_column_get_title (columnb); + + return safe_utf8_collate (column_namea, column_nameb); +} + /** This function is called to build the column selection menu. It * first destroys any old column selection menu, then checks to see * if a new menu should be built. If so, it calls the @@ -1324,6 +1340,7 @@ gnc_tree_view_build_column_menu (GncTreeView *view) /* Now build a new menu */ column_list = gtk_tree_view_get_columns (GTK_TREE_VIEW(view)); + column_list = g_list_sort (column_list, (GCompareFunc)column_menu_sort); g_list_foreach (column_list, (GFunc)gnc_tree_view_create_menu_item, view); g_list_free (column_list); }