summaryrefslogtreecommitdiffstats
path: root/src/platformsupport
diff options
context:
space:
mode:
authorGatis Paeglis <gatis.paeglis@digia.com>2013-05-10 23:16:20 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-05-13 11:18:41 +0200
commita77e4ea20785fe412bad94ec95e0ab8723f60407 (patch)
tree1674452ae22b5d8288af51638b8524f4d5e95ffd /src/platformsupport
parent29b9b92f40fb853111418f7a9599be5adf73c565 (diff)
Restore cursor before sending QDropEvent
When users created a modal window in a dropEvent(QDropEvent* event), the cursor was not restored to its original shape until after the modal window had been dismissed. Change-Id: Id4723e3cb66b36a3ca18ff097a3993563816d9e1 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/platformsupport')
-rw-r--r--src/platformsupport/dnd/qsimpledrag.cpp8
-rw-r--r--src/platformsupport/dnd/qsimpledrag_p.h2
2 files changed, 4 insertions, 6 deletions
diff --git a/src/platformsupport/dnd/qsimpledrag.cpp b/src/platformsupport/dnd/qsimpledrag.cpp
index 587e70b0f3..f2ff177055 100644
--- a/src/platformsupport/dnd/qsimpledrag.cpp
+++ b/src/platformsupport/dnd/qsimpledrag.cpp
@@ -140,7 +140,6 @@ bool QBasicDrag::eventFilter(QObject *o, QEvent *e)
QKeyEvent *ke = static_cast<QKeyEvent *>(e);
if (ke->key() == Qt::Key_Escape && e->type() == QEvent::KeyPress) {
cancel();
- resetDndState(true);
disableEventFilter();
exitDndEventLoop();
@@ -154,13 +153,10 @@ bool QBasicDrag::eventFilter(QObject *o, QEvent *e)
case QEvent::MouseButtonRelease:
disableEventFilter();
-
if (canDrop()) {
drop(static_cast<QMouseEvent *>(e));
- resetDndState(false);
} else {
cancel();
- resetDndState(true);
}
exitDndEventLoop();
return true; // Eat all mouse events
@@ -195,7 +191,7 @@ Qt::DropAction QBasicDrag::drag(QDrag *o)
return m_executed_drop_action;
}
-void QBasicDrag::resetDndState(bool /* deleteSource */)
+void QBasicDrag::restoreCursor()
{
if (m_restoreCursor) {
#ifndef QT_NO_CURSOR
@@ -227,6 +223,7 @@ void QBasicDrag::endDrag()
void QBasicDrag::cancel()
{
disableEventFilter();
+ restoreCursor();
m_drag_icon_window->setVisible(false);
}
@@ -239,6 +236,7 @@ void QBasicDrag::move(const QMouseEvent *)
void QBasicDrag::drop(const QMouseEvent *)
{
disableEventFilter();
+ restoreCursor();
m_drag_icon_window->setVisible(false);
}
diff --git a/src/platformsupport/dnd/qsimpledrag_p.h b/src/platformsupport/dnd/qsimpledrag_p.h
index b2d4191b89..10237b36d7 100644
--- a/src/platformsupport/dnd/qsimpledrag_p.h
+++ b/src/platformsupport/dnd/qsimpledrag_p.h
@@ -88,7 +88,7 @@ protected:
private:
void enableEventFilter();
void disableEventFilter();
- void resetDndState(bool deleteSource);
+ void restoreCursor();
void exitDndEventLoop();
bool m_restoreCursor;