Android: Hide handler(s) if the cursor is not visible anymore

On Android if the edit control is bigger than the remaining screen we resize it, this caused the
handler(s) to remain outside the control.

A better fix will be to ensure that the cursor/selection remains visible when the control is resized
but I don't know if this is the desired behavior on all platforms.

Task-number: QTBUG-62994
Task-number: QTBUG-58700
Change-Id: If43eb7bc1ecde426697694a8f26118e95fccb80c
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
bb10
BogDan Vatra 2017-12-13 15:00:36 +02:00
parent b1a58b20ae
commit 6b1ecb1904
1 changed files with 10 additions and 0 deletions

View File

@ -438,6 +438,16 @@ QAndroidInputContext::QAndroidInputContext()
QObject::connect(QGuiApplication::inputMethod(), &QInputMethod::cursorRectangleChanged,
this, &QAndroidInputContext::updateSelectionHandles);
QObject::connect(QGuiApplication::inputMethod(), &QInputMethod::anchorRectangleChanged,
this, &QAndroidInputContext::updateSelectionHandles);
QObject::connect(QGuiApplication::inputMethod(), &QInputMethod::inputItemClipRectangleChanged, this, [this]{
auto im = qGuiApp->inputMethod();
if (!im->inputItemClipRectangle().contains(im->anchorRectangle()) ||
!im->inputItemClipRectangle().contains(im->cursorRectangle())) {
m_cursorHandleShown = CursorHandleNotShown;
updateSelectionHandles();
}
});
}
QAndroidInputContext::~QAndroidInputContext()