diff --git a/browser/src/control/jsdialog/Widget.TreeView.js b/browser/src/control/jsdialog/Widget.TreeView.js index ccaca9b406db..20f826d47939 100644 --- a/browser/src/control/jsdialog/Widget.TreeView.js +++ b/browser/src/control/jsdialog/Widget.TreeView.js @@ -1072,15 +1072,11 @@ class ComplexTableControl extends TreeViewControl { } static onClick(e) { - let td = e.target; - if (!td || td.localName !== 'td') + let tr = ComplexTableControl.findRow(e.target); + if (!tr) return; - let tr = td.parentElement; - if (!tr || tr.localName !== 'tr') - return; - - let expand = td.firstChild; + let expand = tr.firstChild.firstChild; if (expand && tr.hasAttribute('aria-expanded') && e.clientX < expand.getBoundingClientRect().left) { ComplexTableControl.toggleExpand(tr); @@ -1088,13 +1084,24 @@ class ComplexTableControl extends TreeViewControl { } let selected = tr.getAttribute('aria-selected') === 'true'; - if (ComplexTableControl.Selected) ComplexTableControl.selectEntry(ComplexTableControl.Selected, false); ComplexTableControl.Selected = ComplexTableControl.selectEntry(tr, !selected); } + static findRow(elem) { + let tr = elem; + if (tr && tr.localName === 'tbody') + return null; + + while (tr && tr.localName !== 'tr') { + tr = tr.parentElement; + } + + return tr; + } + fillCells(entry, builder, tr) { let td, span, text, img, icon, iconId, iconName, link, innerText;