From 8c9e5db8165c5faa92fafed8bbbcbc44e77ca2b5 Mon Sep 17 00:00:00 2001 From: David Vazgenovich Shakaryan Date: Wed, 21 Jan 2026 22:57:26 -0800 Subject: keep offset when scrolling with mouse wheel --- main.lua | 56 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 48 insertions(+), 8 deletions(-) diff --git a/main.lua b/main.lua index f3a1915..521c0d5 100644 --- a/main.lua +++ b/main.lua @@ -176,6 +176,26 @@ local function cursor_page_down() {keep_offset = true, margin = config.scroll_margin}) end +local function cursor_wheel_up() + set_cursor(state:menu().cursor - 1, {keep_offset = true}) +end + +local function cursor_wheel_down() + set_cursor(state:menu().cursor + 1, {keep_offset = true}) +end + +local function cursor_wheel_page_up() + set_cursor( + state:menu().cursor - osd:menu_lines(state), + {keep_offset = true}) +end + +local function cursor_wheel_page_down() + set_cursor( + state:menu().cursor + osd:menu_lines(state), + {keep_offset = true}) +end + local function cursor_to_object(id) for i, v in ipairs(state:menu().options) do if v.id == id then @@ -239,6 +259,26 @@ local function move_option_page_down() {keep_offset = true, margin = config.scroll_margin}) end +local function move_option_wheel_up() + move_option(state:menu().cursor - 1, {keep_offset = true}) +end + +local function move_option_wheel_down() + move_option(state:menu().cursor + 1, {keep_offset = true}) +end + +local function move_option_wheel_page_up() + move_option( + state:menu().cursor - osd:menu_lines(state), + {keep_offset = true}) +end + +local function move_option_wheel_page_down() + move_option( + state:menu().cursor + osd:menu_lines(state), + {keep_offset = true}) +end + local function sort_options(options) local scores = {} for _, v in ipairs(options) do @@ -1187,10 +1227,10 @@ binding_state.mappings.MENU = { ['PGDWN'] = {cursor_page_down, 'repeat'}, ['HOME'] = {cursor_start}, ['END'] = {cursor_end}, - ['WHEEL_UP'] = {cursor_up, 'repeat'}, - ['WHEEL_DOWN'] = {cursor_down, 'repeat'}, - ['Shift+WHEEL_UP'] = {cursor_page_up, 'repeat'}, - ['Shift+WHEEL_DOWN'] = {cursor_page_down, 'repeat'}, + ['WHEEL_UP'] = {cursor_wheel_up, 'repeat'}, + ['WHEEL_DOWN'] = {cursor_wheel_down, 'repeat'}, + ['Shift+WHEEL_UP'] = {cursor_wheel_page_up, 'repeat'}, + ['Shift+WHEEL_DOWN'] = {cursor_wheel_page_down, 'repeat'}, ['Alt+k'] = {move_option_up, 'repeat'}, ['Alt+j'] = {move_option_down, 'repeat'}, @@ -1204,10 +1244,10 @@ binding_state.mappings.MENU = { ['Alt+PGDWN'] = {move_option_page_down, 'repeat'}, ['Alt+HOME'] = {move_option_start}, ['Alt+END'] = {move_option_end}, - ['Alt+WHEEL_UP'] = {move_option_up, 'repeat'}, - ['Alt+WHEEL_DOWN'] = {move_option_down, 'repeat'}, - ['Shift+Alt+WHEEL_UP'] = {move_option_page_up, 'repeat'}, - ['Shift+Alt+WHEEL_DOWN'] = {move_option_page_down, 'repeat'}, + ['Alt+WHEEL_UP'] = {move_option_wheel_up, 'repeat'}, + ['Alt+WHEEL_DOWN'] = {move_option_wheel_down, 'repeat'}, + ['Shift+Alt+WHEEL_UP'] = {move_option_wheel_page_up, 'repeat'}, + ['Shift+Alt+WHEEL_DOWN'] = {move_option_wheel_page_down, 'repeat'}, } binding_state.mappings.SEARCH = { -- cgit v1.2.3-70-g09d2