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

@ -880,9 +880,9 @@ server_handle_client(struct client *c)
struct timeval tv;
struct key_binding *bd;
struct keylist *keylist;
struct mouse_event mouse;
int key, status, xtimeout, mode, isprefix;
u_int i;
u_char mouse[3];
xtimeout = options_get_number(&c->session->options, "repeat-time");
if (xtimeout != 0 && c->flags & CLIENT_REPEAT) {
@ -894,7 +894,7 @@ server_handle_client(struct client *c)
/* Process keys. */
keylist = options_get_data(&c->session->options, "prefix");
while (tty_keys_next(&c->tty, &key, mouse) == 0) {
while (tty_keys_next(&c->tty, &key, &mouse) == 0) {
if (c->session == NULL)
return;
@ -922,10 +922,10 @@ server_handle_client(struct client *c)
/* Check for mouse keys. */
if (key == KEYC_MOUSE) {
if (options_get_number(oo, "mouse-select-pane")) {
window_set_active_at(w, mouse[1], mouse[2]);
window_set_active_at(w, mouse.x, mouse.y);
wp = w->active;
}
window_pane_mouse(wp, c, mouse[0], mouse[1], mouse[2]);
window_pane_mouse(wp, c, &mouse);
continue;
}