From: Chris Allegretta Date: Thu, 12 Apr 2001 13:24:40 +0000 (+0000) Subject: Add yesno support to mouse X-Git-Tag: v1.1.0~94 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=235ab192aff72b6a13ca68d8e493eda4c756a31a;p=nano.git Add yesno support to mouse git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@594 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- diff --git a/ChangeLog b/ChangeLog index 4386b1a6..5dfe660d 100644 --- 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 55a2a218..9ca37f82 100644 --- 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;