diff options
Diffstat (limited to 'src/plugins/platforms/android/qandroidinputcontext.cpp')
-rw-r--r-- | src/plugins/platforms/android/qandroidinputcontext.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/plugins/platforms/android/qandroidinputcontext.cpp b/src/plugins/platforms/android/qandroidinputcontext.cpp index c64e80479c..06a9c8c488 100644 --- a/src/plugins/platforms/android/qandroidinputcontext.cpp +++ b/src/plugins/platforms/android/qandroidinputcontext.cpp @@ -550,7 +550,9 @@ void QAndroidInputContext::updateSelectionHandles() auto curRect = im->cursorRectangle(); QPoint cursorPoint(curRect.center().x(), curRect.bottom()); - QtAndroidInput::updateHandles(m_cursorHandleShown, cursorPoint * pixelDensity); + QPoint editMenuPoint(curRect.center().x(), curRect.top()); + QtAndroidInput::updateHandles(m_cursorHandleShown, cursorPoint * pixelDensity, + editMenuPoint * pixelDensity); return; } @@ -562,6 +564,11 @@ void QAndroidInputContext::updateSelectionHandles() QPoint leftPoint(leftRect.bottomLeft().toPoint() * pixelDensity); QPoint righPoint(rightRect.bottomRight().toPoint() * pixelDensity); QtAndroidInput::updateHandles(CursorHandleShowSelection, leftPoint, righPoint); + + if (m_cursorHandleShown == CursorHandleShowPopup) { + // make sure the popup does not reappear when the selection menu closes + m_cursorHandleShown = QAndroidInputContext::CursorHandleNotShown; + } } /* @@ -612,6 +619,15 @@ void QAndroidInputContext::touchDown(int x, int y) } } +void QAndroidInputContext::longPress(int x, int y) +{ + if (m_focusObject && inputItemRectangle().contains(x, y)) { + // Show the paste menu if there is something to paste. + m_cursorHandleShown = QAndroidInputContext::CursorHandleShowPopup; + updateSelectionHandles(); + } +} + void QAndroidInputContext::keyDown() { if (m_cursorHandleShown) { |