summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPetri Virkkunen <petri.virkkunen@qt.io>2024-07-26 14:23:29 +0300
committerPetri Virkkunen <petri.virkkunen@qt.io>2024-08-01 14:03:12 +0300
commit1442a9ea479d197ed338f440d5106a7e195c4ee2 (patch)
treef546e9ac4a0da677e9968b6886e3a8afa90c9492 /src
parenta624a7d00a925efd862bc3b84309a86f34291834 (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')
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java1
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtActivityDelegateBase.java17
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java2
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtWindow.java1
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);