diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquicktextedit.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 22 |
2 files changed, 13 insertions, 11 deletions
diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index 5456d3523a..79df5abd11 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -1477,6 +1477,7 @@ Handles the given mouse \a event. void QQuickTextEdit::mousePressEvent(QMouseEvent *event) { Q_D(QQuickTextEdit); + d->control->processEvent(event, QPointF(0, -d->yoff)); if (d->focusOnPress){ bool hadActiveFocus = hasActiveFocus(); forceActiveFocus(); @@ -1484,7 +1485,6 @@ void QQuickTextEdit::mousePressEvent(QMouseEvent *event) if (hasActiveFocus() && hadActiveFocus && !isReadOnly()) openSoftwareInputPanel(); } - d->control->processEvent(event, QPointF(0, -d->yoff)); if (!event->isAccepted()) QQuickImplicitSizeItem::mousePressEvent(event); } diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index 30271c770a..c9b2e7b41e 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -1444,13 +1444,9 @@ void QQuickTextInput::mousePressEvent(QMouseEvent *event) d->pressPos = event->localPos(); - if (d->focusOnPress) { - bool hadActiveFocus = hasActiveFocus(); - forceActiveFocus(); - // re-open input panel on press if already focused - if (hasActiveFocus() && hadActiveFocus && !d->m_readOnly) - openSoftwareInputPanel(); - } + if (d->sendMouseEventToInputContext(event)) + return; + if (d->selectByMouse) { setKeepMouseGrab(false); d->selectPressed = true; @@ -1463,12 +1459,18 @@ void QQuickTextInput::mousePressEvent(QMouseEvent *event) } } - if (d->sendMouseEventToInputContext(event)) - return; - bool mark = (event->modifiers() & Qt::ShiftModifier) && d->selectByMouse; int cursor = d->positionAt(event->localPos()); d->moveCursor(cursor, mark); + + if (d->focusOnPress) { + bool hadActiveFocus = hasActiveFocus(); + forceActiveFocus(); + // re-open input panel on press if already focused + if (hasActiveFocus() && hadActiveFocus && !d->m_readOnly) + openSoftwareInputPanel(); + } + event->setAccepted(true); } |