void FrameShadowFactory::installShadows(QWidget* widget, StyleHelper& helper, bool flat) { removeShadows(widget); widget->installEventFilter(this); if (!flat) { installShadow( widget, helper, Left ); installShadow( widget, helper, Right ); } installShadow( widget, helper, Top, flat ); installShadow( widget, helper, Bottom, flat ); }
//____________________________________________________________________________________ bool MdiWindowShadowFactory::eventFilter( QObject* object, QEvent* event ) { switch( event->type() ) { // TODO: possibly implement ZOrderChange event, to make sure that // the shadow is always painted on top case QEvent::ZOrderChange: updateShadowZOrder( object ); break; case QEvent::Destroy: if( isRegistered( object ) ) { _registeredWidgets.remove( object ); removeShadow( object ); } break; case QEvent::Hide: hideShadows( object ); break; case QEvent::Show: installShadow( object ); updateShadowGeometry( object ); updateShadowZOrder( object ); break; case QEvent::Move: case QEvent::Resize: updateShadowGeometry( object ); break; default: break; } return QObject::eventFilter( object, event ); }