diff options
Diffstat (limited to 'src/quick')
| -rw-r--r-- | src/quick/items/qquicktextcontrol.cpp | 2 | ||||
| -rw-r--r-- | src/quick/items/qquicktextedit.cpp | 13 | ||||
| -rw-r--r-- | src/quick/util/qquickdeliveryagent.cpp | 4 |
3 files changed, 12 insertions, 7 deletions
diff --git a/src/quick/items/qquicktextcontrol.cpp b/src/quick/items/qquicktextcontrol.cpp index 9eee184fc8..d72e7f182b 100644 --- a/src/quick/items/qquicktextcontrol.cpp +++ b/src/quick/items/qquicktextcontrol.cpp @@ -756,7 +756,7 @@ void QQuickTextControl::processEvent(QEvent *e, const QTransform &transform) case QEvent::ShortcutOverride: if (d->interactionFlags & Qt::TextEditable) { - QKeyEvent* ke = static_cast<QKeyEvent *>(e); + QKeyEvent *ke = static_cast<QKeyEvent *>(e); ke->setAccepted(isCommonTextEditShortcut(ke)); } break; diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index 772a5c579b..e09895f1db 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -1975,12 +1975,15 @@ QRectF QQuickTextEdit::cursorRectangle() const bool QQuickTextEdit::event(QEvent *event) { Q_D(QQuickTextEdit); - if (event->type() == QEvent::ShortcutOverride) { - d->control->processEvent(event, QPointF(-d->xoff, -d->yoff)); - if (event->isAccepted()) - return true; + bool state = QQuickImplicitSizeItem::event(event); + if (event->type() == QEvent::ShortcutOverride && !event->isAccepted()) { + QQuickItemPrivate *itemPriv = QQuickItemPrivate::get(this); + if (!itemPriv->extra.isAllocated() || !itemPriv->extra->keyHandler) { + d->control->processEvent(event, QPointF(-d->xoff, -d->yoff)); + } + state = true; } - return QQuickImplicitSizeItem::event(event); + return state; } /*! diff --git a/src/quick/util/qquickdeliveryagent.cpp b/src/quick/util/qquickdeliveryagent.cpp index 1d4d5904bb..db2b214a55 100644 --- a/src/quick/util/qquickdeliveryagent.cpp +++ b/src/quick/util/qquickdeliveryagent.cpp @@ -970,7 +970,9 @@ void QQuickDeliveryAgentPrivate::deliverKeyEvent(QKeyEvent *e) e->isAutoRepeat(), e->count()); do { - e->accept(); + Q_ASSERT(e->type() != QEvent::ShortcutOverride || !e->isAccepted()); + if (e->type() != QEvent::ShortcutOverride) + e->accept(); QCoreApplication::sendEvent(item, e); } while (!e->isAccepted() && (item = item->parentItem())); } |
