summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/controls/qquickpopupwindow.cpp15
-rw-r--r--src/controls/qquickpopupwindow_p.h1
2 files changed, 12 insertions, 4 deletions
diff --git a/src/controls/qquickpopupwindow.cpp b/src/controls/qquickpopupwindow.cpp
index 59cfe22bf..cfab5bd51 100644
--- a/src/controls/qquickpopupwindow.cpp
+++ b/src/controls/qquickpopupwindow.cpp
@@ -46,7 +46,7 @@ QT_BEGIN_NAMESPACE
QQuickPopupWindow::QQuickPopupWindow() :
QQuickWindow(), m_parentItem(0), m_contentItem(0),
m_mouseMoved(false), m_needsActivatedEvent(true),
- m_dismissed(false)
+ m_dismissed(false), m_pressed(false)
{
setFlags(Qt::Popup);
connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)),
@@ -146,17 +146,22 @@ void QQuickPopupWindow::mouseMoveEvent(QMouseEvent *e)
{
QRect rect = QRect(QPoint(), size());
m_mouseMoved = true;
- if (rect.contains(e->pos()))
+ if (rect.contains(e->pos())) {
+ if (e->buttons() != Qt::NoButton)
+ m_pressed = true;
QQuickWindow::mouseMoveEvent(e);
+ }
else
forwardEventToTransientParent(e);
}
void QQuickPopupWindow::mousePressEvent(QMouseEvent *e)
{
+ m_pressed = true;
QRect rect = QRect(QPoint(), size());
- if (rect.contains(e->pos()))
+ if (rect.contains(e->pos())) {
QQuickWindow::mousePressEvent(e);
+ }
else
forwardEventToTransientParent(e);
}
@@ -173,8 +178,10 @@ void QQuickPopupWindow::mouseReleaseEvent(QMouseEvent *e)
}
m_mouseMoved = true; // Initial mouse release counts as move.
} else {
- forwardEventToTransientParent(e);
+ if (m_pressed)
+ forwardEventToTransientParent(e);
}
+ m_pressed = false;
}
void QQuickPopupWindow::forwardEventToTransientParent(QMouseEvent *e)
diff --git a/src/controls/qquickpopupwindow_p.h b/src/controls/qquickpopupwindow_p.h
index 617df53de..830ba3825 100644
--- a/src/controls/qquickpopupwindow_p.h
+++ b/src/controls/qquickpopupwindow_p.h
@@ -88,6 +88,7 @@ private:
bool m_mouseMoved;
bool m_needsActivatedEvent;
bool m_dismissed;
+ bool m_pressed;
};
QT_END_NAMESPACE