void WDialog::setHidden(bool hidden, const WAnimation& animation) { if (isHidden() != hidden) { if (modal_) { WApplication *app = WApplication::instance(); WContainerWidget *cover = app->dialogCover(); if (!cover) return; // when application is being destroyed if (!hidden) { saveCoverState(app, cover); if (cover->isHidden()) { if (!animation.empty()) { cover->animateShow(WAnimation(WAnimation::Fade, WAnimation::Linear, animation.duration() * 4)); } else cover->show(); } cover->setZIndex(impl_->zIndex() - 1); app->pushExposedConstraint(this); // FIXME: this should only blur if the active element is outside // of the dialog doJavaScript ("try {" """var ae=document.activeElement;" // On IE when a dialog is shown on startup, activeElement is the // body. Bluring the body sends the window to the background if // it is the only tab. // http://redmine.emweb.be/boards/2/topics/6415 """if (ae && ae.blur && ae.nodeName != 'BODY') {" "" "document.activeElement.blur();" "}" "} catch (e) { }"); } else restoreCoverState(app, cover); } } WPopupWidget::setHidden(hidden, animation); }
void WDialog::setHidden(bool hidden, const WAnimation& animation) { if (isHidden() != hidden) { if (modal_) { WApplication *app = WApplication::instance(); WContainerWidget *cover = app->dialogCover(); if (!cover) return; // when application is being destroyed if (!hidden) { saveCoverState(app, cover); if (cover->isHidden()) { if (!animation.empty()) { cover->animateShow(WAnimation(WAnimation::Fade, WAnimation::Linear, animation.duration() * 4)); } else cover->show(); } cover->setZIndex(impl_->zIndex() - 1); app->pushExposedConstraint(this); // FIXME: this should only blur if the active element is outside // of the dialog doJavaScript ("try {" """if (document.activeElement && document.activeElement.blur)" "" "document.activeElement.blur();" "} catch (e) { }"); } else restoreCoverState(app, cover); } } WCompositeWidget::setHidden(hidden, animation); }