diff --git a/menu/drivers/zarch.c b/menu/drivers/zarch.c index df818d9987..269cb2fe97 100644 --- a/menu/drivers/zarch.c +++ b/menu/drivers/zarch.c @@ -209,7 +209,7 @@ static bool zarch_zui_check_button_down(zui_t *zui, hitbox.y1 = y1; hitbox.y2 = y2; - if (menu_input_ctl(MENU_INPUT_CTL_CHECK_INSIDE_HITBOX, &hitbox)) + if (menu_input_mouse_check_vector_inside_hitbox(&hitbox)) zui->item.hot = id; if ( zui->item.hot == id @@ -233,7 +233,7 @@ static bool zarch_zui_check_button_up(zui_t *zui, hitbox.y1 = y1; hitbox.y2 = y2; - if (menu_input_ctl(MENU_INPUT_CTL_CHECK_INSIDE_HITBOX, &hitbox)) + if (menu_input_mouse_check_vector_inside_hitbox(&hitbox)) zui->item.hot = id; if ( zui->item.active == id diff --git a/menu/menu_input.c b/menu/menu_input.c index 8722c1b3a7..aea596e404 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -609,6 +609,20 @@ static bool menu_input_key_bind_iterate(char *s, size_t len) return false; } +bool menu_input_mouse_check_vector_inside_hitbox(menu_input_ctx_hitbox_t *hitbox) +{ + int16_t mouse_x = menu_input_mouse_state(MENU_MOUSE_X_AXIS); + int16_t mouse_y = menu_input_mouse_state(MENU_MOUSE_Y_AXIS); + bool inside_hitbox = + (mouse_x >= hitbox->x1) + && (mouse_x <= hitbox->x2) + && (mouse_y >= hitbox->y1) + && (mouse_y <= hitbox->y2) + ; + + return inside_hitbox; +} + bool menu_input_ctl(enum menu_input_ctl_state state, void *data) { static char menu_input_keyboard_label_setting[256]; @@ -633,22 +647,6 @@ bool menu_input_ctl(enum menu_input_ctl_state state, void *data) menu_input->binds.last = lim->max; } break; - case MENU_INPUT_CTL_CHECK_INSIDE_HITBOX: - { - menu_input_ctx_hitbox_t *hitbox = (menu_input_ctx_hitbox_t*)data; - int16_t mouse_x = menu_input_mouse_state(MENU_MOUSE_X_AXIS); - int16_t mouse_y = menu_input_mouse_state(MENU_MOUSE_Y_AXIS); - bool inside_hitbox = - (mouse_x >= hitbox->x1) - && (mouse_x <= hitbox->x2) - && (mouse_y >= hitbox->y1) - && (mouse_y <= hitbox->y2) - ; - - if (!inside_hitbox) - return false; - } - break; case MENU_INPUT_CTL_DEINIT: memset(menu_input, 0, sizeof(menu_input_t)); pointer_dragging = false; diff --git a/menu/menu_input.h b/menu/menu_input.h index b8cef6817b..7b7a8b8a26 100644 --- a/menu/menu_input.h +++ b/menu/menu_input.h @@ -87,7 +87,6 @@ enum menu_input_ctl_state MENU_INPUT_CTL_UNSET_KEYBOARD_LABEL_SETTING, MENU_INPUT_CTL_SEARCH_START, MENU_INPUT_CTL_DEINIT, - MENU_INPUT_CTL_CHECK_INSIDE_HITBOX, MENU_INPUT_CTL_BIND_NONE, MENU_INPUT_CTL_BIND_SINGLE, MENU_INPUT_CTL_BIND_ALL, @@ -138,6 +137,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_mouse_check_vector_inside_hitbox(menu_input_ctx_hitbox_t *hitbox); + void menu_input_key_end_line(void); bool menu_input_ctl(enum menu_input_ctl_state state, void *data);