]> git.wh0rd.org Git - nano.git/commitdiff
Fix the mouse menus not working with new backend, and
authorChris Allegretta <chrisa@asty.org>
Tue, 11 Mar 2008 04:52:57 +0000 (04:52 +0000)
committerChris Allegretta <chrisa@asty.org>
Tue, 11 Mar 2008 04:52:57 +0000 (04:52 +0000)
specifically problms in help and browser routines.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4222 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

src/browser.c
src/help.c
src/winio.c

index 29a37be9ec4c046594b8dd66a6a3e639e3b37077..8c9c7a6681e5b6484f58eaa9132238a81e5d8f46 100644 (file)
@@ -125,15 +125,9 @@ char *do_browser(char *path, DIR *dir)
        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 @@ char *do_browser(char *path, DIR *dir)
                        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) {
index bcd8d8db8d1b04eeaaa78002e6d7379d09d17e37..810899d68762e30fa23369224e45fa40644a69f0 100644 (file)
@@ -127,8 +127,17 @@ void do_help(void (*refresh_func)(void))
        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 @@ void do_help(void (*refresh_func)(void))
        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) {
index 8b1e5407269382af0333bc702302df871afada28..9e36173e0703ee347097e9678e4245f4495d4cc6 100644 (file)
@@ -1695,14 +1695,19 @@ int get_mouseinput(int *mouse_x, int *mouse_y, bool allow_shortcuts)
             * 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