Skip to content

Commit f6844fa

Browse files
committed
Build with basepainter.cleanup fix
1 parent 92fc8c0 commit f6844fa

File tree

3 files changed

+38
-50
lines changed

3 files changed

+38
-50
lines changed

build/jsroot.js

Lines changed: 35 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const version_id = 'dev',
1212

1313
/** @summary version date
1414
* @desc Release date in format day/month/year like '14/04/2022' */
15-
version_date = '30/06/2025',
15+
version_date = '4/07/2025',
1616

1717
/** @summary version id and date
1818
* @desc Produced by concatenation of {@link version_id} and {@link version_date}
@@ -9143,10 +9143,11 @@ class BasePainter {
91439143
* @private */
91449144
#accessTopPainter(on) {
91459145
const chld = this.selectDom().node()?.firstChild;
9146-
if (!chld) return null;
9146+
if (!chld)
9147+
return null;
91479148
if (on === true)
91489149
chld.painter = this;
9149-
else if (on === false)
9150+
else if ((on === false) && (chld.painter === this))
91509151
delete chld.painter;
91519152
return chld.painter;
91529153
}
@@ -9169,7 +9170,8 @@ class BasePainter {
91699170
cleanup(keep_origin) {
91709171
this.clearTopPainter();
91719172
const origin = this.selectDom('origin');
9172-
if (!origin.empty() && !keep_origin) origin.html('');
9173+
if (!origin.empty() && !keep_origin)
9174+
origin.html('');
91739175
this.#divid = null;
91749176
this.#selected_main = undefined;
91759177

@@ -13169,14 +13171,16 @@ class ObjectPainter extends BasePainter {
1316913171
* @private */
1317013172
forEachPainter(userfunc, kind) {
1317113173
// iterate over all painters from pad list
13172-
const pp = this.getPadPainter();
13174+
let pp = this.getPadPainter(), top = null;
13175+
if (!pp) {
13176+
top = this.getTopPainter();
13177+
if (isPadPainter(top))
13178+
pp = top;
13179+
}
1317313180
if (pp)
1317413181
pp.forEachPainterInPad(userfunc, kind);
13175-
else {
13176-
const painter = this.getTopPainter();
13177-
if (painter && (kind !== 'pads'))
13178-
userfunc(painter);
13179-
}
13182+
else if (top && (kind !== 'pads'))
13183+
userfunc(top);
1318013184
}
1318113185

1318213186
/** @summary indicate that redraw was invoked via interactive action (like context menu or zooming)
@@ -73383,10 +73387,10 @@ const Handling3DDrawings = {
7338373387
const main = this.selectDom().node();
7338473388
let chld = main?.firstChild;
7338573389

73386-
if (chld && !chld.$jsroot)
73390+
while (chld && !chld.$jsroot)
7338773391
chld = chld.nextSibling;
7338873392

73389-
if (chld?.$jsroot) {
73393+
if (chld?.$jsroot === '3d') {
7339073394
delete chld.painter;
7339173395
main.removeChild(chld);
7339273396
}
@@ -73421,7 +73425,7 @@ const Handling3DDrawings = {
7342173425
if (main !== null) {
7342273426
main.appendChild(canv);
7342373427
canv.painter = this;
73424-
canv.$jsroot = true; // mark canvas as added by jsroot
73428+
canv.$jsroot = '3d'; // mark canvas as added by jsroot
7342573429
}
7342673430

7342773431
return;
@@ -111963,6 +111967,10 @@ class TGeoPainter extends ObjectPainter {
111963111967
/** @summary Returns top Object3D instance */
111964111968
getTopObject3D() { return this.#toplevel; }
111965111969

111970+
/** @summary Assign geometry viewer mode
111971+
* @private */
111972+
setGeomViewer(on) { this.#geom_viewer = on; }
111973+
111966111974
/** @summary Assign or remove subordinate painter */
111967111975
assignSubordinate(painter, do_assign = true) {
111968111976
if (this.#subordinate_painters === undefined)
@@ -115375,12 +115383,12 @@ class TGeoPainter extends ObjectPainter {
115375115383
if (name_prefix === '__geom_viewer_append__') {
115376115384
this.#new_append_nodes = draw_obj;
115377115385
this.ctrl.use_worker = 0;
115378-
this.#geom_viewer = true; // indicate that working with geom viewer
115386+
this.setGeomViewer(true); // indicate that working with geom viewer
115379115387
} else if ((name_prefix === '__geom_viewer_selection__') && this.#clones) {
115380115388
// these are selection done from geom viewer
115381115389
this.#new_draw_nodes = draw_obj;
115382115390
this.ctrl.use_worker = 0;
115383-
this.#geom_viewer = true; // indicate that working with geom viewer
115391+
this.setGeomViewer(true); // indicate that working with geom viewer
115384115392
} else if (this.getCentral())
115385115393
this.assignClones(this.getCentral().getClones(), false);
115386115394
else if (!draw_obj)
@@ -165374,6 +165382,7 @@ class HierarchyPainter extends BasePainter {
165374165382
showProgress();
165375165383
if (isFunc(respainter?.setItemName)) {
165376165384
respainter.setItemName(display_itemname, updating ? null : drawopt, this); // mark painter as created from hierarchy
165385+
165377165386
if (item && !item._painter)
165378165387
item._painter = respainter;
165379165388
}
@@ -165458,6 +165467,7 @@ class HierarchyPainter extends BasePainter {
165458165467

165459165468
if (isFunc(p.redrawObject)) {
165460165469
const pr = p.redrawObject(obj, drawopt);
165470+
165461165471
if (pr) {
165462165472
painter = p;
165463165473
arr.push(pr);
@@ -165628,9 +165638,8 @@ class HierarchyPainter extends BasePainter {
165628165638
}
165629165639
if (!forced && only_auto_items) return;
165630165640
}
165631-
} else
165632-
if (arg.indexOf(itemname) < 0) return;
165633-
165641+
} else if (arg.indexOf(itemname) < 0)
165642+
return;
165634165643

165635165644
allitems.push(itemname);
165636165645
options.push('update:' + p.getItemDrawOpt());
@@ -165770,10 +165779,11 @@ class HierarchyPainter extends BasePainter {
165770165779
// now check if several same items present - select only one for the drawing
165771165780
// if draw option includes 'main', such item will be drawn first
165772165781
for (let n = 0; n < items.length; ++n) {
165773-
if (items_wait[n] !== 0) continue;
165782+
if (items_wait[n] !== 0)
165783+
continue;
165774165784
let found_main = n;
165775165785
for (let k = 0; k < items.length; ++k) {
165776-
if ((items[n]===items[k]) && (options[k].indexOf('main') >= 0))
165786+
if ((items[n] === items[k]) && (options[k].indexOf('main') >= 0))
165777165787
found_main = k;
165778165788
}
165779165789
for (let k = 0; k < items.length; ++k) {
@@ -165783,7 +165793,8 @@ class HierarchyPainter extends BasePainter {
165783165793
}
165784165794

165785165795
return this.createDisplay().then(mdi => {
165786-
if (!mdi) return false;
165796+
if (!mdi)
165797+
return false;
165787165798

165788165799
const doms = new Array(items.length);
165789165800

@@ -176153,30 +176164,10 @@ async function readHeaderFooter(tuple) {
176153176164
if (!firstColumn)
176154176165
throw new Error('No column descriptor found');
176155176166

176156-
const field = tuple.builder.fieldDescriptors?.[firstColumn.fieldId];
176157-
176158-
// Returns the size in bytes of one value based on its type
176159-
function getElementSize(typeName) {
176160-
switch (typeName) {
176161-
case 'double': return 8;
176162-
case 'float': return 4;
176163-
case 'int32_t':
176164-
case 'uint32_t': return 4;
176165-
case 'int64_t':
176166-
case 'uint64_t': return 8;
176167-
case 'int16_t':
176168-
case 'uint16_t': return 2;
176169-
case 'bool':
176170-
case 'uint8_t':
176171-
case 'int8_t': return 1;
176172-
default:
176173-
throw new Error(`Unknown type for uncompressed page size: ${typeName}`);
176174-
}
176175-
}
176176-
176167+
const field = tuple.builder.fieldDescriptors?.[firstColumn.fieldId],
176177176168

176178176169
// Deserialize the Page List Envelope
176179-
const group = tuple.builder.clusterGroups?.[0];
176170+
group = tuple.builder.clusterGroups?.[0];
176180176171
if (!group || !group.pageListLocator)
176181176172
throw new Error('No valid cluster group or page list locator found');
176182176173

@@ -176202,7 +176193,7 @@ async function readHeaderFooter(tuple) {
176202176193

176203176194
const pageOffset = Number(firstPage.locator.offset),
176204176195
pageSize = Number(firstPage.locator.size),
176205-
elementSize = getElementSize(field?.typeName ?? ''),
176196+
elementSize = firstColumn.bitsOnStorage / 8,
176206176197
numElements = Number(firstPage.numElements),
176207176198
uncompressedPageSize = elementSize * numElements;
176208176199

@@ -176230,7 +176221,6 @@ async function readHeaderFooter(tuple) {
176230176221
});
176231176222
}
176232176223

176233-
176234176224
/** @summary Create hierarchy of ROOT::RNTuple object
176235176225
* @desc Used by hierarchy painter to explore sub-elements
176236176226
* @private */

modules/core.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const version_id = 'dev',
44

55
/** @summary version date
66
* @desc Release date in format day/month/year like '14/04/2022' */
7-
version_date = '30/06/2025',
7+
version_date = '4/07/2025',
88

99
/** @summary version id and date
1010
* @desc Produced by concatenation of {@link version_id} and {@link version_date}

modules/gui/HierarchyPainter.mjs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2353,10 +2353,8 @@ class HierarchyPainter extends BasePainter {
23532353
}
23542354
if (!forced && only_auto_items) return;
23552355
}
2356-
} else {
2357-
if (arg.indexOf(itemname) < 0)
2358-
return;
2359-
}
2356+
} else if (arg.indexOf(itemname) < 0)
2357+
return;
23602358

23612359
allitems.push(itemname);
23622360
options.push('update:' + p.getItemDrawOpt());

0 commit comments

Comments
 (0)