diff -rupN 3/orig/qwidget.cpp 3/new/qwidget.cpp --- 3/orig/qwidget.cpp Thu Dec 8 07:06:02 2011 +++ 3/new/qwidget.cpp Thu Jan 19 09:42:09 2012 @@ -8659,14 +8659,16 @@ bool QWidget::event(QEvent *event) case QEvent::WindowBlocked: case QEvent::WindowUnblocked: - { + if(isVisible()) { 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()) { + QWidget* ow = qobject_cast(o); + if(ow && (!ow->isVisible() || ow->isWindow())){ // do not forward the event to child windows, - // QApplication does this for us + // QApplication does this for us. + // also, don't forward to hidden children continue; } QApplication::sendEvent(o, event);