From 659c5cbedb123b1ab4386b2e32f62a618ee04240 Mon Sep 17 00:00:00 2001 From: OzgeYurtsever Date: Mon, 15 Dec 2025 23:16:34 -0800 Subject: [PATCH 1/2] Fix repetitive event listener operation --- src/components/display/displayView.jsx | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/components/display/displayView.jsx b/src/components/display/displayView.jsx index d1601f1a..baffec51 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(); From db6c3e185118d9d8e14a8b32c485b9c17be1fb1f Mon Sep 17 00:00:00 2001 From: OzgeYurtsever Date: Tue, 16 Dec 2025 08:00:42 -0800 Subject: [PATCH 2/2] Detach event listener when closing single ports --- src/components/display/displayView.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/display/displayView.jsx b/src/components/display/displayView.jsx index baffec51..4ab4db97 100644 --- a/src/components/display/displayView.jsx +++ b/src/components/display/displayView.jsx @@ -447,7 +447,7 @@ class DisplayView extends Component { return; } - const dataChanged = seriesReplaced || series.length > prevSeries.length; + const dataChanged = seriesReplaced || series.length !== prevSeries.length; if (!this.state.isLoading && dataChanged) { this.attachListenersToAllViewports(); @@ -491,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) => { @@ -2843,6 +2844,7 @@ class DisplayView extends Component { this.setActive(i); return; } + this.detachScrollListenersFor(i); this.closeViewport(i); };