From 5661e088e300173c64331c5350710b69774b4a99 Mon Sep 17 00:00:00 2001 From: Moritz Bruder Date: Wed, 12 Apr 2017 18:27:06 +0200 Subject: Run dialog: Allow changing history size A key has been added to the gsettings schema that controls history size. The code of the run dialog has been changed to use that key. --- data/org.mate.panel.gschema.xml.in | 7 ++++- mate-panel/panel-run-dialog.c | 59 +++++++++++++++++++++----------------- 2 files changed, 39 insertions(+), 27 deletions(-) diff --git a/data/org.mate.panel.gschema.xml.in b/data/org.mate.panel.gschema.xml.in index 241af62e..c58f6e19 100644 --- a/data/org.mate.panel.gschema.xml.in +++ b/data/org.mate.panel.gschema.xml.in @@ -23,7 +23,12 @@ [] History for "Run Application" dialog - This is the list of commands used in "Run Application" dialog. + This is the list of commands used in "Run Application" dialog. The commands are sorted descendingly by recency (e.g., most recent command comes first). + + + 10 + Maximum history size for "Run Application" dialog + Controls the maximum size of the history of the "Run Application" dialog. A value of 0 will disable the history. [] diff --git a/mate-panel/panel-run-dialog.c b/mate-panel/panel-run-dialog.c index e61f3ece..d867ed58 100644 --- a/mate-panel/panel-run-dialog.c +++ b/mate-panel/panel-run-dialog.c @@ -114,22 +114,23 @@ static void panel_run_dialog_disconnect_pixmap (PanelRunDialog *dialog); #define PANEL_RUN_SCHEMA "org.mate.panel" #define PANEL_RUN_HISTORY_KEY "history-mate-run" +#define PANEL_RUN_HISTORY_MAX_SIZE_KEY "history-max-size-mate-run" #define PANEL_RUN_SHOW_PROGRAM_LIST_KEY "show-program-list" -#define PANEL_RUN_MAX_HISTORY 10 static GtkTreeModel * _panel_run_get_recent_programs_list (PanelRunDialog *dialog) { GtkListStore *list; gchar **items; - int i = 0; + guint history_max_size; + guint i = 0; list = gtk_list_store_new (1, G_TYPE_STRING); + history_max_size = g_settings_get_uint (dialog->settings, PANEL_RUN_HISTORY_MAX_SIZE_KEY); items = g_settings_get_strv (dialog->settings, PANEL_RUN_HISTORY_KEY); - for (i = 0; - items[i] && i < PANEL_RUN_MAX_HISTORY; + items[i] && i < history_max_size; i++) { GtkTreeIter iter; gtk_list_store_append (list, &iter); @@ -149,30 +150,36 @@ _panel_run_save_recent_programs_list (PanelRunDialog *dialog, GtkTreeModel *model; GtkTreeIter iter; GArray *items; - gint i = 0; - - items = g_array_new (TRUE, TRUE, sizeof (gchar *)); - g_array_append_val (items, lastcommand); - i++; - - model = gtk_combo_box_get_model (GTK_COMBO_BOX (entry)); - - if (gtk_tree_model_get_iter_first (model, &iter)) { - char *command; - do { - gtk_tree_model_get (model, &iter, 0, &command, -1); - if (g_strcmp0 (command, lastcommand) == 0) - continue; - g_array_append_val (items, command); - i++; - } while (gtk_tree_model_iter_next (model, &iter) && - i < PANEL_RUN_MAX_HISTORY); - } + guint history_max_size; + guint i = 0; + + history_max_size = g_settings_get_uint (dialog->settings, PANEL_RUN_HISTORY_MAX_SIZE_KEY); + + if (history_max_size > 0) { + items = g_array_new (TRUE, TRUE, sizeof (gchar *)); + g_array_append_val (items, lastcommand); + i++; + + model = gtk_combo_box_get_model (GTK_COMBO_BOX (entry)); + + if (gtk_tree_model_get_iter_first (model, &iter)) { + char *command; + do { + gtk_tree_model_get (model, &iter, 0, &command, -1); + if (g_strcmp0 (command, lastcommand) == 0) + continue; + g_array_append_val (items, command); + i++; + } while (gtk_tree_model_iter_next (model, &iter) && + i < history_max_size); + } - g_settings_set_strv (dialog->settings, PANEL_RUN_HISTORY_KEY, - (const gchar **) items->data); + g_settings_set_strv (dialog->settings, PANEL_RUN_HISTORY_KEY, + (const gchar **) items->data); - g_array_free (items, TRUE); + g_array_free (items, TRUE); + + } } static void -- cgit v1.2.1