diff options
author | Kai Uwe Broulik <kde@privat.broulik.de> | 2015-03-17 14:26:35 +0100 |
---|---|---|
committer | Kai Uwe Broulik <kde@privat.broulik.de> | 2015-03-30 13:05:14 +0000 |
commit | cee040d75c6285f73c12e37a724ff4e84b41b104 (patch) | |
tree | 4365bd50e38fc07584ee93ce969d82a864fabe0d /src/quick | |
parent | 7380cf472e2e4c38ebd67c7a6e461c69b7a78151 (diff) |
Honor setFocusOnTouchRelease in QQuickTextInput
[ChangeLog][QtQuick][TextInput] SetFocusOnTouchRelease is honored
Change-Id: I0c5150465effadb7b1221250875aedf16a83bb2c
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 28 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput_p.h | 1 |
2 files changed, 20 insertions, 9 deletions
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index 1b7552201f..5c8c0cf823 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -1580,15 +1580,8 @@ void QQuickTextInput::mousePressEvent(QMouseEvent *event) int cursor = d->positionAt(event->localPos()); d->moveCursor(cursor, mark); - if (d->focusOnPress) { - bool hadActiveFocus = hasActiveFocus(); - forceActiveFocus(); -#ifndef QT_NO_IM - // re-open input panel on press if already focused - if (hasActiveFocus() && hadActiveFocus && !d->m_readOnly) - qGuiApp->inputMethod()->show(); -#endif - } + if (d->focusOnPress && !qGuiApp->styleHints()->setFocusOnTouchRelease()) + ensureActiveFocus(); event->setAccepted(true); } @@ -1638,6 +1631,10 @@ void QQuickTextInput::mouseReleaseEvent(QMouseEvent *event) } } #endif + + if (d->focusOnPress && qGuiApp->styleHints()->setFocusOnTouchRelease()) + ensureActiveFocus(); + if (!event->isAccepted()) QQuickImplicitSizeItem::mouseReleaseEvent(event); } @@ -1870,6 +1867,19 @@ void QQuickTextInput::invalidateFontCaches() d->m_textLayout.engine()->resetFontEngineCache(); } +void QQuickTextInput::ensureActiveFocus() +{ + Q_D(QQuickTextInput); + + bool hadActiveFocus = hasActiveFocus(); + forceActiveFocus(); +#ifndef QT_NO_IM + // re-open input panel on press if already focused + if (hasActiveFocus() && hadActiveFocus && !d->m_readOnly) + qGuiApp->inputMethod()->show(); +#endif +} + QSGNode *QQuickTextInput::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data) { Q_UNUSED(data); diff --git a/src/quick/items/qquicktextinput_p.h b/src/quick/items/qquicktextinput_p.h index 78e6a6be7e..3bcbe0fa25 100644 --- a/src/quick/items/qquicktextinput_p.h +++ b/src/quick/items/qquicktextinput_p.h @@ -303,6 +303,7 @@ Q_SIGNALS: private: void invalidateFontCaches(); + void ensureActiveFocus(); protected: void geometryChanged(const QRectF &newGeometry, |