summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2012-09-04 09:45:04 +0200
committerQt by Nokia <qt-info@nokia.com>2012-09-11 07:00:31 +0200
commit0f53c2c4e8dc5684f6635f1169c8cbd6edd871a6 (patch)
tree94371d260725496020827ee4bb3dee0f1944ff07
parent0e78e5080262b8fa7a86f7cd0c8716839db048f6 (diff)
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 <qt_docbot@qt-project.org> Reviewed-by: hjk <qthjk@ovi.com>
-rw-r--r--src/widgets/kernel/qwidget.cpp22
1 files changed, 10 insertions, 12 deletions
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<QObject*> childList = d->children;
- for (int i = 0; i < childList.size(); ++i) {
- QObject *o = childList.at(i);
- if (o && o != QApplication::activeModalWidget()) {
- if (qobject_cast<QWidget *>(o) && static_cast<QWidget *>(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<QWidget *>(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: