Clean up by introducing a wrapper struct for mouse clicks rather than passing

three u_chars around.

As a side-effect this fixes incorrectly rejecting high cursor positions
(because it was comparing them as signed char), reported by Tom Doherty.
This commit is contained in:
Nicholas Marriott
2009-10-11 07:01:10 +00:00
parent f68ade7b1d
commit 4bc0f6e7e9
7 changed files with 52 additions and 45 deletions

View File

@ -653,25 +653,23 @@ window_pane_key(struct window_pane *wp, struct client *c, int key)
void
window_pane_mouse(
struct window_pane *wp, struct client *c, u_char b, u_char x, u_char y)
struct window_pane *wp, struct client *c, struct mouse_event *m)
{
if (!window_pane_visible(wp))
return;
/* XXX convert from 1-based? */
if (x < wp->xoff || x >= wp->xoff + wp->sx)
if (m->x < wp->xoff || m->x >= wp->xoff + wp->sx)
return;
if (y < wp->yoff || y >= wp->yoff + wp->sy)
if (m->y < wp->yoff || m->y >= wp->yoff + wp->sy)
return;
x -= wp->xoff;
y -= wp->yoff;
m->x -= wp->xoff;
m->y -= wp->yoff;
if (wp->mode != NULL) {
if (wp->mode->mouse != NULL)
wp->mode->mouse(wp, c, b, x, y);
wp->mode->mouse(wp, c, m);
} else if (wp->fd != -1)
input_mouse(wp, b, x, y);
input_mouse(wp, m);
}
int