diff options
author | Fredia Huya-Kouadio <fhuya@meta.com> | 2023-05-25 20:26:33 -0700 |
---|---|---|
committer | Fredia Huya-Kouadio <fhuya@meta.com> | 2023-05-25 20:27:04 -0700 |
commit | 01ee00f710d7d3d8acf8b9d619b68b1649c6bd6e (patch) | |
tree | 61a5e72367845e3955e8e88836304613347c6859 /platform/android/java_godot_view_wrapper.cpp | |
parent | 2eec9a67d564b11326f44c5ef8b6b6f9aec251b9 (diff) | |
download | redot-engine-01ee00f710d7d3d8acf8b9d619b68b1649c6bd6e.tar.gz |
Improve touchpad and mouse support for the Android editor
- Fix issues with using a touchpad to click, drag, interact with the navigation controls, etc..
- Fix issues with panning with 2+ fingers
- Fix issues with using double-tap to magnify on the spatial editor
Diffstat (limited to 'platform/android/java_godot_view_wrapper.cpp')
-rw-r--r-- | platform/android/java_godot_view_wrapper.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/platform/android/java_godot_view_wrapper.cpp b/platform/android/java_godot_view_wrapper.cpp index b50d4870bd..a95f762e01 100644 --- a/platform/android/java_godot_view_wrapper.cpp +++ b/platform/android/java_godot_view_wrapper.cpp @@ -49,6 +49,8 @@ GodotJavaViewWrapper::GodotJavaViewWrapper(jobject godot_view) { _request_pointer_capture = env->GetMethodID(_cls, "requestPointerCapture", "()V"); _release_pointer_capture = env->GetMethodID(_cls, "releasePointerCapture", "()V"); } + + _can_capture_pointer = env->GetMethodID(_cls, "canCapturePointer", "()Z"); } bool GodotJavaViewWrapper::can_update_pointer_icon() const { @@ -56,7 +58,16 @@ bool GodotJavaViewWrapper::can_update_pointer_icon() const { } bool GodotJavaViewWrapper::can_capture_pointer() const { - return _request_pointer_capture != nullptr && _release_pointer_capture != nullptr; + // We can capture the pointer if the other jni capture method ids are initialized, + // and GodotView#canCapturePointer() returns true. + if (_request_pointer_capture != nullptr && _release_pointer_capture != nullptr && _can_capture_pointer != nullptr) { + JNIEnv *env = get_jni_env(); + ERR_FAIL_NULL_V(env, false); + + return env->CallBooleanMethod(_godot_view, _can_capture_pointer); + } + + return false; } void GodotJavaViewWrapper::request_pointer_capture() { |