]> git.wh0rd.org Git - nano.git/commitdiff
Add yesno support to mouse
authorChris Allegretta <chrisa@asty.org>
Thu, 12 Apr 2001 13:24:40 +0000 (13:24 +0000)
committerChris Allegretta <chrisa@asty.org>
Thu, 12 Apr 2001 13:24:40 +0000 (13:24 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@594 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
winio.c

index 4386b1a669bc7b60aa779b3c9f60d75fcb63fb41..5dfe660d037c943a7308775e46e4d0331ae9f2da 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,8 @@
 Cvs code -
 - General
        - New global variables currshortcut and currslen to support using
-         the mouse with the shortcuts.  FIXME - Does not support the
-         do_yesno function yet as that will have to be done by hand.
+         the mouse with the shortcuts.  FIXME - Does not support clicking
+         on filenames in the browser, yet.
 
 nano 1.1 tree forked here 04/07/2001
 
diff --git a/winio.c b/winio.c
index 55a2a21807d3bf3565644ba4a86dc3cd23b2b3d3..9ca37f822144e968c510c943cc746f156a8dadb0 100644 (file)
--- a/winio.c
+++ b/winio.c
@@ -1044,6 +1044,12 @@ int do_yesno(int all, int leavecursor, char *msg, ...)
     char *nostr;               /* Same for no */
     char *allstr;              /* And all, surprise! */
     char shortstr[5];          /* Temp string for above */
+#ifndef NANO_SMALL
+#ifdef NCURSES_MOUSE_VERSION
+    MEVENT mevent;
+#endif
+#endif
+
 
     /* Yes, no and all are strings of any length.  Each string consists of
        all characters accepted as a valid character for that value.
@@ -1091,6 +1097,39 @@ int do_yesno(int all, int leavecursor, char *msg, ...)
        kbinput = wgetch(edit);
 
        switch (kbinput) {
+#ifndef NANO_SMALL
+#ifdef NCURSES_MOUSE_VERSION
+       case KEY_MOUSE:
+
+           /* Look ma!  We get to duplicate lots of code from do_mouse!! */
+           if (getmouse(&mevent) == ERR)
+               break;
+           if (!wenclose(bottomwin, mevent.y, mevent.x) || ISSET(NO_HELP))
+               break;
+           mevent.y -= editwinrows + 3;
+           if (mevent.y < 0)
+               break;
+           else {
+
+               /* Rather than a bunch of if statements, set up a matrix
+                  of possible return keystrokes based on the x and y values */
+               if (all) {
+                   char yesnosquare[2][2] = {
+                       {yesstr[0], allstr[0]}, 
+                       {nostr[0], NANO_CONTROL_C }};
+
+                   ungetch(yesnosquare[mevent.y][mevent.x/(COLS/6)]);
+               } else {
+                   char yesnosquare[2][2] = {
+                       {yesstr[0], '\0'},
+                       {nostr[0], NANO_CONTROL_C }};
+
+                   ungetch(yesnosquare[mevent.y][mevent.x/(COLS/6)]);
+               }
+           }
+           break;
+#endif
+#endif
        case NANO_CONTROL_C:
            ok = -2;
            break;