diff options
author | Paul Olav Tvete <paul.tvete@qt.io> | 2017-08-11 14:35:30 +0200 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@qt.io> | 2017-08-17 12:25:10 +0000 |
commit | 2e1ad4335cb236e0b21f5b395cc8bc54cabedea9 (patch) | |
tree | 48843fefeaa8c4f22bc66c044e2d76dafb681b4d /src | |
parent | 0dee566e98f5ff4f224e596de1c04de4f9685df4 (diff) |
Don't send extra mouse press to popups on dblClick
QWidget::event() will turn an unhandled double click into a
mouse press. Therefore, we must avoid sending a separate mouse press
in that case.
This copies the logic from 9063edef796ad10eb9ac2229627f36d60168f0e2,
the previous fix for QTBUG-25831, which only applied to the non-popup
case.
Task-number: QTBUG-25831
Change-Id: I616f398a5ebe1f95d4b65b9f6ce2fe39a6fad83e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/widgets/kernel/qwidgetwindow.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index d5d4ae844b..d30154410c 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -527,12 +527,15 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event) } } #endif - - QMouseEvent e(event->type(), widgetPos, event->windowPos(), event->screenPos(), - event->button(), event->buttons(), event->modifiers(), event->source()); - e.setTimestamp(event->timestamp()); - QApplicationPrivate::sendMouseEvent(receiver, &e, receiver, receiver->window(), &qt_button_down, qt_last_mouse_receiver); - qt_last_mouse_receiver = receiver; + if ((event->type() != QEvent::MouseButtonPress) + || !(event->flags().testFlag(Qt::MouseEventCreatedDoubleClick))) { + + QMouseEvent e(event->type(), widgetPos, event->windowPos(), event->screenPos(), + event->button(), event->buttons(), event->modifiers(), event->source()); + e.setTimestamp(event->timestamp()); + QApplicationPrivate::sendMouseEvent(receiver, &e, receiver, receiver->window(), &qt_button_down, qt_last_mouse_receiver); + qt_last_mouse_receiver = receiver; + } } else { // close disabled popups when a mouse button is pressed or released switch (event->type()) { |