diff options
author | Ahmed El Khazari <ahmed.el.khazari@qt.io> | 2024-04-17 13:21:54 +0300 |
---|---|---|
committer | Ahmed El Khazari <ahmed.el.khazari@qt.io> | 2024-04-18 10:31:17 +0000 |
commit | a87764789feaa0575b9f4f0957bb7ec3e3b9a4d1 (patch) | |
tree | 844049ffb4632cda67e318a5c0e2845ed0058b34 | |
parent | d374dd6f84c74e6e0adf441f19af31a31074f7ec (diff) |
Android: Fix crash when selecting text on a TextField
The crash is due to absence of the helper class that manages the
selection in QtInputDelegate.
As a fix, updateInputDelegate() is introduced when setView(), where the
instantiation and clearance of EditPopupMenu is made. On the other hand,
the nullity of EditPopupMenu in QTEmbeddedDelegate is handled.
Fixes: QTBUG-122740
Pick-to: 6.7
Change-Id: Iac5cded7be7530dde8c739265fc9402670714d39
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
-rw-r--r-- | src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java | 10 | ||||
-rw-r--r-- | src/android/jar/src/org/qtproject/qt/android/QtInputDelegate.java | 11 |
2 files changed, 16 insertions, 5 deletions
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 9a34afa51b..1c0fd0f7d8 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java @@ -141,10 +141,20 @@ class QtEmbeddedDelegate extends QtActivityDelegateBase implements QtNative.AppS void setView(QtView view) { m_view = view; + updateInputDelegate(); if (m_view != null) registerGlobalFocusChangeListener(m_view); } + private void updateInputDelegate() { + if (m_view == null) { + m_inputDelegate.setEditPopupMenu(null); + return; + } + m_inputDelegate.setEditPopupMenu(new EditPopupMenu(m_activity, m_view)); + } + + public void setRootWindowRef(long ref) { m_rootWindowRef = ref; } 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 206b024877..11346ed715 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtInputDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtInputDelegate.java @@ -406,12 +406,13 @@ class QtInputDelegate implements QtInputConnection.QtInputConnectionListener { if (!QtClipboardManager.hasClipboardText(activity)) editButtons &= ~EditContextView.PASTE_BUTTON; - if ((mode & CursorHandleShowEdit) == CursorHandleShowEdit && editButtons != 0) { - m_editPopupMenu.setPosition(editX, editY, editButtons, - m_cursorHandle, m_leftSelectionHandle, m_rightSelectionHandle); - } else { - if (m_editPopupMenu != null) + if (m_editPopupMenu != null) { + if ((mode & CursorHandleShowEdit) == CursorHandleShowEdit && editButtons != 0) { + m_editPopupMenu.setPosition(editX, editY, editButtons, + m_cursorHandle, m_leftSelectionHandle, m_rightSelectionHandle); + } else { m_editPopupMenu.hide(); + } } } |