summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp')
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp33
1 files changed, 21 insertions, 12 deletions
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
index 0ce6383..1cebef7 100644
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
@@ -599,20 +599,29 @@ void EditorClientQt::setInputMethodState(bool active)
QWebPageClient* webPageClient = m_page->d->client;
if (webPageClient) {
#if QT_VERSION >= 0x040600
- bool isPasswordField = false;
- if (!active) {
- // Setting the Qt::WA_InputMethodEnabled attribute true and Qt::ImhHiddenText flag
- // for password fields. The Qt platform is responsible for determining which widget
- // will receive input method events for password fields.
- Frame* frame = m_page->d->page->focusController()->focusedOrMainFrame();
- if (frame && frame->document() && frame->document()->focusedNode()) {
- if (frame->document()->focusedNode()->hasTagName(HTMLNames::inputTag)) {
- HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(frame->document()->focusedNode());
- active = isPasswordField = inputElement->isPasswordField();
- }
+ HTMLInputElement* inputElement = 0;
+ Frame* frame = m_page->d->page->focusController()->focusedOrMainFrame();
+ if (frame && frame->document() && frame->document()->focusedNode())
+ if (frame->document()->focusedNode()->hasTagName(HTMLNames::inputTag))
+ inputElement = static_cast<HTMLInputElement*>(frame->document()->focusedNode());
+
+ if (inputElement) {
+ if (!active) {
+ // Setting the Qt::WA_InputMethodEnabled attribute true and Qt::ImhHiddenText flag
+ // for password fields. The Qt platform is responsible for determining which widget
+ // will receive input method events for password fields.
+ active = inputElement->isPasswordField();
+ webPageClient->setInputMethodHint(Qt::ImhHiddenText, active);
+ } else {
+ // Set input method hints for "number", "tel", "email", and "url" input elements.
+ webPageClient->setInputMethodHint(Qt::ImhDialableCharactersOnly, inputElement->isTelephoneField());
+ webPageClient->setInputMethodHint(Qt::ImhDigitsOnly, inputElement->isNumberField());
+ webPageClient->setInputMethodHint(Qt::ImhEmailCharactersOnly, inputElement->isEmailField());
+ webPageClient->setInputMethodHint(Qt::ImhUrlCharactersOnly, inputElement->isUrlField());
+ webPageClient->setInputMethodHint(Qt::ImhHiddenText, inputElement->isPasswordField());
}
}
- webPageClient->setInputMethodHint(Qt::ImhHiddenText, isPasswordField);
+
#if defined(Q_WS_MAEMO_5) || defined(Q_OS_SYMBIAN)
// disables auto-uppercase and predictive text for mobile devices
webPageClient->setInputMethodHint(Qt::ImhNoAutoUppercase, true);