summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gui/kernel/qdnd.cpp1
-rw-r--r--src/gui/kernel/qguiapplication.cpp8
-rw-r--r--src/gui/kernel/qguiapplication_p.h8
-rw-r--r--src/widgets/kernel/qapplication.cpp9
-rw-r--r--src/widgets/kernel/qapplication_p.h3
5 files changed, 29 insertions, 0 deletions
diff --git a/src/gui/kernel/qdnd.cpp b/src/gui/kernel/qdnd.cpp
index 8182719830..a97583b4ef 100644
--- a/src/gui/kernel/qdnd.cpp
+++ b/src/gui/kernel/qdnd.cpp
@@ -195,6 +195,7 @@ Qt::DropAction QDragManager::drag(QDrag *o)
m_object->d_func()->target = 0;
+ QGuiApplicationPrivate::instance()->notifyDragStarted(o);
const Qt::DropAction result = m_platformDrag->drag(m_object);
m_object = 0;
return result;
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index fd7e32e96f..a9986422c8 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -2527,6 +2527,14 @@ void QGuiApplicationPrivate::notifyThemeChanged()
}
}
+#ifndef QT_NO_DRAGANDDROP
+void QGuiApplicationPrivate::notifyDragStarted(const QDrag *drag)
+{
+ Q_UNUSED(drag)
+
+}
+#endif
+
const QDrawHelperGammaTables *QGuiApplicationPrivate::gammaTables()
{
QDrawHelperGammaTables *result = m_gammaTables.load();
diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h
index 857dc5390e..58a82a9cc5 100644
--- a/src/gui/kernel/qguiapplication_p.h
+++ b/src/gui/kernel/qguiapplication_p.h
@@ -62,6 +62,9 @@ class QPlatformIntegration;
class QPlatformTheme;
class QPlatformDragQtResponse;
struct QDrawHelperGammaTables;
+#ifndef QT_NO_DRAGANDDROP
+class QDrag;
+#endif // QT_NO_DRAGANDDROP
class Q_GUI_EXPORT QGuiApplicationPrivate : public QCoreApplicationPrivate
{
@@ -240,8 +243,13 @@ public:
protected:
virtual void notifyThemeChanged();
+#ifndef QT_NO_DRAGANDDROP
+ virtual void notifyDragStarted(const QDrag *);
+#endif // QT_NO_DRAGANDDROP
private:
+ friend class QDragManager;
+
void init();
static QGuiApplicationPrivate *self;
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp
index 997a663c27..6634a2eb69 100644
--- a/src/widgets/kernel/qapplication.cpp
+++ b/src/widgets/kernel/qapplication.cpp
@@ -4503,6 +4503,15 @@ void QApplicationPrivate::notifyThemeChanged()
initSystemPalette();
}
+#ifndef QT_NO_DRAGANDDROP
+void QApplicationPrivate::notifyDragStarted(const QDrag *drag)
+{
+ // Prevent pickMouseReceiver() from using the widget where the drag was started after a drag operation.
+ QGuiApplicationPrivate::notifyDragStarted(drag);
+ qt_button_down = 0;
+}
+#endif // QT_NO_DRAGANDDROP
+
#ifndef QT_NO_GESTURES
QGestureManager* QGestureManager::instance()
{
diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h
index 7b69129d29..3ce590865b 100644
--- a/src/widgets/kernel/qapplication_p.h
+++ b/src/widgets/kernel/qapplication_p.h
@@ -195,6 +195,9 @@ public:
protected:
void notifyThemeChanged();
+#ifndef QT_NO_DRAGANDDROP
+ void notifyDragStarted(const QDrag *);
+#endif // QT_NO_DRAGANDDROP
public:
static QFont *sys_font;