From 3d01456b100daa68cbbc0735b8c2cd30df07c65e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tinja=20Paavosepp=C3=A4?= Date: Thu, 8 Feb 2024 09:35:46 +0200 Subject: [PATCH] Android: Request QtEditText focus when its window is touched This allows switching focus between different Qt windows, which combined with the previous changes enables keyboard focus for child windows. Task-number: QTBUG-118139 Change-Id: I4b237166dee264a22b2e3dd1ca4d82e0cfce376b Reviewed-by: Assam Boudjelthia (cherry picked from commit e703feea40108cdd11f8f0270cc82c2aa0e691cd) Reviewed-by: Qt Cherry-pick Bot --- .../src/org/qtproject/qt/android/QtActivityDelegate.java | 1 - .../jar/src/org/qtproject/qt/android/QtInputDelegate.java | 1 - .../jar/src/org/qtproject/qt/android/QtWindow.java | 8 +------- 3 files changed, 1 insertion(+), 9 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 25ac59ec32d..482ad2abd58 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java @@ -331,7 +331,6 @@ class QtActivityDelegate extends QtActivityDelegateBase m_topLevelWindows.put(window.getId(), window); if (!m_splashScreenSticky) hideSplashScreen(); - m_inputDelegate.setFocusedView(window.getQtEditText()); }); } diff --git a/src/android/jar/src/org/qtproject/qt/android/QtInputDelegate.java b/src/android/jar/src/org/qtproject/qt/android/QtInputDelegate.java index f11791ea09f..2bdfa73d6d5 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtInputDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtInputDelegate.java @@ -214,7 +214,6 @@ class QtInputDelegate { return; setEditTextOptions(enterKeyType, inputHints); - m_currentEditText.requestFocus(); m_currentEditText.postDelayed(() -> { m_imm.showSoftInput(m_currentEditText, 0, new ResultReceiver(new Handler()) { 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 2f8f9cfbdcd..e5551f0d3df 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtWindow.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtWindow.java @@ -45,13 +45,6 @@ class QtWindow extends QtLayout implements QtSurfaceInterface { }); } - // TODO this is a temporary workaround to be able to set the input delegate current edit text, - // the next two patches make this redundant - QtEditText getQtEditText() - { - return m_editText; - } - void setVisible(boolean visible) { QtNative.runAction(() -> { if (visible) @@ -70,6 +63,7 @@ class QtWindow extends QtLayout implements QtSurfaceInterface { @Override public boolean onTouchEvent(MotionEvent event) { + m_editText.requestFocus(); event.setLocation(event.getX() + getX(), event.getY() + getY()); QtInputDelegate.sendTouchEvent(event, getId()); m_gestureDetector.onTouchEvent(event);