[gnome-commander] Quick search can be activated by just typing a letter, adjustable in the options tab



commit 9cf67a4465e873f2e0622db448a3affa4653570e
Author: Uwe Scholz <uwescholz src gnome org>
Date:   Fri Aug 18 23:32:56 2017 +0200

    Quick search can be activated by just typing a letter, adjustable in the options tab

 NEWS                                    |    1 +
 doc/C/releases.xml                      |    5 ++++-
 src/dialogs/gnome-cmd-options-dialog.cc |   22 +++++++++++++++++-----
 src/gnome-cmd-data.cc                   |    6 +++---
 src/gnome-cmd-file-list.cc              |    3 ++-
 src/gnome-cmd-main-win.cc               |   25 +++++++++++++++++++++++--
 src/gnome-cmd-types.h                   |    3 ++-
 7 files changed, 52 insertions(+), 13 deletions(-)
---
diff --git a/NEWS b/NEWS
index eb9e22a..26ffb87 100644
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,7 @@ New features:
  * [build] Don't use gnome-autogen.sh anymore (Many thanks to Philip Withnall and David King)
  * [build] Translations are now handled by upstream gettext instead of intltool
  * [build] New documentation infrastructure: Use yelp-tools instead of gnome-doc-utils
+ * Quick search can be activated by just typing a letter, adjustable in the options tab
 
 Other changes:
  * Increased minimum GTK version from 2.8.0 to 2.18.0
diff --git a/doc/C/releases.xml b/doc/C/releases.xml
index 1ccae5e..10c1772 100644
--- a/doc/C/releases.xml
+++ b/doc/C/releases.xml
@@ -38,9 +38,12 @@
                         <listitem>
                            <para>[build] New documentation infrastructure: Use yelp-tools instead of 
gnome-doc-utils</para>
                        </listitem>
+                        <listitem>
+                           <para>Quick search can be activated by just typing a letter, adjustable in the 
options tab</para>
+                       </listitem>
                     </itemizedlist>
                 </para>
-                <para>New features:</para>
+                <para>Other changes:</para>
                 <para>
                     <itemizedlist>
                         <listitem>
diff --git a/src/dialogs/gnome-cmd-options-dialog.cc b/src/dialogs/gnome-cmd-options-dialog.cc
index ea2ea62..a111d7c 100644
--- a/src/dialogs/gnome-cmd-options-dialog.cc
+++ b/src/dialogs/gnome-cmd-options-dialog.cc
@@ -167,10 +167,16 @@ static GtkWidget *create_general_tab (GtkWidget *parent, GnomeCmdData::Options &
 
     radio = create_radio (parent, NULL, _("CTRL+ALT+letters"), "ctrl_alt_quick_search");
     gtk_box_pack_start (GTK_BOX (cat_box), radio, FALSE, TRUE, 0);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), !cfg.quick_search);
-    radio = create_radio (parent, get_radio_group (radio), _("ALT+letters (menu access with F10)"), 
"quick_search");
+    if (cfg.quick_search == GNOME_CMD_QUICK_SEARCH_CTRL_ALT)
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), TRUE);
+    radio = create_radio (parent, get_radio_group (radio), _("ALT+letters (menu access with F12)"), 
"alt_quick_search");
+    gtk_container_add (GTK_CONTAINER (cat_box), radio);
+    if (cfg.quick_search == GNOME_CMD_QUICK_SEARCH_ALT)
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), TRUE);
+    radio = create_radio (parent, get_radio_group (radio), _("Just letters"), "quick_search");
     gtk_container_add (GTK_CONTAINER (cat_box), radio);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), cfg.quick_search);
+    if (cfg.quick_search == GNOME_CMD_QUICK_SEARCH_JUST_A_CHARACTER)
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), TRUE);
 
     check = create_check (parent, _("Match beginning of the file name"), "qsearch_exact_match_begin");
     gtk_box_pack_start (GTK_BOX (cat_box), check, FALSE, TRUE, 0);
@@ -223,7 +229,8 @@ inline void store_general_options (GtkWidget *dialog, GnomeCmdData::Options &cfg
     GtkWidget *rmb_popup_radio = lookup_widget (dialog, "rmb_popup_radio");
     GtkWidget *select_dirs = lookup_widget (dialog, "select_dirs");
     GtkWidget *case_sens_check = lookup_widget (dialog, "case_sens_check");
-    GtkWidget *quick_search = lookup_widget (dialog, "quick_search");
+    GtkWidget *ctrl_alt_quick_search = lookup_widget (dialog, "ctrl_alt_quick_search");
+    GtkWidget *alt_quick_search = lookup_widget (dialog, "alt_quick_search");
     GtkWidget *multiple_instance_check = lookup_widget (dialog, "multiple_instance_check");
     GtkWidget *qsearch_exact_match_begin = lookup_widget (dialog, "qsearch_exact_match_begin");
     GtkWidget *qsearch_exact_match_end = lookup_widget (dialog, "qsearch_exact_match_end");
@@ -243,7 +250,12 @@ inline void store_general_options (GtkWidget *dialog, GnomeCmdData::Options &cfg
 
     cfg.select_dirs = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (select_dirs));
     cfg.case_sens_sort = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (case_sens_check));
-    cfg.quick_search = (GnomeCmdQuickSearchShortcut) gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(quick_search));
+    if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ctrl_alt_quick_search)))
+        cfg.quick_search = GNOME_CMD_QUICK_SEARCH_CTRL_ALT;
+    else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (alt_quick_search)))
+        cfg.quick_search = GNOME_CMD_QUICK_SEARCH_ALT;
+    else
+        cfg.quick_search = GNOME_CMD_QUICK_SEARCH_JUST_A_CHARACTER;
     cfg.allow_multiple_instances = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(multiple_instance_check));
     cfg.quick_search_exact_match_begin = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(qsearch_exact_match_begin));
     cfg.quick_search_exact_match_end = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(qsearch_exact_match_end));
diff --git a/src/gnome-cmd-data.cc b/src/gnome-cmd-data.cc
index 5fc1b3c..ad0809c 100644
--- a/src/gnome-cmd-data.cc
+++ b/src/gnome-cmd-data.cc
@@ -778,9 +778,9 @@ static void on_use_internal_viewer_changed()
 
 static void on_quick_search_shortcut_changed()
 {
-    gint quick_search;
-    quick_search = g_settings_get_enum (gnome_cmd_data.options.gcmd_settings->general, 
GCMD_SETTINGS_QUICK_SEARCH_SHORTCUT);
-    gnome_cmd_data.options.quick_search = (GnomeCmdQuickSearchShortcut) quick_search;
+    GnomeCmdQuickSearchShortcut quick_search;
+    quick_search = (GnomeCmdQuickSearchShortcut) g_settings_get_enum 
(gnome_cmd_data.options.gcmd_settings->general, GCMD_SETTINGS_QUICK_SEARCH_SHORTCUT);
+    gnome_cmd_data.options.quick_search = quick_search;
 }
 
 static void on_quick_search_exact_match_begin_changed()
diff --git a/src/gnome-cmd-file-list.cc b/src/gnome-cmd-file-list.cc
index b97d64f..01ff218 100644
--- a/src/gnome-cmd-file-list.cc
+++ b/src/gnome-cmd-file-list.cc
@@ -2461,7 +2461,8 @@ gboolean GnomeCmdFileList::key_pressed(GdkEventKey *event)
                 break;
         }
     }
-    else if (state_is_ctrl_alt (event->state) || state_is_ctrl_alt_shift (event->state))
+    else if ((gnome_cmd_data.options.quick_search == GNOME_CMD_QUICK_SEARCH_CTRL_ALT)
+             && (state_is_ctrl_alt (event->state) || state_is_ctrl_alt_shift (event->state)))
     {
         if ((event->keyval >= GDK_a && event->keyval <= GDK_z)
             || (event->keyval >= GDK_A && event->keyval <= GDK_Z)
diff --git a/src/gnome-cmd-main-win.cc b/src/gnome-cmd-main-win.cc
index c2e2539..8e4a74d 100644
--- a/src/gnome-cmd-main-win.cc
+++ b/src/gnome-cmd-main-win.cc
@@ -133,28 +133,49 @@ static gint gnome_cmd_key_snooper(GtkWidget *grab_widget, GdkEventKey *event, Gn
     g_return_val_if_fail (mw!=NULL, FALSE);
 
     if (event->type!=GDK_KEY_PRESS)
+    {
         return FALSE;
+    }
 
     if (!((event->keyval >= GDK_A && event->keyval <= GDK_Z) || (event->keyval >= GDK_a && event->keyval <= 
GDK_z) ||
           (event->keyval >= GDK_0 && event->keyval <= GDK_9) ||
           event->keyval == GDK_period || event->keyval == GDK_question|| event->keyval == GDK_asterisk || 
event->keyval == GDK_bracketleft))
+    {
         return FALSE;
+    }
 
-    if (!gnome_cmd_data.options.quick_search)
+    if (gnome_cmd_data.options.quick_search == GNOME_CMD_QUICK_SEARCH_CTRL_ALT)
+    {
         return FALSE;
+    }
 
-    if (!state_is_alt (event->state) && !state_is_alt_shift (event->state))
+    if ((gnome_cmd_data.options.quick_search == GNOME_CMD_QUICK_SEARCH_ALT)
+        && (!state_is_alt (event->state) && !state_is_alt_shift (event->state)))
+    {
         return FALSE;
+    }
+    
+    if (state_is_ctrl (event->state) || state_is_ctrl_shift (event->state) || state_is_ctrl_alt_shift 
(event->state)
+        || ((state_is_alt (event->state) || state_is_alt_shift (event->state)) && 
gnome_cmd_data.options.quick_search != GNOME_CMD_QUICK_SEARCH_ALT))
+    {
+        return FALSE;
+    }
 
     GnomeCmdFileSelector *fs = mw->fs(ACTIVE);
     if (!fs || !fs->file_list())
+    {
         return FALSE;
+    }
 
     if (!GTK_WIDGET_HAS_FOCUS (GTK_WIDGET (fs->file_list())))
+    {
         return FALSE;
+    }
 
     if (gnome_cmd_file_list_quicksearch_shown (fs->file_list()))
+    {
         return FALSE;
+    }
 
     gnome_cmd_file_list_show_quicksearch (fs->file_list(), event->keyval);
 
diff --git a/src/gnome-cmd-types.h b/src/gnome-cmd-types.h
index c9c8f57..9292db6 100644
--- a/src/gnome-cmd-types.h
+++ b/src/gnome-cmd-types.h
@@ -59,7 +59,8 @@ typedef enum
 typedef enum
 {
     GNOME_CMD_QUICK_SEARCH_CTRL_ALT,
-    GNOME_CMD_QUICK_SEARCH_ALT
+    GNOME_CMD_QUICK_SEARCH_ALT,
+    GNOME_CMD_QUICK_SEARCH_JUST_A_CHARACTER
 }GnomeCmdQuickSearchShortcut;
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]