aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickcanvas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/items/qquickcanvas.cpp')
-rw-r--r--src/quick/items/qquickcanvas.cpp25
1 files changed, 7 insertions, 18 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);