From 8f069fc08a123b1544c2a978586046e1ebb2173a Mon Sep 17 00:00:00 2001 From: skal Date: Wed, 18 Feb 2026 21:47:27 +0100 Subject: fix(mq_editor): destroy old viewer listeners on WAV reload Each loadAudioBuffer() was creating a new SpectrogramViewer without removing the previous one's canvas event listeners. Old viewers would fire on every mouse event, rendering stale spectrogram data and calling editor.onPartialSelect() with out-of-range indices (hiding the amp panel). Fix: store handlers as named instance properties, add destroy() to remove them, and call destroy() before creating a new viewer. handoff(Claude): bug fix only, no behaviour change Co-Authored-By: Claude Sonnet 4.6 --- tools/mq_editor/app.js | 1 + 1 file changed, 1 insertion(+) (limited to 'tools/mq_editor/app.js') diff --git a/tools/mq_editor/app.js b/tools/mq_editor/app.js index dd0a24f..d53af37 100644 --- a/tools/mq_editor/app.js +++ b/tools/mq_editor/app.js @@ -189,6 +189,7 @@ function loadAudioBuffer(buffer, label) { }); } + if (viewer) viewer.destroy(); viewer = new SpectrogramViewer(canvas, audioBuffer, stftCache); viewer.setFrames(peakFrames); document.getElementById('exploreBtn').disabled = false; -- cgit v1.2.3