diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-04-13 09:46:15 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-04-13 09:46:15 +0200 |
commit | 4b72f48637a87c95deedcc501cd9cc8f717117fa (patch) | |
tree | 80f00ade2cc3f3845e0f309f39a2649040d203e3 /src/quick/items/qquicktextinput.cpp | |
parent | 3d30c6d7b40ce86f49bc7bdc5c2c74ce180bb3dd (diff) | |
parent | f7e1f7b2f1f1577fd94dfffb93ef15ded5d09031 (diff) |
Merge remote-tracking branch 'origin/5.5' into dev
Conflicts:
src/quick/util/qquickpixmapcache.cpp
tests/auto/quick/qquickwindow/BLACKLIST
Change-Id: Ie81612f2884f8ea508c48ba2735ec54ea1c2eca5
Diffstat (limited to 'src/quick/items/qquicktextinput.cpp')
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index c6a6bd9c45..db19f12f83 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -1398,15 +1398,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); } @@ -1456,6 +1449,10 @@ void QQuickTextInput::mouseReleaseEvent(QMouseEvent *event) } } #endif + + if (d->focusOnPress && qGuiApp->styleHints()->setFocusOnTouchRelease()) + ensureActiveFocus(); + if (!event->isAccepted()) QQuickImplicitSizeItem::mouseReleaseEvent(event); } @@ -1688,6 +1685,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); |