summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qsimpledrag.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-07-10 13:35:11 +0200
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-10-23 06:35:47 +0000
commit6f65ddbc217a8c82b091d31e88faf3dc23baa13b (patch)
tree8320cf82311bb06368fe64b7f0768d3604340be0 /src/gui/kernel/qsimpledrag.cpp
parent746fbbe03926b8741fefab846638c09603424063 (diff)
Implement canceling of Qt-initiated drags.
- Add new virtual QPlatformDrag::cancelDrag() [avoiding a conflict with existing QBasicDrag::cancel()] - Implement on Windows by returning DRAGDROP_S_CANCEL from IOleDropSource::QueryContinueDrag() as suggested on report. - Implement in QBasicDrag by calling QBasicDrag::cancel() and quitting the event loop. - Add new API static void QDrag::cancel() for it. Task-number: QTBUG-47004 Change-Id: I4b4bb52e5fc226c8e04688ac1b0f9550daaf918e Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com> Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'src/gui/kernel/qsimpledrag.cpp')
-rw-r--r--src/gui/kernel/qsimpledrag.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gui/kernel/qsimpledrag.cpp b/src/gui/kernel/qsimpledrag.cpp
index 6acac4cade..d2efeaca28 100644
--- a/src/gui/kernel/qsimpledrag.cpp
+++ b/src/gui/kernel/qsimpledrag.cpp
@@ -191,6 +191,14 @@ Qt::DropAction QBasicDrag::drag(QDrag *o)
return m_executed_drop_action;
}
+void QBasicDrag::cancelDrag()
+{
+ if (m_eventLoop) {
+ cancel();
+ m_eventLoop->quit();
+ }
+}
+
void QBasicDrag::restoreCursor()
{
if (m_restoreCursor) {