ImDebugger: Route the soft keyboard through the System request layer

Instead of a hook and four Android_* functions declared in
ImDebugger.cpp, the debugger calls System_SetSoftKeyboardForced(), and
the platform reports a closed keyboard with
UIMessage::SOFT_KEYBOARD_HIDDEN.

"Keep keyboard after switching apps" is passed along with the request,
and the activity's onStop ends a keyboard that shouldn't persist, so the
native side no longer tracks app pauses.

The debugger is now also told when it's hidden. Frame() isn't called
then, so hiding it with the hotkey used to leave the keyboard up.

The keyboard button and its Misc menu options are only shown when
SYSPROP_KEYBOARD_IS_SOFT is set, which Android now reports too. iOS and
UWP on Xbox report it as well, but don't implement the request yet.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Henrik RydgårdandClaude Opus 5.5 committed 2026-10-26 16:36:49 +01:00
1 parent 1c1b7c9f50
commit 3c398657df
9 files changed
+83 -124

No files matched your search

+8
View File
@@ -440,6 +440,9 @@ void runImDebugger(Draw::DrawContext *draw) {
} else {
uiContext->SetOverrideScreenFrame(nullptr);
SetOverrideScreenFrame(nullptr);
if (imDebugger_) {
imDebugger_->OnHidden();
}
}
// Enable text input (needed for KeyInputFlags::CHAR events) only while an imgui text field is active.
@@ -1519,6 +1522,11 @@ bool HandleGlobalMessage(UIMessage message, const std::string &value) {
} else if (message == UIMessage::SAVE_FRAME_DUMP) {
SaveFrameDump();
return true;
} else if (message == UIMessage::SOFT_KEYBOARD_HIDDEN) {
if (imDebugger_) {
imDebugger_->OnSoftKeyboardHidden();
}
return true;
} else {
return false;
}