]> git.wh0rd.org Git - nano.git/commitdiff
Returning the first shortcut that matches a given func in a given menu.
authorBenno Schulenberg <bensberg@justemail.net>
Wed, 23 Apr 2014 20:03:24 +0000 (20:03 +0000)
committerBenno Schulenberg <bensberg@justemail.net>
Wed, 23 Apr 2014 20:03:24 +0000 (20:03 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4811 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/global.c

index 471148f5e66cddf4173563475f21816aac23e724..79213cd1ae08ca6c63e6b1be7e021e03ca6160f2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,11 @@
        also when the PrevPage and NextPage functions are bound to meta-key
        sequences -- searching for these will not find them.  So, instead put
        in the standard key code.  This fixes Savannah bug #42140.
+       * src/global.c (first_sc_for): Stop the whole charade of preferring
+       control keys over meta keys over function keys, but return the first
+       one in the list -- just like the function name implies.  This will
+       make a user-defined shortcut appear in the two bottomlines without
+       having to unbind the existing one first -- better feedback.
 
 2014-04-22  Benno Schulenberg  <bensberg@justemail.net>
        * src/global.c (shortcut_init): Put the movement keys in the
index f7898e8626655d66ee3860f526011241d61ba8da..7493895d74f00c0332f5dcc4a9b074a11936aa38 100644 (file)
@@ -310,46 +310,15 @@ void add_to_funcs(void (*func)(void), int menus, const char *desc, const char *h
 #endif
 }
 
+/* Return the first shortcut in the list of shortcuts that
+ * matches the given func in the given menu. */
 const sc *first_sc_for(int menu, void (*func)(void))
 {
     const sc *s;
-    const sc *fkeysc = NULL;
-    const sc *metasc = NULL;
-    const sc *rawsc = NULL;
 
-    for (s = sclist; s != NULL; s = s->next) {
-       if ((s->menu & menu) && s->scfunc == func) {
-           /* Memorize the first meta sequence, first function key,
-            * and first dedicated key.  The latter is needed to be
-            * able to show something when the user has rebound all
-            * other sequences for a specific func. */
-           if (s->type == META) {
-               if (!metasc)
-                   metasc = s;
-               continue;
-           } else if (s->type == FKEY) {
-               if (!fkeysc)
-                   fkeysc = s;
-               continue;
-           } else if (s->type == RAWINPUT) {
-               if (!rawsc)
-                   rawsc = s;
-               continue;
-           }
-
-           /* Otherwise, it was something else, so use it. */
+    for (s = sclist; s != NULL; s = s->next)
+       if ((s->menu & menu) && s->scfunc == func)
            return s;
-       }
-    }
-
-    /* If we did not find any control sequence, then prefer a
-     * meta sequence over a function key over a dedicated key. */
-    if (metasc)
-       return metasc;
-    else if (fkeysc)
-       return fkeysc;
-    else if (rawsc)
-       return rawsc;
 
 #ifdef DEBUG
     fprintf(stderr, "Whoops, returning null given func %ld in menu %x\n", (long) func, menu);