@@ -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)
7766TCanvasWidget::~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-
11179void TCanvasWidget::resizeEvent (QResizeEvent *event)
11280{
11381 fView ->resize (width (), height ());
0 commit comments