@@ -58664,7 +58664,7 @@ class TPadPainter extends ObjectPainter {
5866458664 .style("bottom", 0);
5866558665 }
5866658666
58667- svg.style("filter", settings.DarkMode ? "invert(100%)" : null);
58667+ svg.style("filter", settings.DarkMode || this.pad?.$dark ? "invert(100%)" : null);
5866858668
5866958669 svg.attr("viewBox", `0 0 ${rect.width} ${rect.height}`)
5867058670 .attr("preserveAspectRatio", "none") // we do not preserve relative ratio
@@ -59143,9 +59143,7 @@ class TPadPainter extends ObjectPainter {
5914359143 /** @summary Changes canvas dark mode
5914459144 * @private */
5914559145 changeDarkMode(mode) {
59146- if (mode === undefined)
59147- mode = settings.DarkMode;
59148- this.getCanvSvg().style("filter", mode ? "invert(100%)" : null);
59146+ this.getCanvSvg().style("filter", (mode ?? settings.DarkMode) ? "invert(100%)" : null);
5914959147 }
5915059148
5915159149 /** @summary Fill pad context menu
@@ -60964,14 +60962,12 @@ function ensureTCanvas(painter, frame_kind) {
6096460962 return Promise.reject(Error('Painter not provided in ensureTCanvas'));
6096560963
6096660964 // simple check - if canvas there, can use painter
60967- let svg_c = painter.getCanvSvg(),
60968- noframe = (frame_kind === false) || (frame_kind == "3d") ? "noframe" : "",
60969- pr = Promise.resolve(true);
60970-
60971- if (svg_c.empty())
60972- pr = TCanvasPainter.draw(painter.getDom(), null, noframe);
60965+ let noframe = (frame_kind === false) || (frame_kind == "3d") ? "noframe" : "",
60966+ promise = painter.getCanvSvg().empty()
60967+ ? TCanvasPainter.draw(painter.getDom(), null, noframe)
60968+ : Promise.resolve(true);
6097360969
60974- return pr .then(() => {
60970+ return promise .then(() => {
6097560971 if ((frame_kind !== false) && painter.getFrameSvg().select(".main_layer").empty() && !painter.getFramePainter())
6097660972 directDrawTFrame(painter.getDom(), null, frame_kind);
6097760973
@@ -64514,7 +64510,7 @@ class THistPainter extends ObjectPainter {
6451464510 if (handle.kind === 'time')
6451564511 return funcs.axisAsText(name, (x1+x2)/2);
6451664512
64517- return "[" + funcs.axisAsText(name, x1) + ", " + funcs.axisAsText(name, x2) + ")" ;
64513+ return `[${ funcs.axisAsText(name, x1)}, ${ funcs.axisAsText(name, x2)})` ;
6451864514 }
6451964515
6452064516 /** @summary generic draw function for histograms
@@ -99031,7 +99027,7 @@ class RPadPainter extends RObjectPainter {
9903199027
9903299028 if ((rect.width <= lmt) || (rect.height <= lmt)) {
9903399029 svg.style("display", "none");
99034- console.warn(" Hide canvas while geometry too small w=", rect.width," h=", rect.height);
99030+ console.warn(` Hide canvas while geometry too small w=${ rect.width} h=${ rect.height}` );
9903599031 rect.width = 200; rect.height = 100; // just to complete drawing
9903699032 } else {
9903799033 svg.style("display", null);
@@ -99325,6 +99321,12 @@ class RPadPainter extends RObjectPainter {
9932599321 return hints;
9932699322 }
9932799323
99324+ /** @summary Changes canvas dark mode
99325+ * @private */
99326+ changeDarkMode(mode) {
99327+ this.getCanvSvg().style("filter", (mode ?? settings.DarkMode) ? "invert(100%)" : null);
99328+ }
99329+
9932899330 /** @summary Fill pad context menu
9932999331 * @private */
9933099332 fillContextMenu(menu) {
@@ -99336,8 +99338,13 @@ class RPadPainter extends RObjectPainter {
9933699338
9933799339 menu.addchk(this.isTooltipAllowed(), "Show tooltips", () => this.setTooltipAllowed("toggle"));
9933899340
99339- if (!this._websocket)
99341+ if (!this._websocket) {
9934099342 menu.addAttributesMenu(this);
99343+ if (this.iscan)
99344+ menu.addSettingsMenu(false, false, arg => {
99345+ if (arg == "dark") this.changeDarkMode();
99346+ });
99347+ }
9934199348
9934299349 menu.add("separator");
9934399350
0 commit comments