WPopupMenu::WPopupMenu() : WCompositeWidget(), parentItem_(0), result_(0), location_(0), aboutToHide_(this), triggered_(this), cancel_(this, "cancel"), recursiveEventLoop_(false), autoHideDelay_(-1) { const char *TEMPLATE = "${shadow-x1-x2}" "${contents}"; setImplementation(impl_ = new WTemplate(WString::fromUTF8(TEMPLATE))); impl_->setLoadLaterWhenInvisible(false); setPositionScheme(Absolute); setStyleClass("Wt-popupmenu Wt-outset"); impl_->bindString("shadow-x1-x2", WTemplate::DropShadow_x1_x2); WContainerWidget *content = new WContainerWidget(); content->setStyleClass("content"); impl_->bindWidget("contents", content); const char *CSS_RULES_NAME = "Wt::WPopupMenu"; WApplication *app = WApplication::instance(); if (!app->styleSheet().isDefined(CSS_RULES_NAME)) app->styleSheet().addRule (".Wt-notselected .Wt-popupmenu", "visibility: hidden;", CSS_RULES_NAME); app->domRoot()->addWidget(this); hide(); }