From fe0d366ce2976a596ca128885407cb6201484762 Mon Sep 17 00:00:00 2001
From: David Lawrence Ramsey <pooka109@gmail.com>
Date: Thu, 26 Aug 2004 01:43:16 +0000
Subject: [PATCH] in get_mouseinput(), make clicking on meta shortcuts work
 properly again, and properly handle the case of whereis_list's being longer
 than MAIN_VISIBLE as bottombars() does

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1913 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog   |  5 +++++
 src/winio.c | 10 ++++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 76b4e371..de692f1f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -23,6 +23,11 @@ CVS code -
 	- New function used as a wrapper for ungetch(). (DLR)
   get_mouseinput()
 	- Consolidate two if statements to increase efficiency. (DLR)
+	- Check kbinput against metaval instead of (erroneously) ctrlval
+	  when putting back a meta sequence. (DLR)
+	- If there are more than MAIN_VISIBLE shortcuts available, only
+	  register clicks on the first MAIN_VISIBLE shortcuts, since
+	  bottombars() only shows that many shortcuts. (DLR)
   do_yesno()
 	- Don't bother assigning the value of get_mouseinput() to
 	  anything.  Since allow_shortcuts is FALSE, its return value
diff --git a/src/winio.c b/src/winio.c
index 02464669..4e155e37 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -1287,9 +1287,15 @@ bool get_mouseinput(int *mouse_x, int *mouse_y, bool allow_shortcuts)
 	/* Get the shortcut lists' length. */
 	if (currshortcut == main_list)
 	    currslen = MAIN_VISIBLE;
-	else
+	else {
 	    currslen = length_of_list(currshortcut);
 
+	    /* We don't show any more shortcuts than the main list
+	     * does. */
+	    if (currslen > MAIN_VISIBLE)
+		currslen = MAIN_VISIBLE;
+	}
+
 	/* Calculate the width of each shortcut in the list (it's the
 	 * same for all of them). */
 	if (currslen < 2)
@@ -1319,7 +1325,7 @@ bool get_mouseinput(int *mouse_x, int *mouse_y, bool allow_shortcuts)
 	 * has an equivalent control key, meta key sequence, or both. */
 	if (s->ctrlval != NANO_NO_KEY)
 	    unget_kbinput(s->ctrlval, FALSE);
-	else if (s->ctrlval != NANO_NO_KEY)
+	else if (s->metaval != NANO_NO_KEY)
 	    unget_kbinput(s->metaval, TRUE);
 
 	return TRUE;
-- 
GitLab