From 0f3a9e4ced3bd70754e5add15593582dced52678 Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 6 Aug 2024 12:24:58 +0200 Subject: ui pointer options: allow 0.0s hide delay to disable pointer --- src/frontend/mame/ui/ui.cpp | 2 +- src/frontend/mame/ui/videoopt.cpp | 29 ++++++++++++++++------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/frontend/mame/ui/ui.cpp b/src/frontend/mame/ui/ui.cpp index 2f0a2388c9f..aba04366d22 100644 --- a/src/frontend/mame/ui/ui.cpp +++ b/src/frontend/mame/ui/ui.cpp @@ -455,7 +455,7 @@ void mame_ui_manager::config_load_pointers( { auto const timeout(targetnode->get_attribute_float("activity_timeout", -1.0F)); auto const ms(std::lround(timeout * 1000.0F)); - if ((100 <= ms) && (10'000 >= ms)) + if ((0 <= ms) && (10'000 >= ms)) { m_pointer_options[index].timeout = std::chrono::milliseconds(ms); if (config_type::SYSTEM == cfg_type) diff --git a/src/frontend/mame/ui/videoopt.cpp b/src/frontend/mame/ui/videoopt.cpp index 8f1dd1e7b62..e8a01c17391 100644 --- a/src/frontend/mame/ui/videoopt.cpp +++ b/src/frontend/mame/ui/videoopt.cpp @@ -205,17 +205,20 @@ void menu_video_options::populate() bool const hide = ui().hide_inactive_pointers(m_target.index()); if (hide) { - int const precision = (timeout.count() % 10) ? 3 : (timeout.count() % 100) ? 2 : 1; - item_append( - _("Hide Inactive Pointers After Delay"), - util::string_format(_("%1$.*2$f s"), timeout.count() * 1e-3, precision), - ((timeout > std::chrono::milliseconds(100)) ? FLAG_LEFT_ARROW : 0) | FLAG_RIGHT_ARROW, - reinterpret_cast(ITEM_POINTERTIMEOUT)); + if (timeout.count()) + { + int const precision = (timeout.count() % 10) ? 3 : (timeout.count() % 100) ? 2 : 1; + item_append( + _("Hide Inactive Pointers After Delay"), + util::string_format(_("%1$.*2$f s"), timeout.count() * 1e-3, precision), + ((timeout >= std::chrono::milliseconds(100)) ? FLAG_LEFT_ARROW : 0) | FLAG_RIGHT_ARROW, + reinterpret_cast(ITEM_POINTERTIMEOUT)); + } + else + item_append(_("Hide Inactive Pointers After Delay"), _("Always"), FLAG_RIGHT_ARROW, reinterpret_cast(ITEM_POINTERTIMEOUT)); } else - { item_append(_("Hide Inactive Pointers After Delay"), _("Never"), FLAG_LEFT_ARROW, reinterpret_cast(ITEM_POINTERTIMEOUT)); - } } item_append(menu_item_type::SEPARATOR); @@ -358,13 +361,13 @@ bool menu_video_options::handle(event const *ev) } else { - bool const shift_pressed = machine().input().code_pressed(KEYCODE_LSHIFT) || machine().input().code_pressed(KEYCODE_RSHIFT); - std::chrono::milliseconds const increment(shift_pressed ? 100 : 1'000); auto timeout = ui().pointer_activity_timeout(m_target.index()); - auto const remainder = timeout % increment; - timeout -= remainder.count() ? remainder : increment; - if (std::chrono::milliseconds(100) <= timeout) + if (timeout >= std::chrono::milliseconds(100)) { + bool const shift_pressed = machine().input().code_pressed(KEYCODE_LSHIFT) || machine().input().code_pressed(KEYCODE_RSHIFT); + std::chrono::milliseconds const increment(shift_pressed ? 100 : 1'000); + auto const remainder = timeout % increment; + timeout -= remainder.count() ? remainder : increment; ui().set_pointer_activity_timeout(m_target.index(), timeout); changed = true; } -- cgit v1.2.3