diff options
author | Paul Olav Tvete <paul.tvete@digia.com> | 2013-02-27 12:53:23 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-03-04 09:16:07 +0100 |
commit | 3b507d2c48a1637966a6e7537af7763824f0bef8 (patch) | |
tree | f6f7e1a01142c226fda0b83a9f3a98e2f85b82ce /src/quick | |
parent | b45f742dd8c533cff0767d2dfbe68ea9fd19a522 (diff) |
Enablers for input methods on Android
Change-Id: Ic26722cf530e7a787e7a8f92b645e3c4883d9822
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquicktextedit.cpp | 9 | ||||
-rw-r--r-- | src/quick/items/qquicktextedit_p_p.h | 4 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 9 |
4 files changed, 20 insertions, 4 deletions
diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index e051b5202c..015f52cc46 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -635,6 +635,13 @@ void QQuickTextEditPrivate::mirrorChange() } } +#ifndef QT_NO_IM +Qt::InputMethodHints QQuickTextEditPrivate::effectiveInputMethodHints() const +{ + return inputMethodHints | Qt::ImhMultiLine; +} +#endif + QQuickTextEdit::VAlignment QQuickTextEdit::vAlign() const { Q_D(const QQuickTextEdit); @@ -1632,7 +1639,7 @@ QVariant QQuickTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const v = (bool)(flags() & ItemAcceptsInputMethod); break; case Qt::ImHints: - v = (int)inputMethodHints(); + v = (int)d->effectiveInputMethodHints(); break; default: v = d->control->inputMethodQuery(property); diff --git a/src/quick/items/qquicktextedit_p_p.h b/src/quick/items/qquicktextedit_p_p.h index e4819e4d2d..5306c979cf 100644 --- a/src/quick/items/qquicktextedit_p_p.h +++ b/src/quick/items/qquicktextedit_p_p.h @@ -106,6 +106,10 @@ public: void setNativeCursorEnabled(bool enabled) { control->setCursorWidth(enabled ? 1 : 0); } +#ifndef QT_NO_IM + Qt::InputMethodHints effectiveInputMethodHints() const; +#endif + QColor color; QColor selectionColor; QColor selectedTextColor; diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index f9de3d25e7..1c65c37516 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -1910,7 +1910,7 @@ QVariant QQuickTextInput::inputMethodQuery(Qt::InputMethodQuery property) const else return QVariant(d->selectionStart()); default: - return QVariant(); + return QQuickItem::inputMethodQuery(property); } } #endif // QT_NO_IM diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index efc67c0437..2e8f58b849 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -77,8 +77,11 @@ void QQuickWindowPrivate::updateFocusItemTransform() Q_Q(QQuickWindow); #ifndef QT_NO_IM QQuickItem *focus = q->activeFocusItem(); - if (focus && qApp->focusObject() == focus) - qApp->inputMethod()->setInputItemTransform(QQuickItemPrivate::get(focus)->itemToWindowTransform()); + if (focus && qApp->focusObject() == focus) { + QQuickItemPrivate *focusPrivate = QQuickItemPrivate::get(focus); + qApp->inputMethod()->setInputItemTransform(focusPrivate->itemToWindowTransform()); + qApp->inputMethod()->setInputItemRectangle(QRectF(0, 0, focusPrivate->width, focusPrivate->height)); + } #endif } @@ -690,6 +693,7 @@ void QQuickWindowPrivate::setFocusInScope(QQuickItem *scope, QQuickItem *item, F } afi = afi->parentItem(); } + updateFocusItemTransform(); QFocusEvent event(QEvent::FocusIn, Qt::OtherFocusReason); q->sendEvent(newActiveFocusItem, &event); @@ -771,6 +775,7 @@ void QQuickWindowPrivate::clearFocusInScope(QQuickItem *scope, QQuickItem *item, if (newActiveFocusItem) { Q_ASSERT(newActiveFocusItem == scope); activeFocusItem = scope; + updateFocusItemTransform(); QFocusEvent event(QEvent::FocusIn, Qt::OtherFocusReason); q->sendEvent(newActiveFocusItem, &event); |