+2007-05-29 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * winio.c (do_mouseinput): Deal with clicks of the first mouse
+ button again. Oddly, ncurses built without --enable-ext-mouse
+ needs this, but ncurses built with --enable-ext-mouse doesn't.
+
2007-05-25 David Lawrence Ramsey <pooka109@gmail.com>
* configure.ac, nano.c (main): Replace the current hackish check
Fix processing of mouse events so that those we don't handle are
ignored instead of being erroneously passed through.
* winio.c (do_mouseinput): Simplify handling of mouse events
- involving the first mouse button.
+ involving the first mouse button by only dealing with releases.
* winio.c (do_mouseinput): Improve mouse wheel support to only
move the cursor if we're in the edit window or on the statusbar.
#ifndef DISABLE_MOUSE
/* Handle any mouse events that may have occurred. We currently handle
- * releases of the first mouse button. If allow_shortcuts is TRUE,
- * releasing on a visible shortcut will put back the keystroke
- * associated with that shortcut. If NCURSES_MOUSE_VERSION is at least
- * 2, we also currently handle presses of the fourth mouse button
- * (upward rolls of the mouse wheel) by putting back the keystrokes to
- * move up, and presses of the fifth mouse button (downward rolls of the
- * mouse wheel) by putting back the keystrokes to move down. Return -1
- * on error, 0 if the mouse event needs to be handled, 1 if it's been
- * handled by putting back keystrokes that need to be handled. or 2 if
- * the mouse event is ignored. Assume that KEY_MOUSE has already been
- * read in. */
+ * releases/clicks of the first mouse button. If allow_shortcuts is
+ * TRUE, releasing/clicking on a visible shortcut will put back the
+ * keystroke associated with that shortcut. If NCURSES_MOUSE_VERSION is
+ * at least 2, we also currently handle presses of the fourth mouse
+ * button (upward rolls of the mouse wheel) by putting back the
+ * keystrokes to move up, and presses of the fifth mouse button
+ * (downward rolls of the mouse wheel) by putting back the keystrokes to
+ * move down. Return -1 on error, 0 if the mouse event needs to be
+ * handled, 1 if it's been handled by putting back keystrokes that need
+ * to be handled. or 2 if it's been ignored. Assume that KEY_MOUSE has
+ * already been read in. */
int get_mouseinput(int *mouse_x, int *mouse_y, bool allow_shortcuts)
{
MEVENT mevent;
*mouse_x = mevent.x;
*mouse_y = mevent.y;
- /* Handle releases of the first mouse button. */
- if (mevent.bstate & BUTTON1_RELEASED) {
+ /* Handle clicks/releases of the first mouse button. */
+ if (mevent.bstate & (BUTTON1_RELEASED | BUTTON1_CLICKED)) {
/* If we're allowing shortcuts, the current shortcut list is
* being displayed on the last two lines of the screen, and the
- * first mouse button was pressed inside it, we need to figure
- * out which shortcut was clicked and put back the equivalent
- * keystroke(s) for it. */
+ * first mouse button was released on/clicked inside it, we need
+ * to figure out which shortcut was released on/clicked and put
+ * back the equivalent keystroke(s) for it. */
if (allow_shortcuts && !ISSET(NO_HELP) &&
wmouse_trafo(bottomwin, mouse_y, mouse_x, FALSE)) {
int i;
/* The actual shortcut we released on, starting at the
* first one in the current shortcut list. */
- /* Ignore releases of the first mouse button on the
+ /* Ignore releases/clicks of the first mouse button on the
* statusbar. */
if (*mouse_y == 0)
return 2;
/* Calculate the x-coordinate relative to the beginning of
* the shortcut list in bottomwin, and add it to j. j
* should now be the index in the shortcut list of the
- * shortcut we released on. */
+ * shortcut we released/clicked on. */
j = (*mouse_x / i) * 2 + j;
/* Adjust j if we released on the last two shortcuts. */
if ((j >= currslen) && (*mouse_x % i < COLS % i))
j -= 2;
- /* Ignore releases of the first mouse button beyond the last
- * shortcut. */
+ /* Ignore releases/clicks of the first mouse button beyond
+ * the last shortcut. */
if (j >= currslen)
return 2;
/* Go through the shortcut list to determine which shortcut
- * we released on. */
+ * we released/clicked on. */
s = currshortcut;
for (; j > 0; j--)
return 1;
}
} else
- /* Handle releases of the first mouse button that aren't on
- * the current shortcut list elsewhere. */
+ /* Handle releases/clicks of the first mouse button that
+ * aren't on the current shortcut list elsewhere. */
return 0;
}
#if NCURSES_MOUSE_VERSION >= 2