diff options
Diffstat (limited to 'src/quick/items')
-rw-r--r-- | src/quick/items/qquickdrag.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 7 | ||||
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 9 |
3 files changed, 16 insertions, 2 deletions
diff --git a/src/quick/items/qquickdrag.cpp b/src/quick/items/qquickdrag.cpp index 9a24d7a8a0..558f52a1af 100644 --- a/src/quick/items/qquickdrag.cpp +++ b/src/quick/items/qquickdrag.cpp @@ -720,7 +720,7 @@ Qt::DropAction QQuickDragAttachedPrivate::startDrag(Qt::DropActions supportedAct { Q_Q(QQuickDragAttached); - QDrag *drag = new QDrag(q); + QDrag *drag = new QDrag(source ? source : q); QMimeData *mimeData = new QMimeData(); for (auto it = externalMimeData.cbegin(), end = externalMimeData.cend(); it != end; ++it) diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index 3037ad8bdd..168fd0d9b6 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -4280,8 +4280,13 @@ void QQuickTextInputPrivate::processKeyEvent(QKeyEvent* event) if (!(q->inputMethodHints() & Qt::ImhMultiLine)) inputMethod->hide(); + if (activeFocus) { + // If we lost focus after hiding the virtual keyboard, we've already emitted + // editingFinished from handleFocusEvent. Otherwise we emit it now. + emit q->editingFinished(); + } + emit q->accepted(); - emit q->editingFinished(); } event->ignore(); return; diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index 46ae993a18..10e439182d 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -1482,6 +1482,15 @@ bool QQuickWindow::event(QEvent *e) // return in order to avoid the QWindow::event below return d->deliverTouchCancelEvent(static_cast<QTouchEvent*>(e)); break; + case QEvent::Enter: { + QEnterEvent *enter = static_cast<QEnterEvent*>(e); + bool accepted = enter->isAccepted(); + bool delivered = d->deliverHoverEvent(d->contentItem, enter->windowPos(), d->lastMousePosition, + QGuiApplication::keyboardModifiers(), 0L, accepted); + enter->setAccepted(accepted); + return delivered; + } + break; case QEvent::Leave: d->clearHover(); d->lastMousePosition = QPoint(); |