Clear qt_button_down widget when starting a drag.

Prevent pickMouseReceiver() from using the
widget from which the drag was started.

Task-number: QTBUG-26145
Change-Id: I65d4c295a894193e41c676fb9fd1f7113c2631b5
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
This commit is contained in:
Friedemann Kleint 2012-07-09 12:50:00 +02:00 committed by Qt by Nokia
parent 9de46b2b93
commit cf2b5a7722
5 changed files with 29 additions and 0 deletions

View File

@ -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;

View File

@ -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();

View File

@ -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;

View File

@ -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()
{

View File

@ -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;