Plan cursor visibility in app core

This commit is contained in:
2026-06-03 03:47:28 +02:00
parent 5ac807c6bd
commit 5ee2dd271c
9 changed files with 125 additions and 4 deletions

View File

@@ -19,6 +19,11 @@ enum class VirtualKeyboardAction {
hide_keyboard,
};
enum class CursorVisibilityAction {
show_cursor,
hide_cursor,
};
[[nodiscard]] constexpr PickedPathAction plan_picked_path(std::string_view path) noexcept
{
return path.empty()
@@ -40,4 +45,11 @@ enum class VirtualKeyboardAction {
: VirtualKeyboardAction::hide_keyboard;
}
[[nodiscard]] constexpr CursorVisibilityAction plan_cursor_visibility(bool visible) noexcept
{
return visible
? CursorVisibilityAction::show_cursor
: CursorVisibilityAction::hide_cursor;
}
}

View File

@@ -27,6 +27,14 @@ void invoke_picked_path_if_selected(
: action == pp::app::VirtualKeyboardAction::hide_keyboard;
}
[[nodiscard]] bool should_dispatch_cursor_visibility(bool visible) noexcept
{
const auto action = pp::app::plan_cursor_visibility(visible);
return visible
? action == pp::app::CursorVisibilityAction::show_cursor
: action == pp::app::CursorVisibilityAction::hide_cursor;
}
}
#ifdef __ANDROID__
@@ -120,6 +128,9 @@ void App::resize(float w, float h)
void App::show_cursor()
{
if (!should_dispatch_cursor_visibility(true))
return;
#ifdef _WIN32
win32_show_cursor(true);
#elif __OSX__
@@ -129,6 +140,9 @@ void App::show_cursor()
void App::hide_cursor()
{
if (!should_dispatch_cursor_visibility(false))
return;
#ifdef _WIN32
win32_show_cursor(false);
#elif __OSX__