version 1.26, 2012/07/10 11:53:01 |
version 1.27, 2012/10/26 14:35:42 |
|
|
|
|
/* Translate mouse and output. */ |
/* Translate mouse and output. */ |
void |
void |
input_mouse(struct window_pane *wp, struct mouse_event *m) |
input_mouse(struct window_pane *wp, struct session *s, struct mouse_event *m) |
{ |
{ |
char buf[10]; |
char buf[10]; |
size_t len; |
size_t len; |
|
|
if (wp->screen->mode & ALL_MOUSE_MODES) { |
if (wp->screen->mode & ALL_MOUSE_MODES) { |
if (wp->screen->mode & MODE_MOUSE_UTF8) { |
if (wp->screen->mode & MODE_MOUSE_UTF8) { |
len = xsnprintf(buf, sizeof buf, "\033[M"); |
len = xsnprintf(buf, sizeof buf, "\033[M"); |
len += utf8_split2(m->b + 32, &buf[len]); |
len += utf8_split2(m->xb + 32, &buf[len]); |
len += utf8_split2(m->x + 33, &buf[len]); |
len += utf8_split2(m->x + 33, &buf[len]); |
len += utf8_split2(m->y + 33, &buf[len]); |
len += utf8_split2(m->y + 33, &buf[len]); |
} else { |
} else { |
if (m->b > 223 || m->x >= 222 || m->y > 222) |
if (m->xb > 223 || m->x >= 222 || m->y > 222) |
return; |
return; |
len = xsnprintf(buf, sizeof buf, "\033[M"); |
len = xsnprintf(buf, sizeof buf, "\033[M"); |
buf[len++] = m->b + 32; |
buf[len++] = m->xb + 32; |
buf[len++] = m->x + 33; |
buf[len++] = m->x + 33; |
buf[len++] = m->y + 33; |
buf[len++] = m->y + 33; |
} |
} |
|
|
return; |
return; |
} |
} |
|
|
if ((m->b & 3) != 1 && |
if ((m->xb & 3) != 1 && |
options_get_number(&wp->window->options, "mode-mouse") == 1) { |
options_get_number(&wp->window->options, "mode-mouse") == 1) { |
if (window_pane_set_mode(wp, &window_copy_mode) == 0) { |
if (window_pane_set_mode(wp, &window_copy_mode) == 0) { |
window_copy_init_from_pane(wp); |
window_copy_init_from_pane(wp); |
if (wp->mode->mouse != NULL) |
if (wp->mode->mouse != NULL) |
wp->mode->mouse(wp, NULL, m); |
wp->mode->mouse(wp, s, m); |
} |
} |
return; |
return; |
} |
} |