Makes QPlatformTheme::PasswordMaskDelay themable using QStyle
Creates new themable setting SH_LineEdit_PasswordMaskDelay which can be used to override QPlatformTheme::PasswordMaskDelay. SH_LineEdit_PasswordMaskDelay defines number in ms which the password character is visible when echoMode is set to Password [ChangeLog][General][QStyle] Creates a new themable variable SH_LineEdit_PasswordMaskDelay Change-Id: I26f0ddfda2b49bc293e00e8fcf62260cf4896ab2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
This commit is contained in:
parent
eaee2bd0d0
commit
376c9c9ae3
@ -1864,3 +1864,8 @@ QTabBar::close-button:hover {
|
||||
}
|
||||
|
||||
//! [159]
|
||||
|
||||
//! [160]
|
||||
* { lineedit-password-mask-delay: 1000 }
|
||||
//! [160]
|
||||
|
||||
|
@ -862,6 +862,9 @@
|
||||
\l{#lineedit-password-character-prop}{lineedit-password-character}
|
||||
property.
|
||||
|
||||
The password mask delay can be changed using the
|
||||
\l{#lineedit-password-mask-delay-prop}{lineedit-password-mask-delay}
|
||||
|
||||
See \l{Qt Style Sheets Examples#Customizing QLineEdit}{Customizing QLineEdit}
|
||||
for an example.
|
||||
|
||||
@ -2008,6 +2011,23 @@
|
||||
|
||||
\snippet code/doc_src_stylesheet.qdoc 61
|
||||
|
||||
\row
|
||||
\li \b{\c lineedit-password-mask-delay*} \target lineedit-password-mask-delay-prop
|
||||
\li \l{#Number}{Number}
|
||||
\li The QLineEdit password mask delay in milliseconds before
|
||||
\l{#lineedit-password-character-prop}{lineedit-password-character} is applied to visible character.
|
||||
|
||||
If this property is not specified, it defaults to the
|
||||
value specified by the current style for the
|
||||
\l{QStyle::}{SH_LineEdit_PasswordMaskDelay} style hint.
|
||||
|
||||
\b{This property was added in Qt 5.4.}
|
||||
|
||||
Example:
|
||||
|
||||
\snippet code/doc_src_stylesheet.qdoc 160
|
||||
|
||||
|
||||
\row
|
||||
\li \b{\c margin} \target margin-prop
|
||||
\li \l {Box Lengths}
|
||||
|
@ -4917,6 +4917,9 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget
|
||||
ret = hint.toChar().unicode();
|
||||
break;
|
||||
}
|
||||
case SH_LineEdit_PasswordMaskDelay:
|
||||
ret = QGuiApplicationPrivate::platformTheme()->themeHint(QPlatformTheme::PasswordMaskDelay).toInt();
|
||||
break;
|
||||
case SH_ToolBox_SelectedPageTitleBold:
|
||||
ret = 1;
|
||||
break;
|
||||
|
@ -1779,6 +1779,9 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment,
|
||||
\value SH_LineEdit_PasswordCharacter The Unicode character to be
|
||||
used for passwords.
|
||||
|
||||
\value SH_LineEdit_PasswordMaskDelay Determines the delay before visible character is masked
|
||||
with password character, in milliseconds. This enum value was added in Qt 5.4.
|
||||
|
||||
\value SH_Table_GridLineColor The RGB value of the grid for a table.
|
||||
|
||||
\value SH_UnderlineShortcut Whether shortcuts are underlined.
|
||||
|
@ -702,6 +702,7 @@ public:
|
||||
SH_ToolTip_FallAsleepDelay,
|
||||
SH_Widget_Animate,
|
||||
SH_Splitter_OpaqueResize,
|
||||
SH_LineEdit_PasswordMaskDelay,
|
||||
// Add new style hint values here
|
||||
|
||||
SH_CustomBase = 0xf0000000
|
||||
|
@ -645,6 +645,7 @@ static const char *knownStyleHints[] = {
|
||||
"icon-size",
|
||||
"leftarrow-icon",
|
||||
"lineedit-password-character",
|
||||
"lineedit-password-mask-delay",
|
||||
"mdi-fill-space-on-maximize",
|
||||
"menu-scrollable",
|
||||
"menubar-altkey-navigation",
|
||||
@ -5134,6 +5135,7 @@ int QStyleSheetStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWi
|
||||
QString s;
|
||||
switch (sh) {
|
||||
case SH_LineEdit_PasswordCharacter: s = QLatin1String("lineedit-password-character"); break;
|
||||
case SH_LineEdit_PasswordMaskDelay: s = QLatin1String("lineedit-password-mask-delay"); break;
|
||||
case SH_DitherDisabledText: s = QLatin1String("dither-disabled-text"); break;
|
||||
case SH_EtchDisabledText: s = QLatin1String("etch-disabled-text"); break;
|
||||
case SH_ItemView_ActivateItemOnSingleClick: s = QLatin1String("activate-on-singleclick"); break;
|
||||
|
@ -2190,6 +2190,7 @@ void QLineEdit::changeEvent(QEvent *ev)
|
||||
QStyleOptionFrameV2 opt;
|
||||
initStyleOption(&opt);
|
||||
d->control->setPasswordCharacter(style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, this));
|
||||
d->control->setPasswordMaskDelay(style()->styleHint(QStyle::SH_LineEdit_PasswordMaskDelay, &opt, this));
|
||||
}
|
||||
d->m_iconSize = QSize();
|
||||
update();
|
||||
|
@ -205,6 +205,7 @@ void QLineEditPrivate::init(const QString& txt)
|
||||
QStyleOptionFrameV2 opt;
|
||||
q->initStyleOption(&opt);
|
||||
control->setPasswordCharacter(q->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, q));
|
||||
control->setPasswordMaskDelay(q->style()->styleHint(QStyle::SH_LineEdit_PasswordMaskDelay, &opt, q));
|
||||
#ifndef QT_NO_CURSOR
|
||||
q->setCursor(Qt::IBeamCursor);
|
||||
#endif
|
||||
|
@ -355,8 +355,10 @@ void QWidgetLineControl::init(const QString &txt)
|
||||
m_text = txt;
|
||||
updateDisplayText();
|
||||
m_cursor = m_text.length();
|
||||
if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme())
|
||||
if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) {
|
||||
m_keyboardScheme = theme->themeHint(QPlatformTheme::KeyboardScheme).toInt();
|
||||
m_passwordMaskDelay = theme->themeHint(QPlatformTheme::PasswordMaskDelay).toInt();
|
||||
}
|
||||
// Generalize for X11
|
||||
if (m_keyboardScheme == QPlatformTheme::KdeKeyboardScheme
|
||||
|| m_keyboardScheme == QPlatformTheme::GnomeKeyboardScheme
|
||||
@ -787,7 +789,7 @@ void QWidgetLineControl::internalInsert(const QString &s)
|
||||
if (m_echoMode == QLineEdit::Password) {
|
||||
if (m_passwordEchoTimer != 0)
|
||||
killTimer(m_passwordEchoTimer);
|
||||
int delay = qGuiApp->styleHints()->passwordMaskDelay();
|
||||
int delay = m_passwordMaskDelay;
|
||||
#ifdef QT_BUILD_INTERNAL
|
||||
if (m_passwordMaskDelayOverride >= 0)
|
||||
delay = m_passwordMaskDelayOverride;
|
||||
|
@ -90,6 +90,7 @@ public:
|
||||
m_tripleClickTimer(0), m_maskData(0), m_modifiedState(0), m_undoState(0),
|
||||
m_selstart(0), m_selend(0), m_passwordEchoEditing(false)
|
||||
, m_passwordEchoTimer(0)
|
||||
, m_passwordMaskDelay(-1)
|
||||
#if defined(Q_WS_MAC)
|
||||
, m_threadChecks(false)
|
||||
, m_textLayoutThread(0)
|
||||
@ -313,6 +314,9 @@ public:
|
||||
QChar passwordCharacter() const { return m_passwordCharacter; }
|
||||
void setPasswordCharacter(QChar character) { m_passwordCharacter = character; updateDisplayText(); }
|
||||
|
||||
int passwordMaskDelay() const { return m_passwordMaskDelay; }
|
||||
void setPasswordMaskDelay(int delay) { m_passwordMaskDelay = delay; }
|
||||
|
||||
Qt::LayoutDirection layoutDirection() const {
|
||||
if (m_layoutDirection == Qt::LayoutDirectionAuto) {
|
||||
if (m_text.isEmpty())
|
||||
@ -481,6 +485,7 @@ private:
|
||||
bool m_passwordEchoEditing;
|
||||
QChar m_passwordCharacter;
|
||||
int m_passwordEchoTimer;
|
||||
int m_passwordMaskDelay;
|
||||
void cancelPasswordEchoTimer()
|
||||
{
|
||||
if (m_passwordEchoTimer != 0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user