diff options
author | Vas Crabb <vas@vastheman.com> | 2016-11-23 12:48:41 +1100 |
---|---|---|
committer | Vas Crabb <vas@vastheman.com> | 2016-11-23 12:48:41 +1100 |
commit | 95254fb277e927adf36580e0822f5ce4f8267e49 (patch) | |
tree | dcea794c341b0f918e0b2f635805fa8c0dc1329e /src/frontend/mame/ui/menu.cpp | |
parent | 32c256eccc827d2708c6c270c5c59df4b8a6ae01 (diff) |
encapsulate mouse translation in the menu code, make more stuff const
Diffstat (limited to 'src/frontend/mame/ui/menu.cpp')
-rw-r--r-- | src/frontend/mame/ui/menu.cpp | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/src/frontend/mame/ui/menu.cpp b/src/frontend/mame/ui/menu.cpp index 6c8e3c9f720..eafc5e2d40f 100644 --- a/src/frontend/mame/ui/menu.cpp +++ b/src/frontend/mame/ui/menu.cpp @@ -237,6 +237,10 @@ menu::menu(mame_ui_manager &mui, render_container &container) , m_custombottom(0.0f) , m_resetpos(0) , m_resetref(nullptr) + , m_mouse_hit(false) + , m_mouse_button(false) + , m_mouse_x(-1.0f) + , m_mouse_y(-1.0f) { assert(m_global_state); // not calling init is bad @@ -602,16 +606,10 @@ void menu::draw(uint32_t flags) float const effective_left = visible_left + gutter_width; // locate mouse - mouse_hit = false; - mouse_button = false; if (!customonly && !noinput) - { - int32_t mouse_target_x, mouse_target_y; - render_target *mouse_target = machine().ui_input().find_mouse(&mouse_target_x, &mouse_target_y, &mouse_button); - if (mouse_target != nullptr) - if (mouse_target->map_point_container(mouse_target_x, mouse_target_y, container(), mouse_x, mouse_y)) - mouse_hit = true; - } + map_mouse(); + else + ignore_mouse(); // loop over visible lines hover = item.size() + 1; @@ -633,7 +631,7 @@ void menu::draw(uint32_t flags) float const line_y1 = line_y0 + line_height; // set the hover if this is our item - if (mouse_hit && line_x0 <= mouse_x && line_x1 > mouse_x && line_y0 <= mouse_y && line_y1 > mouse_y && is_selectable(pitem)) + if (mouse_in_rect(line_x0, line_y0, line_x1, line_y1) && is_selectable(pitem)) hover = itemnum; // if we're selected, draw with a different background @@ -862,6 +860,38 @@ void menu::draw_text_box() //------------------------------------------------- +// map_mouse - map mouse pointer location to menu +// coordinates +//------------------------------------------------- + +void menu::map_mouse() +{ + ignore_mouse(); + int32_t mouse_target_x, mouse_target_y; + render_target *const mouse_target = machine().ui_input().find_mouse(&mouse_target_x, &mouse_target_y, &m_mouse_button); + if (mouse_target) + { + if (mouse_target->map_point_container(mouse_target_x, mouse_target_y, container(), m_mouse_x, m_mouse_y)) + m_mouse_hit = true; + } +} + + +//------------------------------------------------- +// ignore_mouse - set members to ignore mouse +// input +//------------------------------------------------- + +void menu::ignore_mouse() +{ + m_mouse_hit = false; + m_mouse_button = false; + m_mouse_x = -1.0f; + m_mouse_y = -1.0f; +} + + +//------------------------------------------------- // handle_events - generically handle // input events for a menu //------------------------------------------------- |