39 fQtScalingfactor = (double) metric(QPaintDevice::PdmDevicePixelRatioScaled)/65536.;
41 setObjectName(
"QWebCanvas");
43 setSizeIncrement(QSize(100, 100));
45 setUpdatesEnabled(
true);
46 setMouseTracking(
true);
48 setFocusPolicy(Qt::TabFocus);
49 setCursor(Qt::CrossCursor);
59 gROOT->SetBatch(kFALSE);
67 QGridLayout *gridLayout =
new QGridLayout(
this);
68 gridLayout->setSpacing(10);
69 gridLayout->setContentsMargins(1,1,1,1);
71 static int wincnt = 1;
74 fCanvas->SetName(TString::Format(
"Canvas%d", wincnt++).Data());
76 fCanvas->ResetBit(TCanvas::kShowEditor);
82 auto web =
new TWebCanvas(
fCanvas,
"title", 0, 0, 800, 600, kFALSE);
85 #if ROOT_VERSION_CODE >= ROOT_VERSION(6,33,0) && QT_VERSION >= QT_VERSION_CHECK(6,0,0)
87 ROOT::RWebWindowsManager::AddServerLocation(
"go4sys",
TGo4Log::GO4SYS());
88 static std::string go4script =
"modules:go4sys/html5/go4canvas.mjs";
91 static std::string go4script = THttpServer::ReadFileContent(
TGo4Log::subGO4SYS(
"html/go4canvas.js").Data());
95 web->SetCustomScripts(go4script);
97 web->AddCustomClass(
"TGo4Marker");
98 web->AddCustomClass(
"TGo4Condition",
true);
99 web->AddCustomClass(
"TGo4CondArray");
103#if ROOT_VERSION_CODE >= ROOT_VERSION(6,26,0)
104 web->SetAsyncMode(kTRUE);
111 web->SetCanCreateObjects(kFALSE);
117 web->SetPadClickedHandler([
this](TPad *pad,
int x,
int y) {
ProcessPadClicked(pad, x, y); });
119 web->SetPadDblClickedHandler([
this](TPad *pad,
int x,
int y) {
ProcessPadDblClicked(pad, x, y); });
121#if QT_VERSION >= QT_VERSION_CHECK(6,0,0)
122 const char *kind =
"qt6";
124 const char *kind =
"qt5";
127#if ROOT_VERSION_CODE > ROOT_VERSION(6,29,0)
128 ROOT::RWebDisplayArgs args(kind);
130 ROOT::Experimental::RWebDisplayArgs args(kind);
133 args.SetDriverData(
this);
134 args.SetUrlOpt(
"noopenui");
136 web->ShowWebWindow(args);
138 fView = findChild<QWebEngineView *>(
"RootWebView");
140 printf(
"FAIL TO FIND QWebEngineView - ROOT %sweb plugin does not work properly !!!!!\n", kind);
144 gridLayout->addWidget(
fView);
147 QObject::connect(
fView, SIGNAL(drop(QDropEvent*)),
this, SLOT(
dropView(QDropEvent*)));
167 Long_t offset = TCanvas::Class()->GetDataMemberOffset(
"fCanvasID");
169 Int_t *
id = (Int_t *)((
char *)
fCanvas + offset);
170 if (*
id ==
fCanvas->GetCanvasID()) *
id = on_init ? 111222333 : -1;
172 printf(
"ERROR: Cannot modify TCanvas::fCanvasID data member\n");
175 offset = TCanvas::Class()->GetDataMemberOffset(
"fPixmapID");
177 Int_t *
id = (Int_t *)((
char *)
fCanvas + offset);
178 if (*
id ==
fCanvas->GetPixmapID()) *
id = on_init ? 332211 : -1;
180 printf(
"ERROR: Cannot modify TCanvas::fPixmapID data member\n");
183 offset = TCanvas::Class()->GetDataMemberOffset(
"fMother");
185 TPad **moth = (TPad **)((
char *)
fCanvas + offset);
186 if (*moth ==
fCanvas->GetMother()) *moth = on_init ?
fCanvas :
nullptr;
188 printf(
"ERROR: Cannot set TCanvas::fMother data member\n");