Bug #2047
closedWPopupWidget
0%
Description
Hello,
when using the Wt::WPopupWidget together with the WBootstrapTheme, my WPopupWidget never gets visible (Wt 3.3.0).
Inspecting the HTML-code I figured out, the div of the WPopupWidget has initially the style-property "display: none;" and stlye-class "dropdown-menu". "dropdown-menu" from bootstrap.css declares a "display: none;" too. When klicking the Button, the "display: none;" style-property of the div is removed, but the "display: none;" of the bootstrap.css style-class "dropdown-menu" forces the div to stay hidden.
When removing the line "app->setTheme(new Wt::WBootstrapTheme(app));" in my code, everything works fine. But
Here is my code:
#include <Wt/WTable>
#include <Wt/WTableCell>
#include <Wt/WText>
#include <Wt/WApplication>
#include <Wt/WEnvironment>
#include <Wt/WCssTheme>
#include <Wt/WCssStyleSheet>
#include <Wt/WBootstrapTheme>
#include <Wt/WPushButton>
#include <Wt/WTable>
#include <Wt/WWidget>
#include <Wt/WContainerWidget>
#include <Wt/WString>
#include <Wt/WMenuItem>
#include <Wt/WMenu>
#include <Wt/WPopupWidget>
#include <Wt/WObject>
#include <iostream>
#include <string>
#include <stdlib.h>
class FrameButton : public Wt::WObject
{
public:
FrameButton(Wt::WPushButton *, Wt::WPopupWidget *);
Wt::WPushButton *getButton() { return fButton; }
private:
void buttonClicked();
Wt::WPushButton *fButton;
Wt::WPopupWidget *popup;
bool popuphidden;
};
FrameButton::FrameButton(Wt::WPushButton *button, Wt::WPopupWidget *popupWidget) {
fButton = button;
popup = popupWidget;
popup->positionAt(fButton, Wt::Vertical);
popup->setTransient(true);
popuphidden = true;
fButton->clicked().connect(this, &FrameButton::buttonClicked);
}
void FrameButton::buttonClicked() {
if (popuphidden) {
popuphidden = false;
fButton->setText("Popup verbergen");
} else {
popuphidden = true;
fButton->setText("Popup anzeigen");
}
popup->show();
}
Wt::WApplication *createApplication(const Wt::WEnvironment& env)
{
Wt::WApplication* app = new Wt::WApplication(env);
if (app->appRoot().empty()) {
std::cerr << "!!!!!!!!!!" << std::endl
<< "!! Warning: read the README.md file for hints on deployment,"
<< " the approot looks suspect!" << std::endl
<< "!!!!!!!!!!" << std::endl;
}
app->setTheme(new Wt::WBootstrapTheme(app));
Wt::WContainerWidget *testDiv = new Wt::WContainerWidget();
Wt::WContainerWidget *buttonContainer = new Wt::WContainerWidget(testDiv);
Wt::WPushButton *button = new Wt::WPushButton("Popup anzeigen", buttonContainer);
Wt::WContainerWidget *popupInhalt = new Wt::WContainerWidget();
// Tabelle 3:
Wt::WTable *table3 = new Wt::WTable(popupInhalt);
table3->elementAt(0, 0)->addWidget(new Wt::WText("t @ row 0, t 0"));
table3->elementAt(0, 1)->addWidget(new Wt::WText("t @ row 0, t 1"));
table3->elementAt(1, 0)->addWidget(new Wt::WText("t @ row 1, t 0"));
table3->elementAt(1, 1)->addWidget(new Wt::WText("t @ row 1, t 1"));
Wt::WPopupWidget *popWid = new Wt::WPopupWidget(popupInhalt);
FrameButton *builder = new FrameButton(button, popWid);
buttonContainer->addWidget(builder->getButton());
app->root()->addWidget(testDiv);
return app;
}
int main(int argc, char **argv)
{
return Wt::WRun(argc, argv, &createApplication);
}
Kind regards
Updated by Wim Dumon over 11 years ago
- Status changed from New to InProgress
- Assignee set to Koen Deforche
This is indeed an issue in Wt.
Assigned to Koen in order to confirm if the proposed solution (adding w.style.display='block'; in Wt.js in front of fitToWindow) is an acceptable solution.
Updated by Koen Deforche over 11 years ago
- Status changed from InProgress to Resolved
A fix from my local git is on its way.
Updated by Koen Deforche over 11 years ago
- Status changed from Resolved to Closed