diff --git a/src/components/display/displayView.jsx b/src/components/display/displayView.jsx index d1601f1a..4ab4db97 100644 --- a/src/components/display/displayView.jsx +++ b/src/components/display/displayView.jsx @@ -441,22 +441,13 @@ class DisplayView extends Component { window.dispatchEvent(new CustomEvent("unfuse", { detail: { source: 'open' } })); } - // 1. Check if loading just finished - if (prevState.isLoading && !this.state.isLoading) { - // All DOM for viewports now exists - this.attachListenersToAllViewports(); - } - // 1. When loading finishes → viewports first appear if (prevState.isLoading && !this.state.isLoading) { this.attachListenersToAllViewports(); return; } - // 2. When viewport count changes OR viewport content changes - const dataChanged = - this.state.data !== prevState.data || - this.state.data.length !== prevState.data.length; + const dataChanged = seriesReplaced || series.length !== prevSeries.length; if (!this.state.isLoading && dataChanged) { this.attachListenersToAllViewports(); @@ -500,6 +491,7 @@ class DisplayView extends Component { el.removeEventListener("mouseup", this.mouseupStopScroll); el.removeEventListener("mouseleave", this.mouseupStopScroll); el.removeEventListener("contextmenu", this.preventContextMenu); + console.log("✓ listeners detached from viewport", i); }; preventContextMenu = (e) => { @@ -2852,6 +2844,7 @@ class DisplayView extends Component { this.setActive(i); return; } + this.detachScrollListenersFor(i); this.closeViewport(i); };