summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPekka Vuorela <pekka.ta.vuorela@nokia.com>2012-03-16 14:08:13 +0200
committerQt by Nokia <qt-info@nokia.com>2012-03-26 11:41:07 +0200
commitbc0b37d6b61fc8ab83026d6a5e515666e58d7938 (patch)
tree60d2fde70fe599e9ff8789b56440a384eb91f131 /src
parent083052933fefacbc91930bc2cb6505ecf592adaa (diff)
Password editor mask delay stylable by platform plugin
Replaced hard coding as QT_GUI_PASSWORD_ECHO_DELAY with a style hint. Change-Id: I0b78ebad723dbe19d9b9496583203e31545874e2 Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/gui/kernel/qplatformintegration_qpa.cpp2
-rw-r--r--src/gui/kernel/qplatformintegration_qpa.h3
-rw-r--r--src/gui/kernel/qstylehints.cpp5
-rw-r--r--src/gui/kernel/qstylehints.h2
-rw-r--r--src/widgets/widgets/qwidgetlinecontrol.cpp26
-rw-r--r--src/widgets/widgets/qwidgetlinecontrol_p.h8
6 files changed, 15 insertions, 31 deletions
diff --git a/src/gui/kernel/qplatformintegration_qpa.cpp b/src/gui/kernel/qplatformintegration_qpa.cpp
index 786e915a19..6879f0517e 100644
--- a/src/gui/kernel/qplatformintegration_qpa.cpp
+++ b/src/gui/kernel/qplatformintegration_qpa.cpp
@@ -291,6 +291,8 @@ QVariant QPlatformIntegration::styleHint(StyleHint hint) const
return 500;
case ShowIsFullScreen:
return false;
+ case PasswordMaskDelay:
+ return 0;
}
return 0;
diff --git a/src/gui/kernel/qplatformintegration_qpa.h b/src/gui/kernel/qplatformintegration_qpa.h
index 632b3af613..68dfc21833 100644
--- a/src/gui/kernel/qplatformintegration_qpa.h
+++ b/src/gui/kernel/qplatformintegration_qpa.h
@@ -121,7 +121,8 @@ public:
StartDragDistance,
StartDragTime,
KeyboardAutoRepeatRate,
- ShowIsFullScreen
+ ShowIsFullScreen,
+ PasswordMaskDelay
};
virtual QVariant styleHint(StyleHint hint) const;
diff --git a/src/gui/kernel/qstylehints.cpp b/src/gui/kernel/qstylehints.cpp
index 15fcec21d8..4970f6a26b 100644
--- a/src/gui/kernel/qstylehints.cpp
+++ b/src/gui/kernel/qstylehints.cpp
@@ -96,4 +96,9 @@ bool QStyleHints::showIsFullScreen() const
return hint(QPlatformIntegration::ShowIsFullScreen).toBool();
}
+int QStyleHints::passwordMaskDelay() const
+{
+ return hint(QPlatformIntegration::PasswordMaskDelay).toInt();
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qstylehints.h b/src/gui/kernel/qstylehints.h
index 0fc7e776b5..ae51ebc052 100644
--- a/src/gui/kernel/qstylehints.h
+++ b/src/gui/kernel/qstylehints.h
@@ -62,6 +62,8 @@ public:
int keyboardAutoRepeatRate() const;
int cursorFlashTime() const;
bool showIsFullScreen() const;
+ int passwordMaskDelay() const;
+
private:
friend class QGuiApplication;
QStyleHints();
diff --git a/src/widgets/widgets/qwidgetlinecontrol.cpp b/src/widgets/widgets/qwidgetlinecontrol.cpp
index ca30c7eef8..b4a7007190 100644
--- a/src/widgets/widgets/qwidgetlinecontrol.cpp
+++ b/src/widgets/widgets/qwidgetlinecontrol.cpp
@@ -47,6 +47,7 @@
#include "qclipboard.h"
#include <private/qguiapplication_p.h>
#include <qplatformtheme_qpa.h>
+#include <qstylehints.h>
#ifndef QT_NO_ACCESSIBILITY
#include "qaccessible.h"
#endif
@@ -58,21 +59,6 @@
QT_BEGIN_NAMESPACE
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
-static const int qt_passwordEchoDelay = QT_GUI_PASSWORD_ECHO_DELAY;
-#endif
-
-/*!
- \macro QT_GUI_PASSWORD_ECHO_DELAY
-
- \internal
-
- Defines the amount of time in milliseconds the last entered character
- should be displayed unmasked in the Password echo mode.
-
- If not defined in qplatformdefs.h there will be no delay in masking
- password characters.
-*/
/*!
\internal
@@ -113,7 +99,6 @@ void QWidgetLineControl::updateDisplayText(bool forceUpdate)
if (m_echoMode == QLineEdit::Password) {
str.fill(m_passwordCharacter);
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
if (m_passwordEchoTimer != 0 && m_cursor > 0 && m_cursor <= m_text.length()) {
int cursor = m_cursor - 1;
QChar uc = m_text.at(cursor);
@@ -126,7 +111,6 @@ void QWidgetLineControl::updateDisplayText(bool forceUpdate)
str[cursor - 1] = uc;
}
}
-#endif
} else if (m_echoMode == QLineEdit::PasswordEchoOnEdit && !m_passwordEchoEditing) {
str.fill(m_passwordCharacter);
}
@@ -818,13 +802,13 @@ void QWidgetLineControl::addCommand(const Command &cmd)
*/
void QWidgetLineControl::internalInsert(const QString &s)
{
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
if (m_echoMode == QLineEdit::Password) {
if (m_passwordEchoTimer != 0)
killTimer(m_passwordEchoTimer);
- m_passwordEchoTimer = startTimer(qt_passwordEchoDelay);
+ int delay = qGuiApp->styleHints()->passwordMaskDelay();
+ if (delay > 0)
+ m_passwordEchoTimer = startTimer(delay);
}
-#endif
if (hasSelectedText())
addCommand(Command(SetSelection, m_cursor, 0, m_selstart, m_selend));
if (m_maskData) {
@@ -1517,12 +1501,10 @@ void QWidgetLineControl::timerEvent(QTimerEvent *event)
} else if (event->timerId() == m_tripleClickTimer) {
killTimer(m_tripleClickTimer);
m_tripleClickTimer = 0;
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
} else if (event->timerId() == m_passwordEchoTimer) {
killTimer(m_passwordEchoTimer);
m_passwordEchoTimer = 0;
updateDisplayText();
-#endif
}
}
diff --git a/src/widgets/widgets/qwidgetlinecontrol_p.h b/src/widgets/widgets/qwidgetlinecontrol_p.h
index 72f25e9068..62184a27bb 100644
--- a/src/widgets/widgets/qwidgetlinecontrol_p.h
+++ b/src/widgets/widgets/qwidgetlinecontrol_p.h
@@ -93,9 +93,7 @@ public:
m_ascent(0), m_maxLength(32767), m_lastCursorPos(-1),
m_tripleClickTimer(0), m_maskData(0), m_modifiedState(0), m_undoState(0),
m_selstart(0), m_selend(0), m_passwordEchoEditing(false)
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
, m_passwordEchoTimer(0)
-#endif
#if defined(Q_WS_MAC)
, m_threadChecks(false)
, m_textLayoutThread(0)
@@ -306,10 +304,8 @@ public:
void updatePasswordEchoEditing(bool editing);
bool passwordEchoEditing() const {
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
if (m_passwordEchoTimer != 0)
return true;
-#endif
return m_passwordEchoEditing ;
}
@@ -484,17 +480,13 @@ private:
bool m_passwordEchoEditing;
QChar m_passwordCharacter;
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
int m_passwordEchoTimer;
-#endif
void cancelPasswordEchoTimer()
{
-#ifdef QT_GUI_PASSWORD_ECHO_DELAY
if (m_passwordEchoTimer != 0) {
killTimer(m_passwordEchoTimer);
m_passwordEchoTimer = 0;
}
-#endif
}
int redoTextLayout() const;