From 02bccda8a037c62e42a836ea9fb30d75f26a73bd Mon Sep 17 00:00:00 2001 From: elasota Date: Tue, 3 Nov 2020 18:37:31 -0500 Subject: [PATCH] Re-enable text input when selecting a text box if OSK was dismissed --- AerofoilSDL/GpDisplayDriver_SDL_GL2.cpp | 5 +++++ PortabilityLayer/PLEditboxWidget.cpp | 3 +++ 2 files changed, 8 insertions(+) diff --git a/AerofoilSDL/GpDisplayDriver_SDL_GL2.cpp b/AerofoilSDL/GpDisplayDriver_SDL_GL2.cpp index aecb468..dfd4240 100644 --- a/AerofoilSDL/GpDisplayDriver_SDL_GL2.cpp +++ b/AerofoilSDL/GpDisplayDriver_SDL_GL2.cpp @@ -2022,6 +2022,11 @@ void GpDisplayDriver_SDL_GL2::Run() SDL_StopTextInput(); } + // Handle dismissal of on-screen keyboard + const bool isTextInputActuallyActive = SDL_IsTextInputActive(); + m_textInputEnabled = isTextInputActuallyActive; + m_properties.m_systemServices->SetTextInputEnabled(isTextInputActuallyActive); + GpDisplayDriverTickStatus_t tickStatus = PresentFrameAndSync(); if (tickStatus == GpDisplayDriverTickStatuses::kFatalFault || tickStatus == GpDisplayDriverTickStatuses::kApplicationTerminated) { diff --git a/PortabilityLayer/PLEditboxWidget.cpp b/PortabilityLayer/PLEditboxWidget.cpp index 28f73d0..41993b3 100644 --- a/PortabilityLayer/PLEditboxWidget.cpp +++ b/PortabilityLayer/PLEditboxWidget.cpp @@ -781,6 +781,9 @@ namespace PortabilityLayer if (mouseEvent.m_eventType == GpMouseEventTypes::kUp) { + // Re-enable text input if it was dismissed + PortabilityLayer::HostSystemServices::GetInstance()->SetTextInputEnabled(true); + m_caratScrollLocked = false; m_isDraggingSelection = false; return WidgetHandleStates::kDigested;