diff options
author | Frederik Gladhorn <frederik.gladhorn@qt.io> | 2017-09-02 10:27:41 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@qt.io> | 2017-09-02 10:27:41 +0200 |
commit | 72f320a266d7f6e8055fdb57d0996363fcbc027a (patch) | |
tree | aa4944c3d78267aa1d44b92605bbb0e475546d20 /src/quick/items/qquickitem.cpp | |
parent | a85ff0f11cce53244085cab8d947325099015725 (diff) | |
parent | e41b519cfa8c9932b88db35b2d72588a13f19e4d (diff) |
Merge dev into 5.10
Change-Id: I4376b711fbf02ea978f5d347d34a4a6a0c95dab2
Diffstat (limited to 'src/quick/items/qquickitem.cpp')
-rw-r--r-- | src/quick/items/qquickitem.cpp | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 3b30dfacb9..84e3265ee4 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -5029,22 +5029,31 @@ void QQuickItemPrivate::transformChanged() #endif } +bool QQuickItemPrivate::filterKeyEvent(QKeyEvent *e, bool post) +{ + if (!extra.isAllocated() || !extra->keyHandler) + return false; + + if (post) + e->accept(); + + if (e->type() == QEvent::KeyPress) + extra->keyHandler->keyPressed(e, post); + else + extra->keyHandler->keyReleased(e, post); + + return e->isAccepted(); +} + void QQuickItemPrivate::deliverKeyEvent(QKeyEvent *e) { Q_Q(QQuickItem); Q_ASSERT(e->isAccepted()); - if (extra.isAllocated() && extra->keyHandler) { - if (e->type() == QEvent::KeyPress) - extra->keyHandler->keyPressed(e, false); - else - extra->keyHandler->keyReleased(e, false); - - if (e->isAccepted()) - return; - else - e->accept(); - } + if (filterKeyEvent(e, false)) + return; + else + e->accept(); if (e->type() == QEvent::KeyPress) q->keyPressEvent(e); @@ -5054,16 +5063,7 @@ void QQuickItemPrivate::deliverKeyEvent(QKeyEvent *e) if (e->isAccepted()) return; - if (extra.isAllocated() && extra->keyHandler) { - e->accept(); - - if (e->type() == QEvent::KeyPress) - extra->keyHandler->keyPressed(e, true); - else - extra->keyHandler->keyReleased(e, true); - } - - if (e->isAccepted() || !q->window()) + if (filterKeyEvent(e, true) || !q->window()) return; //only care about KeyPress now |