From 0f53c2c4e8dc5684f6635f1169c8cbd6edd871a6 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 4 Sep 2012 09:45:04 +0200 Subject: Streamline forwarding of blocked events. Do not send to layouts, invoke modalWidget() only once. Task-number: QTBUG-27039 Change-Id: I96db02c8da544d0961c8ab25505926ac6f699342 Reviewed-by: Qt Doc Bot Reviewed-by: hjk --- src/widgets/kernel/qwidget.cpp | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index c5f033c591..f929271f39 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -8147,23 +8147,21 @@ bool QWidget::event(QEvent *event) case QEvent::WindowBlocked: case QEvent::WindowUnblocked: - { - QList childList = d->children; - for (int i = 0; i < childList.size(); ++i) { - QObject *o = childList.at(i); - if (o && o != QApplication::activeModalWidget()) { - if (qobject_cast(o) && static_cast(o)->isWindow()) { - // do not forward the event to child windows, - // QApplication does this for us - continue; - } - QApplication::sendEvent(o, event); + if (!d->children.isEmpty()) { + QWidget *modalWidget = QApplication::activeModalWidget(); + for (int i = 0; i < d->children.size(); ++i) { + QObject *o = d->children.at(i); + if (o && o != modalWidget && o->isWidgetType()) { + QWidget *w = static_cast(o); + // do not forward the event to child windows; QApplication does this for us + if (!w->isWindow()) + QApplication::sendEvent(w, event); } } + } #if defined(Q_WS_WIN) setDisabledStyle(this, (event->type() == QEvent::WindowBlocked)); #endif - } break; #ifndef QT_NO_TOOLTIP case QEvent::ToolTip: -- cgit v1.2.3