Compare commits

...

1 Commits

Author SHA1 Message Date
Jules Aguillon
50b986ef28 Workaround Godot editor not implementing setSelection()
Some checks failed
Make Apk CI / Build-Apk (push) Has been cancelled
Check layouts / check_layout.output (push) Has been cancelled
Check layouts / Generated files (push) Has been cancelled
This was tested against:

    org.godotengine.editor.v3
    org.godotengine.editor.v4
2025-07-06 21:56:33 +02:00

View File

@@ -41,12 +41,7 @@ public final class KeyEventHandler
public void started(EditorInfo info) public void started(EditorInfo info)
{ {
_autocap.started(info, _recv.getCurrentInputConnection()); _autocap.started(info, _recv.getCurrentInputConnection());
// Workaround a bug in Acode, which answers to [getExtractedText] but do _move_cursor_force_fallback = should_move_cursor_force_fallback(info);
// 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;
} }
/** Selection has been updated. */ /** Selection has been updated. */
@@ -473,6 +468,17 @@ public final class KeyEventHandler
return (conn.getSelectedText(0) != null); 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 static interface IReceiver
{ {
public void handle_event_key(KeyValue.Event ev); public void handle_event_key(KeyValue.Event ev);