From 9368914ee782f6ea9d7ea8f6b28b9d87ffae8023 Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 31 Mar 2014 21:36:43 +0000 Subject: Add start-of-list, end-of-list, top-line and bottom-line in choice mode, from madmaverick9 at roxxmail dot eu, similar diff a few days later from Marcel Partap. --- window-choose.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'window-choose.c') diff --git a/window-choose.c b/window-choose.c index 0cf7f66b..bb881aa5 100644 --- a/window-choose.c +++ b/window-choose.c @@ -679,6 +679,29 @@ window_choose_key(struct window_pane *wp, unused struct session *sess, int key) window_choose_prompt_input(WINDOW_CHOOSE_GOTO_ITEM, "Goto Item", wp, key); break; + case MODEKEYCHOICE_STARTOFLIST: + data->selected = 0; + data->top = 0; + window_choose_redraw_screen(wp); + break; + case MODEKEYCHOICE_TOPLINE: + data->selected = data->top; + window_choose_redraw_screen(wp); + break; + case MODEKEYCHOICE_BOTTOMLINE: + data->selected = data->top + screen_size_y(s) - 1; + if (data->selected > items - 1) + data->selected = items - 1; + window_choose_redraw_screen(wp); + break; + case MODEKEYCHOICE_ENDOFLIST: + data->selected = items - 1; + if (screen_size_y(s) < items) + data->top = items - screen_size_y(s); + else + data->top = 0; + window_choose_redraw_screen(wp); + break; default: idx = window_choose_index_key(data, key); if (idx < 0 || (u_int) idx >= ARRAY_LENGTH(&data->list)) -- cgit From acef311fe356f408690e9f94727ed63a934b742f Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 3 Apr 2014 08:20:29 +0000 Subject: Work out mouse scroll wheel effect when the mouse is first detected and store it in struct mouse_event, reduce the scroll size the 3 but allow shift to reduce it to 1 and meta and ctrl to multiply by 3 if the terminal supports them, also support wheel in choose mode. From Marcel Partap. --- window-choose.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'window-choose.c') diff --git a/window-choose.c b/window-choose.c index bb881aa5..c354d46f 100644 --- a/window-choose.c +++ b/window-choose.c @@ -721,7 +721,17 @@ window_choose_mouse( struct window_choose_mode_data *data = wp->modedata; struct screen *s = &data->screen; struct window_choose_mode_item *item; - u_int idx; + u_int i, idx; + + if (m->event == MOUSE_EVENT_WHEEL) { + for (i = 0; i < m->scroll; i++) { + if (m->wheel == MOUSE_WHEEL_UP) + window_choose_key(wp, sess, KEYC_UP); + else + window_choose_key(wp, sess, KEYC_DOWN); + } + return; + } if (~m->event & MOUSE_EVENT_CLICK) return; -- cgit