@@ -16,6 +16,12 @@ function isPadPainter(p) {
16
16
return isFunc ( p ?. getRootPad ) && isFunc ( p ?. forEachPainterInPad ) ;
17
17
}
18
18
19
+ /** @summary returns canvas painter from DOM element @private */
20
+ function getDomCanvasPainter ( dom ) {
21
+ const elem = dom ?. select ( '.root_canvas' ) ;
22
+ return ! elem || elem . empty ( ) ? null : elem . property ( 'pad_painter' ) ;
23
+ }
24
+
19
25
/**
20
26
* @summary Painter class for ROOT objects
21
27
*
@@ -78,18 +84,11 @@ class ObjectPainter extends BasePainter {
78
84
79
85
/** @summary returns canvas painter
80
86
* @protected */
81
- getCanvPainter ( try_select ) {
87
+ getCanvPainter ( ) {
82
88
let pp = this . getPadPainter ( ) ;
83
- if ( ! pp && try_select ) {
84
- const elem = this . getCanvSvg ( ) ;
85
- return elem . empty ( ) ? null : elem . property ( 'pad_painter' ) ;
86
- }
87
- while ( pp && ! pp . isCanvas ( ) ) {
88
- const top = pp . getPadPainter ( ) ;
89
- if ( ! top ) break ;
90
- pp = top ;
91
- }
92
- return pp ?. isCanvas ( ) ? pp : null ;
89
+ while ( pp && ! pp . isCanvas ( ) )
90
+ pp = pp . getPadPainter ( ) ;
91
+ return pp ;
93
92
}
94
93
95
94
/** @summary Indicates that drawing runs in batch mode
@@ -643,7 +642,7 @@ class ObjectPainter extends BasePainter {
643
642
pad_painter = this . #pad_painter_ref. deref ( ) ;
644
643
else {
645
644
if ( ! pad_painter )
646
- pad_painter = this . getCanvPainter ( true ) ; // try to detect in DOM
645
+ pad_painter = getDomCanvasPainter ( this . selectDom ( ) ) ; // try to detect in DOM
647
646
if ( pad_painter )
648
647
this . #pad_painter_ref = new WeakRef ( pad_painter ) ;
649
648
}
@@ -1683,21 +1682,21 @@ function drawRawText(dom, txt /* , opt */) {
1683
1682
}
1684
1683
1685
1684
/** @summary Returns canvas painter (if any) for specified DOM element
1686
- * @param {string|object } dom - id or DOM element
1685
+ * @param {string|object } dom - id or DOM element or pad painter
1687
1686
* @private */
1688
1687
function getElementCanvPainter ( dom ) {
1689
- return isPadPainter ( dom ) ? dom . getCanvPainter ( ) : new ObjectPainter ( dom ) . getCanvPainter ( true ) ;
1688
+ return isPadPainter ( dom ) ? dom . getCanvPainter ( ) : getDomCanvasPainter ( new ObjectPainter ( dom ) . selectDom ( ) ) ;
1690
1689
}
1691
1690
1692
1691
/** @summary Returns pad painter (if any) for specified DOM element
1693
- * @param {string|object } dom - id or DOM element
1692
+ * @param {string|object } dom - id or DOM element or pad painter
1694
1693
* @private */
1695
1694
function getElementPadPainter ( dom ) {
1696
1695
return isPadPainter ( dom ) ? dom : new ObjectPainter ( dom ) . getPadPainter ( ) ;
1697
1696
}
1698
1697
1699
1698
/** @summary Returns main painter (if any) for specified HTML element - typically histogram painter
1700
- * @param {string|object } dom - id or DOM element
1699
+ * @param {string|object } dom - id or DOM element or pad painter
1701
1700
* @private */
1702
1701
function getElementMainPainter ( dom ) {
1703
1702
return isPadPainter ( dom ) ? dom . getMainPainter ( ) : new ObjectPainter ( dom ) . getMainPainter ( true ) ;
@@ -1796,6 +1795,6 @@ const EAxisBits = {
1796
1795
1797
1796
Object . assign ( internals . jsroot , { ObjectPainter, cleanup, resize } ) ;
1798
1797
1799
- export { isPadPainter , getElementPadPainter , getElementCanvPainter , getElementMainPainter , drawingJSON ,
1798
+ export { isPadPainter , getDomCanvasPainter , getElementPadPainter , getElementCanvPainter , getElementMainPainter , drawingJSON ,
1800
1799
selectActivePad , getActivePad , cleanup , resize , drawRawText ,
1801
1800
ObjectPainter , EAxisBits , kAxisLabels , kAxisNormal , kAxisFunc , kAxisTime } ;
0 commit comments