aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
authorKai Uwe Broulik <kde@privat.broulik.de>2015-03-17 14:26:35 +0100
committerKai Uwe Broulik <kde@privat.broulik.de>2015-03-30 13:05:14 +0000
commitcee040d75c6285f73c12e37a724ff4e84b41b104 (patch)
tree4365bd50e38fc07584ee93ce969d82a864fabe0d /src/quick
parent7380cf472e2e4c38ebd67c7a6e461c69b7a78151 (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.cpp28
-rw-r--r--src/quick/items/qquicktextinput_p.h1
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,