diff options
author | Pekka Vuorela <pekka.ta.vuorela@nokia.com> | 2012-02-02 14:58:49 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-02 16:31:27 +0100 |
commit | 4ab22fd809a43a57bf401e68282b697d5e5fd008 (patch) | |
tree | 030733f3c19f86b9e09adac4dda1d9be5893425f /src | |
parent | ee9c5f72d3f48e2d2d3829f39d7accc3513110ab (diff) |
Adapt to QGuiApplication::focusObject() for notifying input method
Emitting focusObjectChanged() signal now instead of explicitly setting
inputItem to QInputPanel. Also adapted from deprecated
QInputPanel::inputItem() to QGuiApplication::focusObject().
Change-Id: I97460625cc8bb2820ec7716a06330aecd1b585ea
Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquickcanvas.cpp | 25 | ||||
-rw-r--r-- | src/quick/items/qquickcanvas_p.h | 1 | ||||
-rw-r--r-- | src/quick/items/qquickitem.cpp | 3 |
3 files changed, 8 insertions, 21 deletions
diff --git a/src/quick/items/qquickcanvas.cpp b/src/quick/items/qquickcanvas.cpp index 8f4078d63e..ac7928f286 100644 --- a/src/quick/items/qquickcanvas.cpp +++ b/src/quick/items/qquickcanvas.cpp @@ -73,7 +73,7 @@ void QQuickCanvasPrivate::updateFocusItemTransform() { Q_Q(QQuickCanvas); QQuickItem *focus = q->activeFocusItem(); - if (focus && qApp->inputPanel()->inputItem() == focus) + if (focus && qApp->focusObject() == focus) qApp->inputPanel()->setInputItemTransform(QQuickItemPrivate::get(focus)->itemToCanvasTransform()); } @@ -188,6 +188,7 @@ void QQuickCanvas::focusInEvent(QFocusEvent *) { Q_D(QQuickCanvas); d->rootItem->setFocus(true); + d->updateFocusItemTransform(); } @@ -379,7 +380,7 @@ void QQuickCanvasPrivate::setFocusInScope(QQuickItem *scope, QQuickItem *item, F QVarLengthArray<QQuickItem *, 20> changed; // Does this change the active focus? - if (item == rootItem || scopePrivate->activeFocus && item->isEnabled()) { + if (item == rootItem || (scopePrivate->activeFocus && item->isEnabled())) { oldActiveFocusItem = activeFocusItem; newActiveFocusItem = item; while (newActiveFocusItem->isFocusScope() @@ -455,14 +456,12 @@ void QQuickCanvasPrivate::setFocusInScope(QQuickItem *scope, QQuickItem *item, F afi = afi->parentItem(); } - updateInputMethodData(); - QFocusEvent event(QEvent::FocusIn, Qt::OtherFocusReason); q->sendEvent(newActiveFocusItem, &event); - } else { - updateInputMethodData(); } + emit q->focusObjectChanged(activeFocusItem); + if (!changed.isEmpty()) notifyFocusChangesRecur(changed.data(), changed.count() - 1); } @@ -541,14 +540,12 @@ void QQuickCanvasPrivate::clearFocusInScope(QQuickItem *scope, QQuickItem *item, Q_ASSERT(newActiveFocusItem == scope); activeFocusItem = scope; - updateInputMethodData(); - QFocusEvent event(QEvent::FocusIn, Qt::OtherFocusReason); q->sendEvent(newActiveFocusItem, &event); - } else { - updateInputMethodData(); } + emit q->focusObjectChanged(activeFocusItem); + if (!changed.isEmpty()) notifyFocusChangesRecur(changed.data(), changed.count() - 1); } @@ -576,14 +573,6 @@ void QQuickCanvasPrivate::notifyFocusChangesRecur(QQuickItem **items, int remain } } -void QQuickCanvasPrivate::updateInputMethodData() -{ - QQuickItem *inputItem = 0; - if (activeFocusItem && activeFocusItem->flags() & QQuickItem::ItemAcceptsInputMethod) - inputItem = activeFocusItem; - qApp->inputPanel()->setInputItem(inputItem); -} - void QQuickCanvasPrivate::dirtyItem(QQuickItem *) { Q_Q(QQuickCanvas); diff --git a/src/quick/items/qquickcanvas_p.h b/src/quick/items/qquickcanvas_p.h index fe57fd1a47..d5021d880a 100644 --- a/src/quick/items/qquickcanvas_p.h +++ b/src/quick/items/qquickcanvas_p.h @@ -143,7 +143,6 @@ public: void clearFocusInScope(QQuickItem *scope, QQuickItem *item, FocusOptions = 0); void notifyFocusChangesRecur(QQuickItem **item, int remaining); - void updateInputMethodData(); void updateFocusItemTransform(); void dirtyItem(QQuickItem *); diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 5151310927..cc1705feca 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -3077,8 +3077,7 @@ void QQuickItem::setInputMethodHints(Qt::InputMethodHints hints) if (!d->canvas || d->canvas->activeFocusItem() != this) return; - QInputPanel *p = qApp->inputPanel(); - if (p->inputItem() == this) + if (qApp->focusObject() == this) qApp->inputPanel()->update(Qt::ImHints); } |