aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPekka Vuorela <pekka.ta.vuorela@nokia.com>2012-03-16 16:21:53 +0200
committerQt by Nokia <qt-info@nokia.com>2012-03-27 16:03:16 +0200
commitfc1d66130b9d298be7bc65656b96aa0bc6192829 (patch)
tree875b4b148e5919333f12568eba5addfd9e5128bd
parentffdbf216dc80b3d781307bb6b4b7150281c874a3 (diff)
TextInput to use password mask delay if platform style defines one
Change-Id: I05b98db2d7855f29b11749524a74e04a71178347 Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
-rw-r--r--src/quick/items/qquicktextinput.cpp31
-rw-r--r--src/quick/items/qquicktextinput_p_p.h4
-rw-r--r--tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp9
3 files changed, 14 insertions, 30 deletions
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp
index f2da67bae7..ccd7ff1673 100644
--- a/src/quick/items/qquicktextinput.cpp
+++ b/src/quick/items/qquicktextinput.cpp
@@ -62,10 +62,6 @@ QT_BEGIN_NAMESPACE
DEFINE_BOOL_CONFIG_OPTION(qmlDisableDistanceField, QML_DISABLE_DISTANCEFIELD)
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
-static const int qt_passwordEchoDelay = QT_GUI_PASSWORD_ECHO_DELAY;
-#endif
-
/*!
\qmlclass TextInput QQuickTextInput
\inqmlmodule QtQuick 2
@@ -1929,11 +1925,11 @@ void QQuickTextInput::redo()
void QQuickTextInput::insert(int position, const QString &text)
{
Q_D(QQuickTextInput);
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
- if (d->m_echoMode == QQuickTextInput::Password)
- d->m_passwordEchoTimer.start(qt_passwordEchoDelay, this);
-#endif
-
+ if (d->m_echoMode == QQuickTextInput::Password) {
+ int delay = qGuiApp->styleHints()->passwordMaskDelay();
+ if (delay > 0)
+ d->m_passwordEchoTimer.start(delay, this);
+ }
if (position < 0 || position > d->m_text.length())
return;
@@ -2484,11 +2480,7 @@ void QQuickTextInput::itemChange(ItemChange change, const ItemChangeData &value)
if (change == ItemActiveFocusHasChanged) {
bool hasFocus = value.boolValue;
setCursorVisible(hasFocus); // ### refactor: && d->canvas && d->canvas->hasFocus()
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
if (!hasFocus && (d->m_passwordEchoEditing || d->m_passwordEchoTimer.isActive())) {
-#else
- if (!hasFocus && d->m_passwordEchoEditing) {
-#endif
d->updatePasswordEchoEditing(false);//QQuickTextInputPrivate sets it on key events, but doesn't deal with focus events
}
@@ -2660,7 +2652,6 @@ void QQuickTextInputPrivate::updateDisplayText(bool forceUpdate)
if (m_echoMode == QQuickTextInput::Password) {
str.fill(m_passwordCharacter);
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
if (m_passwordEchoTimer.isActive() && m_cursor > 0 && m_cursor <= m_text.length()) {
int cursor = m_cursor - 1;
QChar uc = m_text.at(cursor);
@@ -2673,7 +2664,6 @@ void QQuickTextInputPrivate::updateDisplayText(bool forceUpdate)
str[cursor - 1] = uc;
}
}
-#endif
} else if (m_echoMode == QQuickTextInput::PasswordEchoOnEdit && !m_passwordEchoEditing) {
str.fill(m_passwordCharacter);
}
@@ -3333,11 +3323,12 @@ void QQuickTextInputPrivate::addCommand(const Command &cmd)
*/
void QQuickTextInputPrivate::internalInsert(const QString &s)
{
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
Q_Q(QQuickTextInput);
- if (m_echoMode == QQuickTextInput::Password)
- m_passwordEchoTimer.start(qt_passwordEchoDelay, q);
-#endif
+ if (m_echoMode == QQuickTextInput::Password) {
+ int delay = qGuiApp->styleHints()->passwordMaskDelay();
+ if (delay > 0)
+ m_passwordEchoTimer.start(delay, q);
+ }
if (hasSelectedText())
addCommand(Command(SetSelection, m_cursor, 0, m_selstart, m_selend));
if (m_maskData) {
@@ -3962,11 +3953,9 @@ void QQuickTextInput::timerEvent(QTimerEvent *event)
d->m_blinkStatus = !d->m_blinkStatus;
d->updateType = QQuickTextInputPrivate::UpdatePaintNode;
update();
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
} else if (event->timerId() == d->m_passwordEchoTimer.timerId()) {
d->m_passwordEchoTimer.stop();
d->updateDisplayText();
-#endif
}
}
diff --git a/src/quick/items/qquicktextinput_p_p.h b/src/quick/items/qquicktextinput_p_p.h
index 3bd34b2661..74efdcf469 100644
--- a/src/quick/items/qquicktextinput_p_p.h
+++ b/src/quick/items/qquicktextinput_p_p.h
@@ -202,9 +202,7 @@ public:
QColor selectionColor;
QColor selectedTextColor;
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
QBasicTimer m_passwordEchoTimer;
-#endif
int lastSelectionStart;
int lastSelectionEnd;
int m_cursor;
@@ -378,9 +376,7 @@ public:
void updatePasswordEchoEditing(bool editing);
void cancelPasswordEchoTimer() {
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
m_passwordEchoTimer.stop();
-#endif
}
Qt::LayoutDirection layoutDirection() const {
diff --git a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
index 1c8bff9d69..8577d43d26 100644
--- a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
+++ b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
@@ -158,9 +158,7 @@ private slots:
void focusOutClearSelection();
void echoMode();
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
void passwordEchoDelay();
-#endif
void geometrySignals();
void contentSize();
@@ -2716,9 +2714,11 @@ void tst_qquicktextinput::echoMode()
QCOMPARE(input->inputMethodQuery(Qt::ImSurroundingText).toString(), initial);
}
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
void tst_qquicktextinput::passwordEchoDelay()
{
+ int maskDelay = qGuiApp->styleHints()->passwordMaskDelay();
+ if (maskDelay <= 0)
+ QSKIP("No mask delay in use");
QQuickView canvas(testFileUrl("echoMode.qml"));
canvas.show();
canvas.requestActivateWindow();
@@ -2747,7 +2747,7 @@ void tst_qquicktextinput::passwordEchoDelay()
QCOMPARE(input->displayText(), QString(4, fillChar));
QTest::keyPress(&canvas, '4');
QCOMPARE(input->displayText(), QString(4, fillChar) + QLatin1Char('4'));
- QTest::qWait(QT_GUI_PASSWORD_ECHO_DELAY);
+ QTest::qWait(maskDelay);
QTRY_COMPARE(input->displayText(), QString(5, fillChar));
QTest::keyPress(&canvas, '5');
QCOMPARE(input->displayText(), QString(5, fillChar) + QLatin1Char('5'));
@@ -2772,7 +2772,6 @@ void tst_qquicktextinput::passwordEchoDelay()
QTest::keyPress(&canvas, Qt::Key_Backspace);
QCOMPARE(input->displayText(), QString(8, fillChar));
}
-#endif
void tst_qquicktextinput::simulateKey(QWindow *view, int key)