Instead of forcing mouse scroll to 1 in choose mode, scale it down

instead. Means modifier keys still increase the line count, just not as
much. Based on a diff from Marcel Partap.
pull/1/head
nicm 2014-05-08 07:54:47 +00:00
parent 189017c078
commit 94ccc6aeaa
3 changed files with 18 additions and 10 deletions

3
tmux.h
View File

@ -1130,6 +1130,9 @@ LIST_HEAD(tty_terms, tty_term);
#define MOUSE_WHEEL_UP 0 #define MOUSE_WHEEL_UP 0
#define MOUSE_WHEEL_DOWN 1 #define MOUSE_WHEEL_DOWN 1
/* Mouse wheel multipler. */
#define MOUSE_WHEEL_SCALE 3
/* Mouse event bits. */ /* Mouse event bits. */
#define MOUSE_EVENT_DOWN 0x1 #define MOUSE_EVENT_DOWN 0x1
#define MOUSE_EVENT_DRAG 0x2 #define MOUSE_EVENT_DRAG 0x2

View File

@ -752,11 +752,11 @@ tty_keys_mouse(struct tty *tty, const char *buf, size_t len, size_t *size)
if (b & MOUSE_MASK_SHIFT) if (b & MOUSE_MASK_SHIFT)
m->scroll = 1; m->scroll = 1;
else else
m->scroll = 3; m->scroll = MOUSE_WHEEL_SCALE;
if (b & MOUSE_MASK_META) if (b & MOUSE_MASK_META)
m->scroll *= 3; m->scroll *= MOUSE_WHEEL_SCALE;
if (b & MOUSE_MASK_CTRL) if (b & MOUSE_MASK_CTRL)
m->scroll *= 3; m->scroll *= MOUSE_WHEEL_SCALE;
b &= MOUSE_MASK_BUTTONS; b &= MOUSE_MASK_BUTTONS;
if (b == 0) if (b == 0)

View File

@ -721,17 +721,22 @@ window_choose_mouse(struct window_pane *wp, struct session *sess,
struct window_choose_mode_data *data = wp->modedata; struct window_choose_mode_data *data = wp->modedata;
struct screen *s = &data->screen; struct screen *s = &data->screen;
struct window_choose_mode_item *item; struct window_choose_mode_item *item;
u_int idx; u_int idx, i, n;
if (m->event == MOUSE_EVENT_WHEEL) { if (m->event == MOUSE_EVENT_WHEEL) {
/* /*
* Don't use m->scroll and just move line-by-line or it's * Multiple line scrolling by default is annoying, so scale
* annoying. * m->scroll back down.
*/ */
n = m->scroll;
if (n >= MOUSE_WHEEL_SCALE)
n /= MOUSE_WHEEL_SCALE;
for (i = 0; i < n; i++) {
if (m->wheel == MOUSE_WHEEL_UP) if (m->wheel == MOUSE_WHEEL_UP)
window_choose_key(wp, sess, KEYC_UP); window_choose_key(wp, sess, KEYC_UP);
else else
window_choose_key(wp, sess, KEYC_DOWN); window_choose_key(wp, sess, KEYC_DOWN);
}
return; return;
} }