diff --git a/src/quick/items/qquickitemsmodule.cpp b/src/quick/items/qquickitemsmodule.cpp index c9c8eeace3525ef6d61cb5d5e6e06ef34a5a07ea..0aed784b2e99fae0793b59603db30ac22e563c5c 100644 --- a/src/quick/items/qquickitemsmodule.cpp +++ b/src/quick/items/qquickitemsmodule.cpp @@ -190,6 +190,7 @@ static void qt_quickitems_defineModule(const char *uri, int major, int minor) qmlRegisterType<QQuickTextEdit,1>(uri,2,1,"TextEdit"); qmlRegisterType<QQuickTextInput>(uri,major,minor,"TextInput"); qmlRegisterType<QQuickTextInput,2>(uri,2,2,"TextInput"); + qmlRegisterType<QQuickTextInput,3>(uri,2,4,"TextInput"); qmlRegisterType<QQuickViewSection>(uri,major,minor,"ViewSection"); qmlRegisterType<QQuickItemLayer>(); diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index ad79f0eadf693d9e815acab91e5f95eb84650400..26dda5db6b4872f1b64dfeaede896aa3277b54a0 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -2059,9 +2059,8 @@ void QQuickTextInput::insert(int position, const QString &text) { Q_D(QQuickTextInput); if (d->m_echoMode == QQuickTextInput::Password) { - int delay = qGuiApp->styleHints()->passwordMaskDelay(); - if (delay > 0) - d->m_passwordEchoTimer.start(delay, this); + if (d->m_passwordMaskDelay > 0) + d->m_passwordEchoTimer.start(d->m_passwordMaskDelay, this); } if (position < 0 || position > d->m_text.length()) return; @@ -2240,6 +2239,34 @@ void QQuickTextInput::setPasswordCharacter(const QString &str) emit passwordCharacterChanged(); } +/*! + \qmlproperty int QtQuick::TextInput::passwordMaskDelay + \since 5.4 + + Sets the delay before visible character is masked with password character, in milliseconds. + + The reset method will be called by assigning undefined. +*/ +int QQuickTextInput::passwordMaskDelay() const +{ + Q_D(const QQuickTextInput); + return d->m_passwordMaskDelay; +} + +void QQuickTextInput::setPasswordMaskDelay(int delay) +{ + Q_D(QQuickTextInput); + if (d->m_passwordMaskDelay != delay) { + d->m_passwordMaskDelay = delay; + emit passwordMaskDelayChanged(delay); + } +} + +void QQuickTextInput::resetPasswordMaskDelay() +{ + setPasswordMaskDelay(qGuiApp->styleHints()->passwordMaskDelay()); +} + /*! \qmlproperty string QtQuick::TextInput::displayText @@ -3478,9 +3505,8 @@ void QQuickTextInputPrivate::internalInsert(const QString &s) { Q_Q(QQuickTextInput); if (m_echoMode == QQuickTextInput::Password) { - int delay = qGuiApp->styleHints()->passwordMaskDelay(); - if (delay > 0) - m_passwordEchoTimer.start(delay, q); + if (m_passwordMaskDelay > 0) + m_passwordEchoTimer.start(m_passwordMaskDelay, q); } Q_ASSERT(!hasSelectedText()); // insert(), processInputMethodEvent() call removeSelectedText() first. if (m_maskData) { diff --git a/src/quick/items/qquicktextinput_p.h b/src/quick/items/qquicktextinput_p.h index 5f0250aaf13e6848a13ca96bbf100b2f2da76024..5a882735435cf61665ca3714b2f21e5e34052d92 100644 --- a/src/quick/items/qquicktextinput_p.h +++ b/src/quick/items/qquicktextinput_p.h @@ -94,6 +94,7 @@ class Q_QUICK_PRIVATE_EXPORT QQuickTextInput : public QQuickImplicitSizeItem Q_PROPERTY(EchoMode echoMode READ echoMode WRITE setEchoMode NOTIFY echoModeChanged) Q_PROPERTY(bool activeFocusOnPress READ focusOnPress WRITE setFocusOnPress NOTIFY activeFocusOnPressChanged) Q_PROPERTY(QString passwordCharacter READ passwordCharacter WRITE setPasswordCharacter NOTIFY passwordCharacterChanged) + Q_PROPERTY(int passwordMaskDelay READ passwordMaskDelay WRITE setPasswordMaskDelay RESET resetPasswordMaskDelay NOTIFY passwordMaskDelayChanged REVISION 3) Q_PROPERTY(QString displayText READ displayText NOTIFY displayTextChanged) Q_PROPERTY(bool autoScroll READ autoScroll WRITE setAutoScroll NOTIFY autoScrollChanged) Q_PROPERTY(bool selectByMouse READ selectByMouse WRITE setSelectByMouse NOTIFY selectByMouseChanged) @@ -227,6 +228,10 @@ public: QString passwordCharacter() const; void setPasswordCharacter(const QString &str); + int passwordMaskDelay() const; + void setPasswordMaskDelay(int delay); + void resetPasswordMaskDelay(); + QString displayText() const; QQmlComponent* cursorDelegate() const; @@ -300,6 +305,7 @@ Q_SIGNALS: void inputMaskChanged(const QString &inputMask); void echoModeChanged(EchoMode echoMode); void passwordCharacterChanged(); + Q_REVISION(3) void passwordMaskDelayChanged(int delay); void displayTextChanged(); void activeFocusOnPressChanged(bool activeFocusOnPress); void autoScrollChanged(bool autoScroll); diff --git a/src/quick/items/qquicktextinput_p_p.h b/src/quick/items/qquicktextinput_p_p.h index 21bd1bd6d73b4c54d1bb678ac2c6965806363b7b..2cf127608eca40dbb622e68c22c511afc5f42ada 100644 --- a/src/quick/items/qquicktextinput_p_p.h +++ b/src/quick/items/qquicktextinput_p_p.h @@ -111,6 +111,7 @@ public: , mouseSelectionMode(QQuickTextInput::SelectCharacters) , m_layoutDirection(Qt::LayoutDirectionAuto) , m_passwordCharacter(qApp->styleHints()->passwordMaskCharacter()) + , m_passwordMaskDelay(qApp->styleHints()->passwordMaskDelay()) , focusOnPress(true) , cursorVisible(false) , cursorPending(false) @@ -250,6 +251,7 @@ public: QChar m_blank; QChar m_passwordCharacter; + int m_passwordMaskDelay; bool focusOnPress:1; bool cursorVisible:1;