diff options
| author | Petri Virkkunen <petri.virkkunen@qt.io> | 2024-07-26 14:23:29 +0300 |
|---|---|---|
| committer | Petri Virkkunen <petri.virkkunen@qt.io> | 2024-08-01 14:03:12 +0300 |
| commit | 1442a9ea479d197ed338f440d5106a7e195c4ee2 (patch) | |
| tree | f546e9ac4a0da677e9968b6886e3a8afa90c9492 /src | |
| parent | a624a7d00a925efd862bc3b84309a86f34291834 (diff) | |
Android: Set window focus based on window touch, not global focus parentage
Since QtEditText is no longer focused on QtWindow touch,
onGlobalFocusChange event is no longer triggered, and so we cannot get
the parent View (QtWindow) of the current global focus object and set
it as the focused QWindow.
Move QWindow focus setting to be done directly under QtWindow onTouched.
Pick-to: 6.8 6.7
Change-Id: I292f197c64d170aa2f15a3118e6f861b59c906f5
Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
Diffstat (limited to 'src')
4 files changed, 1 insertions, 20 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java index 1096ccf1b7d..428a1817ac9 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java @@ -149,7 +149,6 @@ class QtActivityDelegate extends QtActivityDelegateBase r.width(), kbHeight); return true; }); - registerGlobalFocusChangeListener(m_layout); m_inputDelegate.setEditPopupMenu(new EditPopupMenu(m_activity, m_layout)); } diff --git a/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegateBase.java b/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegateBase.java index 32b00856ea9..c99695e6dde 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegateBase.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegateBase.java @@ -108,23 +108,6 @@ abstract class QtActivityDelegateBase setUpLayout(); } - protected void registerGlobalFocusChangeListener(final View view) { - view.getViewTreeObserver().addOnGlobalFocusChangeListener(this::onGlobalFocusChanged); - } - - private void onGlobalFocusChanged(View oldFocus, View newFocus) { - if (newFocus instanceof QtEditText) { - final QtWindow newWindow = (QtWindow) newFocus.getParent(); - QtWindow.windowFocusChanged(true, newWindow.getId()); - } else { - int id = -1; - if (oldFocus instanceof QtEditText) { - final QtWindow oldWindow = (QtWindow) oldFocus.getParent(); - QtWindow.windowFocusChanged(false, oldWindow.getId()); - } - } - } - void hideSplashScreen() { hideSplashScreen(0); diff --git a/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java b/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java index 4cc6e683497..ce68a8fb1b3 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java @@ -165,8 +165,6 @@ class QtEmbeddedDelegate extends QtActivityDelegateBase { m_view = view; updateInputDelegate(); - if (m_view != null) - registerGlobalFocusChangeListener(m_view); } // QtEmbeddedViewInterface implementation end diff --git a/src/android/jar/src/org/qtproject/qt/android/QtWindow.java b/src/android/jar/src/org/qtproject/qt/android/QtWindow.java index e844a57987a..3bdbc592b86 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtWindow.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtWindow.java @@ -67,6 +67,7 @@ class QtWindow extends QtLayout implements QtSurfaceInterface { @Override public boolean onTouchEvent(MotionEvent event) { + windowFocusChanged(true, getId()); if (m_editText != null && m_inputConnectionListener != null) m_inputConnectionListener.onEditTextChanged(m_editText); |
