Skip to content

Commit 681909b

Browse files
committed
Use TWebCanvas::CreateWebCanvas in qtweb demo
Simplifies logic how web display is initialized
1 parent 1060b14 commit 681909b

File tree

1 file changed

+5
-37
lines changed

1 file changed

+5
-37
lines changed

tutorials/visualisation/webgui/qtweb/TCanvasWidget.cpp

Lines changed: 5 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,11 @@ TCanvasWidget::TCanvasWidget(QWidget *parent) : QWidget(parent)
3333

3434
static int wincnt = 1;
3535

36-
fCanvas = new TCanvas(kFALSE);
37-
fCanvas->SetName(Form("Canvas%d", wincnt++));
38-
fCanvas->SetTitle("title");
39-
fCanvas->ResetBit(TCanvas::kShowEditor);
40-
fCanvas->SetCanvas(fCanvas);
41-
fCanvas->SetBatch(kTRUE); // mark canvas as batch
36+
auto name = TString::Format("Canvas%d", wincnt++);
4237

43-
gPad = fCanvas;
38+
fCanvas = TWebCanvas::CreateWebCanvas(name, name);
4439

45-
bool read_only = gEnv->GetValue("WebGui.FullCanvas", (Int_t)1) == 0;
46-
47-
TWebCanvas *web = new TWebCanvas(fCanvas, "title", 0, 0, 800, 600, read_only);
48-
49-
fCanvas->SetCanvasImp(web);
50-
51-
SetPrivateCanvasFields(true);
40+
auto web = static_cast<TWebCanvas *> (fCanvas->GetCanvasImp());
5241

5342
web->SetCanCreateObjects(kFALSE); // not yet create objects on server side
5443

@@ -77,37 +66,16 @@ TCanvasWidget::TCanvasWidget(QWidget *parent) : QWidget(parent)
7766
TCanvasWidget::~TCanvasWidget()
7867
{
7968
if (fCanvas) {
80-
SetPrivateCanvasFields(false);
81-
8269
gROOT->GetListOfCanvases()->Remove(fCanvas);
8370

71+
fCanvas->SetCanvasImp(nullptr);
72+
8473
fCanvas->Close();
8574
delete fCanvas;
8675
fCanvas = nullptr;
8776
}
8877
}
8978

90-
void TCanvasWidget::SetPrivateCanvasFields(bool on_init)
91-
{
92-
Long_t offset = TCanvas::Class()->GetDataMemberOffset("fCanvasID");
93-
if (offset > 0) {
94-
Int_t *id = (Int_t *)((char *)fCanvas + offset);
95-
if (*id == fCanvas->GetCanvasID())
96-
*id = on_init ? 111222333 : -1;
97-
} else {
98-
printf("ERROR: Cannot modify fCanvasID data member\n");
99-
}
100-
101-
offset = TCanvas::Class()->GetDataMemberOffset("fMother");
102-
if (offset > 0) {
103-
TPad **moth = (TPad **)((char *)fCanvas + offset);
104-
if (*moth == fCanvas->GetMother())
105-
*moth = on_init ? fCanvas : nullptr;
106-
} else {
107-
printf("ERROR: Cannot set fMother data member in canvas\n");
108-
}
109-
}
110-
11179
void TCanvasWidget::resizeEvent(QResizeEvent *event)
11280
{
11381
fView->resize(width(), height());

0 commit comments

Comments
 (0)