Fix the mouse menus not working with new backend, and
specifically problms in help and browser routines.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4222 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
diff --git a/src/browser.c b/src/browser.c
index 29a37be..8c9c7a6 100644
--- a/src/browser.c
+++ b/src/browser.c
@@ -125,15 +125,9 @@
old_selected = selected;
kbinput = get_kbinput(edit, &meta_key, &func_key);
- parse_browser_input(&kbinput, &meta_key, &func_key);
- s = get_shortcut(MBROWSER, &kbinput, &meta_key, &func_key);
- if (!s)
- continue;
- f = sctofunc((sc *) s);
- if (!f)
- break;
+
#ifndef DISABLE_MOUSE
- if (f->scfunc == (void *) do_mouse) {
+ if (kbinput == KEY_MOUSE) {
int mouse_x, mouse_y;
@@ -164,8 +158,17 @@
if (old_selected == selected)
unget_kbinput(NANO_ENTER_KEY, FALSE, FALSE);
}
- } else
+ }
#endif /* !DISABLE_MOUSE */
+
+ parse_browser_input(&kbinput, &meta_key, &func_key);
+ s = get_shortcut(MBROWSER, &kbinput, &meta_key, &func_key);
+ if (!s)
+ continue;
+ f = sctofunc((sc *) s);
+ if (!f)
+ break;
+
if (f->scfunc == total_refresh) {
total_redraw();
} else if (f->scfunc == do_help_void) {
diff --git a/src/help.c b/src/help.c
index bcd8d8d..810899d 100644
--- a/src/help.c
+++ b/src/help.c
@@ -127,8 +127,17 @@
old_line = line;
kbinput = get_kbinput(edit, &meta_key, &func_key);
- parse_help_input(&kbinput, &meta_key, &func_key);
+#ifndef DISABLE_MOUSE
+ if (kbinput == KEY_MOUSE) {
+ int mouse_x, mouse_y;
+ get_mouseinput(&mouse_x, &mouse_y, TRUE);
+ continue;
+ /* Redraw the screen. */
+ }
+#endif
+
+ parse_help_input(&kbinput, &meta_key, &func_key);
s = get_shortcut(MHELP, &kbinput, &meta_key, &func_key);
if (!s)
continue;
@@ -136,15 +145,7 @@
if (!f)
continue;
-
- if (f->scfunc == (void *) do_mouse) {
-#ifndef DISABLE_MOUSE
- int mouse_x, mouse_y;
-
- get_mouseinput(&mouse_x, &mouse_y, TRUE);
-#endif
- /* Redraw the screen. */
- } else if (f->scfunc == total_refresh) {
+ if (f->scfunc == total_refresh) {
total_redraw();
break;
} else if (f->scfunc == do_page_up) {
diff --git a/src/winio.c b/src/winio.c
index 8b1e540..9e36173 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -1695,14 +1695,19 @@
* we released/clicked on. */
f = allfuncs;
- for (; j > 0; j--)
- while (f != NULL && (f->menus & currmenu) != 0)
+ for (; j > 0; j--) {
+ if (f->next != NULL)
+ f = f->next;
+ while (f->next != NULL && (f->menus & currmenu) == 0)
f = f->next;
+ }
+
/* And put back the equivalent key. */
if (f != NULL) {
const sc *s = first_sc_for(currmenu, (void *) f->scfunc);
- unget_kbinput(s->seq, s->type == META, FALSE);
+ if (s != NULL)
+ unget_kbinput(s->seq, s->type == META, FALSE);
}
} else
/* Handle releases/clicks of the first mouse button that