diff options
| author | Simon Hausmann <[email protected]> | 2016-03-24 20:37:33 +0100 | 
|---|---|---|
| committer | Simon Hausmann <[email protected]> | 2016-03-24 20:37:33 +0100 | 
| commit | 487844fc62bdf048224d6fc3b7eaae6347d4457b (patch) | |
| tree | 763dc03ad77fd5b43ef74e817423540caa015e4b /src/widgets/kernel/qwidgetwindow.cpp | |
| parent | 4ed048dded34dbe2ce2842f0d40d9f54cd7571b0 (diff) | |
| parent | 6cacd19db56b632964c3b2453bc273dac50446c9 (diff) | |
Merge remote-tracking branch 'origin/5.6' into 5.7
Change-Id: I13c7ea6a74eb98606cf45702ae068101943bec6a
Diffstat (limited to 'src/widgets/kernel/qwidgetwindow.cpp')
| -rw-r--r-- | src/widgets/kernel/qwidgetwindow.cpp | 24 | 
1 files changed, 19 insertions, 5 deletions
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index c22841dd56e..3ba04e4a2ab 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -162,11 +162,29 @@ QObject *QWidgetWindow::focusObject() const      return widget;  } +static inline bool shouldBePropagatedToWidget(QEvent *event) +{ +    switch (event->type()) { +    // Handing show events to widgets would cause them to be triggered twice +    case QEvent::Show: +    case QEvent::Hide: +    case QEvent::Timer: +    case QEvent::DynamicPropertyChange: +    case QEvent::ChildAdded: +    case QEvent::ChildRemoved: +        return false; +    default: +        return true; +    } +} +  bool QWidgetWindow::event(QEvent *event)  {      if (m_widget->testAttribute(Qt::WA_DontShowOnScreen)) {          // \a event is uninteresting for QWidgetWindow, the event was probably          // generated before WA_DontShowOnScreen was set +        if (!shouldBePropagatedToWidget(event)) +            return true;          return QCoreApplication::sendEvent(m_widget, event);      } @@ -291,10 +309,6 @@ bool QWidgetWindow::event(QEvent *event)          return true;  #endif // QT_NO_CONTEXTMENU -    // Handing show events to widgets (see below) here would cause them to be triggered twice -    case QEvent::Show: -    case QEvent::Hide: -        return QWindow::event(event);      case QEvent::WindowBlocked:          qt_button_down = 0;          break; @@ -309,7 +323,7 @@ bool QWidgetWindow::event(QEvent *event)          break;      } -    if (QCoreApplication::sendEvent(m_widget, event) && event->type() != QEvent::Timer) +    if (shouldBePropagatedToWidget(event) && QCoreApplication::sendEvent(m_widget, event))          return true;      return QWindow::event(event);  | 
