Android: Fix the offset of the EditPopupMenu

Fix the offset of the EditPopupMenu on application window.
Issue caused by a5bb7b3ca5

Fixes: QTBUG-71900
Pick-to: 6.2 6.3 6.4
Change-Id: Ib95e1544fe91c273bc5317bd338a50a74fb1090a
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
Pekka Gehör 2022-06-23 09:20:32 +03:00
parent 7b2ae3faab
commit 526d62ee90

View File

@ -593,14 +593,25 @@ void QAndroidInputContext::updateSelectionHandles()
if (cpos == anchor || im->anchorRectangle().isNull()) {
auto curRect = cursorRectangle();
QPoint cursorPoint = qPlatformWindow->mapToGlobal(QPoint(curRect.x() + (curRect.width() / 2), curRect.y() + curRect.height()));
QPoint editMenuPoint(cursorPoint.x(), cursorPoint.y());
QPoint cursorPointGlobal = qPlatformWindow->mapToGlobal(
QPoint(curRect.x() + (curRect.width() / 2), curRect.y() + curRect.height()));
QPoint cursorPoint(curRect.center().x(), curRect.bottom());
int x = curRect.x();
int y = curRect.y();
// Use x and y for the editMenuPoint from the cursorPointGlobal when the cursor is in the Dialog
if (cursorPointGlobal != cursorPoint) {
x = cursorPointGlobal.x();
y = cursorPointGlobal.y();
}
QPoint editMenuPoint(x, y);
m_handleMode &= ShowEditPopup;
m_handleMode |= ShowCursor;
uint32_t buttons = readOnly ? 0 : EditContext::PasteButton;
if (!query.value(Qt::ImSurroundingText).toString().isEmpty())
buttons |= EditContext::SelectAllButton;
QtAndroidInput::updateHandles(m_handleMode, editMenuPoint, buttons, cursorPoint);
QtAndroidInput::updateHandles(m_handleMode, editMenuPoint, buttons, cursorPointGlobal);
// The VK is hidden, reset the timer
if (m_hideCursorHandleTimer.isActive())
m_hideCursorHandleTimer.start();