summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/widgets/qmenubar.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/widgets/widgets/qmenubar.cpp b/src/widgets/widgets/qmenubar.cpp
index 4758f64c8c..7c4dd896a4 100644
--- a/src/widgets/widgets/qmenubar.cpp
+++ b/src/widgets/widgets/qmenubar.cpp
@@ -1209,8 +1209,15 @@ void QMenuBar::keyPressEvent(QKeyEvent *e)
void QMenuBar::mouseMoveEvent(QMouseEvent *e)
{
Q_D(QMenuBar);
- if (!(e->buttons() & Qt::LeftButton))
+ if (!(e->buttons() & Qt::LeftButton)) {
d->mouseDown = false;
+ // We receive mouse move and mouse press on touch.
+ // Mouse move will open the menu and mouse press
+ // will close it, so ignore mouse move.
+ if (e->source() != Qt::MouseEventNotSynthesized)
+ return;
+ }
+
bool popupState = d->popupState || d->mouseDown;
QAction *action = d->actionAt(e->pos());
if ((action && d->isVisible(action)) || !popupState)