diff --git a/src/edit.c b/src/edit.c index 4ea7cbdcc2..bd6ac04db0 100644 --- a/src/edit.c +++ b/src/edit.c @@ -8878,6 +8878,9 @@ ins_mousescroll(dir) # ifdef FEAT_INS_EXPAND int did_scroll = FALSE; # endif +# ifdef FEAT_GUI_SCROLL_WHEEL_FORCE + int scroll_wheel_force = 0; +# endif tpos = curwin->w_cursor; @@ -8907,19 +8910,35 @@ ins_mousescroll(dir) ) # endif { +# ifdef FEAT_GUI_SCROLL_WHEEL_FORCE + if (gui.in_use && gui.scroll_wheel_force >= 1) + { + scroll_wheel_force = gui.scroll_wheel_force; + if (scroll_wheel_force > 1000) scroll_wheel_force = 1000; + } + else + scroll_wheel_force = dir >= 0 ? 3 : 6; +# endif if (dir == MSCR_DOWN || dir == MSCR_UP) { if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) scroll_redraw(dir, (long)(curwin->w_botline - curwin->w_topline)); else +# ifdef FEAT_GUI_SCROLL_WHEEL_FORCE + scroll_redraw(dir, scroll_wheel_force); +# else scroll_redraw(dir, 3L); +# endif } #ifdef FEAT_GUI else { int val, step = 6; +# ifdef FEAT_GUI_SCROLL_WHEEL_FORCE + step = scroll_wheel_force; +# endif if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) step = W_WIDTH(curwin); val = curwin->w_leftcol + (dir == MSCR_RIGHT ? -step : step); diff --git a/src/normal.c b/src/normal.c index b7e31b766e..45c0e8cb9f 100644 --- a/src/normal.c +++ b/src/normal.c @@ -4566,6 +4566,15 @@ nv_mousescroll(cap) curbuf = curwin->w_buffer; } # endif +# ifdef FEAT_GUI_SCROLL_WHEEL_FORCE + if (gui.in_use && gui.scroll_wheel_force >= 1) + { + scroll_wheel_force = gui.scroll_wheel_force; + if (scroll_wheel_force > 1000) scroll_wheel_force = 1000; + } + else + scroll_wheel_force = cap->arg >= 0 ? 3 : 6; +# endif if (cap->arg == MSCR_UP || cap->arg == MSCR_DOWN) { @@ -4575,8 +4584,13 @@ nv_mousescroll(cap) } else { +# ifdef FEAT_GUI_SCROLL_WHEEL_FORCE + cap->count1 = scroll_wheel_force; + cap->count0 = scroll_wheel_force; +# else cap->count1 = 3; cap->count0 = 3; +#endif nv_scroll_line(cap); } } @@ -4587,6 +4601,10 @@ nv_mousescroll(cap) if (!curwin->w_p_wrap) { int val, step = 6; + +# ifdef FEAT_GUI_SCROLL_WHEEL_FORCE + step = scroll_wheel_force; +# endif if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) step = W_WIDTH(curwin); val = curwin->w_leftcol + (cap->arg == MSCR_RIGHT ? -step : +step);