From 898956256a0d08884beb61c30e9f6881ea12740e Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Sun, 6 Jul 2025 23:18:58 +0200 Subject: Workaround Godot editor not implementing setSelection() (#1033) This was tested against: org.godotengine.editor.v3 org.godotengine.editor.v4--- srcs/juloo.keyboard2/KeyEventHandler.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'srcs') diff --git a/srcs/juloo.keyboard2/KeyEventHandler.java b/srcs/juloo.keyboard2/KeyEventHandler.java index 3c95f3d..33089d9 100644 --- a/srcs/juloo.keyboard2/KeyEventHandler.java +++ b/srcs/juloo.keyboard2/KeyEventHandler.java @@ -41,12 +41,7 @@ public final class KeyEventHandler public void started(EditorInfo info) { _autocap.started(info, _recv.getCurrentInputConnection()); - // Workaround a bug in Acode, which answers to [getExtractedText] but do - // not react to [setSelection] while returning [true]. - // Note: Using & to workaround a bug in Acode, which sets several - // variations at once. - _move_cursor_force_fallback = (info.inputType & InputType.TYPE_MASK_VARIATION & - InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0; + _move_cursor_force_fallback = should_move_cursor_force_fallback(info); } /** Selection has been updated. */ @@ -473,6 +468,17 @@ public final class KeyEventHandler return (conn.getSelectedText(0) != null); } + /** Workaround some apps which answers to [getExtractedText] but do not react + to [setSelection] while returning [true]. */ + boolean should_move_cursor_force_fallback(EditorInfo info) + { + // This catch Acode: which sets several variations at once. + if ((info.inputType & InputType.TYPE_MASK_VARIATION & InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0) + return true; + // Godot editor: Doesn't handle setSelection() but returns true. + return info.packageName.startsWith("org.godotengine.editor"); + } + public static interface IReceiver { public void handle_event_key(KeyValue.Event ev); -- cgit v1.2.3