From a3af3505ef1eaec3c2696c7697117b5f45265bbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konsta=20Alaj=C3=A4rvi?= Date: Wed, 18 Sep 2024 10:17:44 +0300 Subject: [PATCH] Android: Fix Android keyboard hiding focused QtEditText MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update QtEditText Layout parameters to match the item sending the focus event while showing Android keyboard. Task-number: QTBUG-125323 Change-Id: Ie7f32d66807e4c1d308d49483d1e72dc25eaa76a Reviewed-by: Tinja Paavoseppä (cherry picked from commit 28df9a49776a88cb1a8e69348ae19a59b16a5b7e) --- .../jar/src/org/qtproject/qt/android/QtEditText.java | 6 +----- .../jar/src/org/qtproject/qt/android/QtInputDelegate.java | 3 +++ src/android/jar/src/org/qtproject/qt/android/QtWindow.java | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/android/jar/src/org/qtproject/qt/android/QtEditText.java b/src/android/jar/src/org/qtproject/qt/android/QtEditText.java index d00fc76d860..69126192169 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtEditText.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtEditText.java @@ -267,11 +267,7 @@ class QtEditText extends View break; case CursorHandleShowNormal: if (m_cursorHandle == null) { - // We pass this to the CursorHandle to use the QtEditText to calculate its - // position. This is OK as the QtEditText size matches the QtWindow size. - // If the size of the QtEditText is changed to not reflect the window's anymore, - // this should be changed to use getParent() instead of this. - m_cursorHandle = new CursorHandle((Activity) getContext(), this, + m_cursorHandle = new CursorHandle((Activity) getContext(), (View) getParent(), CursorHandle.IdCursorHandle, android.R.attr.textSelectHandle, false); } 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 3075d49ee03..c1ebeeee47d 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtInputDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtInputDelegate.java @@ -104,6 +104,9 @@ class QtInputDelegate implements QtInputConnection.QtInputConnectionListener, Qt return; m_currentEditText.setEditTextOptions(enterKeyType, inputHints); + + m_currentEditText.setLayoutParams(new QtLayout.LayoutParams(width, height, x, y)); + m_currentEditText.requestFocus(); m_currentEditText.postDelayed(() -> { 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 47d8086ecc5..1f06fef50a9 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtWindow.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtWindow.java @@ -44,8 +44,8 @@ class QtWindow extends QtLayout implements QtSurfaceInterface { if (!isForeignWindow) { m_editText = new QtEditText(context, listener); - addView(m_editText, new QtLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT)); + addView(m_editText, new QtLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT)); m_editText.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); } else { m_editText = null;