From 3fb90871f6a78f3195e34eb595e0f2d622a7f781 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 24 Sep 2015 19:47:41 +0200 Subject: [PATCH] Create menu_input_ctl --- menu/drivers/glui.c | 10 +++++++--- menu/drivers/rgui.c | 9 +++++++-- menu/menu_input.c | 26 ++++++++++++++++++++++++++ menu/menu_input.h | 8 ++++++++ 4 files changed, 48 insertions(+), 5 deletions(-) diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index 02f7a72612..a14147a27d 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -245,12 +245,16 @@ static void glui_render(void) if (settings->menu.mouse.enable) { - int16_t mouse_y = menu_input_pointer_state(MENU_MOUSE_Y_AXIS); + bool mouse_scrolldown, mouse_scrollup; + int16_t mouse_y = menu_input_pointer_state(MENU_MOUSE_Y_AXIS); - if (menu_input->mouse.scrolldown) + menu_input_ctl(MENU_CTL_MOUSE_SCROLL_DOWN, &mouse_scrolldown); + menu_input_ctl(MENU_CTL_MOUSE_SCROLL_UP, &mouse_scrollup); + + if (mouse_scrolldown) menu->scroll_y += 10; - if (menu_input->mouse.scrollup) + if (mouse_scrollup) menu->scroll_y -= 10; menu_input->mouse.ptr = diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index cd0ed2881f..3054cc2922 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -454,11 +454,16 @@ static void rgui_render(void) if (settings->menu.mouse.enable) { - if (menu_input->mouse.scrolldown + bool mouse_scrolldown, mouse_scrollup; + + menu_input_ctl(MENU_CTL_MOUSE_SCROLL_DOWN, &mouse_scrolldown); + menu_input_ctl(MENU_CTL_MOUSE_SCROLL_UP, &mouse_scrollup); + + if (mouse_scrolldown && (menu_entries_get_start() < menu_entries_get_end() - RGUI_TERM_HEIGHT)) menu_entries_set_start(menu_entries_get_start() + 1); - if (menu_input->mouse.scrollup && (menu_entries_get_start() > 0)) + if (mouse_scrollup && (menu_entries_get_start() > 0)) menu_entries_set_start(menu_entries_get_start() - 1); menu_input->mouse.ptr = menu_input->mouse.y / 11 - 2 + menu_entries_get_start(); diff --git a/menu/menu_input.c b/menu/menu_input.c index 6d43f2f535..487826d62c 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -60,6 +60,32 @@ void menu_input_key_event(bool down, unsigned keycode, menu_entry_action(NULL, 0, MENU_ACTION_SEARCH); } +bool menu_input_ctl(enum menu_ctl_state state, void *data) +{ + menu_input_t *menu_input = menu_input_get_ptr(); + + if (!menu_input) + return false; + + switch (state) + { + case MENU_CTL_MOUSE_SCROLL_DOWN: + { + bool *ptr = (bool*)data; + *ptr = menu_input->mouse.scrolldown; + } + return true; + case MENU_CTL_MOUSE_SCROLL_UP: + { + bool *ptr = (bool*)data; + *ptr = menu_input->mouse.scrollup; + } + return true; + } + + return false; +} + void menu_input_key_start_line(const char *label, const char *label_setting, unsigned type, unsigned idx, input_keyboard_line_complete_t cb) diff --git a/menu/menu_input.h b/menu/menu_input.h index 1c2fc03da7..a103e5ee77 100644 --- a/menu/menu_input.h +++ b/menu/menu_input.h @@ -73,6 +73,12 @@ enum menu_input_mouse_state MENU_MOUSE_Y_AXIS }; +enum menu_ctl_state +{ + MENU_CTL_MOUSE_SCROLL_DOWN = 0, + MENU_CTL_MOUSE_SCROLL_UP +}; + enum mouse_action { MOUSE_ACTION_NONE = 0, @@ -215,6 +221,8 @@ int16_t menu_input_pointer_state(enum menu_input_pointer_state state); int16_t menu_input_mouse_state(enum menu_input_mouse_state state); +bool menu_input_ctl(enum menu_ctl_state state, void *data); + menu_input_t *menu_input_get_ptr(void); #ifdef __cplusplus