aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick')
-rw-r--r--src/quick/items/qquicktextcontrol.cpp2
-rw-r--r--src/quick/items/qquicktextedit.cpp13
-rw-r--r--src/quick/util/qquickdeliveryagent.cpp4
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()));
}