|
// WTable rendering bug (wt-4.0.0-rc2)
|
|
//
|
|
// Plateform :
|
|
//
|
|
// Debian Jessie 64 bit
|
|
// set(CMAKE_CXX_FLAGS "-Wall -Werror -std=c++11 -g -O0 -fno-inline")
|
|
//
|
|
// Steps to reproduce :
|
|
//
|
|
// 1. Load the web page
|
|
// 2. Click on "Push Me" button -> The first time, the table is correctly displayed
|
|
// 3. Reload the page with F5 (Firefox or Chromium)
|
|
// 4. Click on "Push Me" button -> The table is often wrongly displayed (lack of cell)
|
|
|
|
#include <Wt/WApplication.h>
|
|
#include <Wt/WEnvironment.h>
|
|
#include <Wt/WPushButton.h>
|
|
#include <Wt/WLabel.h>
|
|
#include <Wt/WText.h>
|
|
#include <Wt/WTable.h>
|
|
#include <Wt/WTableCell.h>
|
|
#include <Wt/WVBoxLayout.h>
|
|
|
|
class TestApplication : public Wt::WApplication
|
|
{
|
|
public:
|
|
TestApplication(const Wt::WEnvironment& env);
|
|
~TestApplication() { }
|
|
};
|
|
|
|
TestApplication::TestApplication(const Wt::WEnvironment& env) : Wt::WApplication(env)
|
|
{
|
|
setTitle("Test");
|
|
Wt::WVBoxLayout * ctn = new Wt::WVBoxLayout();
|
|
root()->setLayout(std::unique_ptr <Wt::WLayout >(ctn));
|
|
|
|
Wt::WTable * table = new Wt::WTable();
|
|
table->addStyleClass("Wt-cal");
|
|
ctn->addWidget(std::unique_ptr<Wt::WWidget>(table), 1);
|
|
|
|
Wt::WPushButton * btn = new Wt::WPushButton("Push Me");
|
|
ctn->addWidget(std::unique_ptr<Wt::WWidget>(btn));
|
|
|
|
btn->clicked().connect([table](){
|
|
for (int row = 1 ; row < 10 ; row++)
|
|
for (int col = 0 ; col < 15 ; col++)
|
|
table->elementAt(row, col)->addWidget(std::unique_ptr<Wt::WWidget>(new Wt::WLabel("Cell (" + std::to_string(row) + ", " + std::to_string(col) + ")")));
|
|
});
|
|
|
|
for (int col = 0 ; col < 15 ; col++)
|
|
table->elementAt(0, col)->addWidget(std::unique_ptr<Wt::WWidget>(new Wt::WLabel("Header #" + std::to_string(col))));
|
|
|
|
table->setHeaderCount(1);
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
return Wt::WRun(argc, argv, [](const Wt::WEnvironment& env) {
|
|
return Wt::cpp14::make_unique<TestApplication>(env);
|
|
});
|
|
}
|