[fix](trx-frontend-http): match waterfall BW resize behavior to waveform

Enable BW edge drag initiation on overview/waterfall canvas and align drag/click suppression behavior with waveform interactions.

Co-authored-by: OpenAI Codex <codex@openai.com>
Signed-off-by: Stan Grams <sjg@haxx.space>
This commit is contained in:
2026-03-05 22:10:49 +01:00
parent 5dcc117e61
commit 3f2892e245
@@ -6973,6 +6973,10 @@ function handleSpectrumWheel(e, canvasEl) {
} }
function handleSpectrumClick(e, canvasEl) { function handleSpectrumClick(e, canvasEl) {
if (_sDragMoved) {
_sDragMoved = false;
return;
}
if (!lastSpectrumData || !canvasEl) return; if (!lastSpectrumData || !canvasEl) return;
const rect = canvasEl.getBoundingClientRect(); const rect = canvasEl.getBoundingClientRect();
const cssX = e.clientX - rect.left; const cssX = e.clientX - rect.left;
@@ -7043,12 +7047,12 @@ function getBwEdgeHit(cssX, cssW, range) {
// ── Mouse drag to pan / BW resize ───────────────────────────────────────────── // ── Mouse drag to pan / BW resize ─────────────────────────────────────────────
let _sDragStart = null; // { clientX, panFrac } let _sDragStart = null; // { clientX, panFrac }
let _sDragMoved = false; let _sDragMoved = false;
let _sDragCanvas = null;
if (spectrumCanvas) { function onSpectrumMouseDown(e, canvasEl) {
spectrumCanvas.addEventListener("mousedown", (e) => { if (!canvasEl || e.button !== 0) return;
if (e.button !== 0) return;
if (lastSpectrumData) { if (lastSpectrumData) {
const rect = spectrumCanvas.getBoundingClientRect(); const rect = canvasEl.getBoundingClientRect();
const cssX = e.clientX - rect.left; const cssX = e.clientX - rect.left;
const range = spectrumVisibleRange(lastSpectrumData); const range = spectrumVisibleRange(lastSpectrumData);
const edge = getBwEdgeHit(cssX, rect.width, range); const edge = getBwEdgeHit(cssX, rect.width, range);
@@ -7056,16 +7060,26 @@ if (spectrumCanvas) {
_bwDragEdge = edge; _bwDragEdge = edge;
_bwDragStartX = cssX; _bwDragStartX = cssX;
_bwDragStartBwHz = currentBandwidthHz; _bwDragStartBwHz = currentBandwidthHz;
_bwDragCanvas = spectrumCanvas; _bwDragCanvas = canvasEl;
_sDragStart = null; _sDragStart = null;
_sDragCanvas = null;
_sDragMoved = true; // suppress click-to-tune _sDragMoved = true; // suppress click-to-tune
return; return;
} }
} }
_sDragStart = { clientX: e.clientX, panFrac: spectrumPanFrac }; _sDragStart = { clientX: e.clientX, panFrac: spectrumPanFrac };
_sDragCanvas = canvasEl;
_sDragMoved = false; _sDragMoved = false;
}); }
if (spectrumCanvas) {
spectrumCanvas.addEventListener("mousedown", (e) => { onSpectrumMouseDown(e, spectrumCanvas); });
}
if (overviewCanvas) {
overviewCanvas.addEventListener("mousedown", (e) => { onSpectrumMouseDown(e, overviewCanvas); });
}
if (spectrumCanvas || overviewCanvas) {
window.addEventListener("mousemove", (e) => { window.addEventListener("mousemove", (e) => {
if (_bwDragEdge && lastSpectrumData) { if (_bwDragEdge && lastSpectrumData) {
const dragCanvas = _bwDragCanvas || spectrumCanvas; const dragCanvas = _bwDragCanvas || spectrumCanvas;
@@ -7095,7 +7109,9 @@ if (spectrumCanvas) {
return; return;
} }
if (!_sDragStart || !lastSpectrumData) return; if (!_sDragStart || !lastSpectrumData) return;
const rect = spectrumCanvas.getBoundingClientRect(); const dragCanvas = _sDragCanvas || spectrumCanvas || overviewCanvas;
if (!dragCanvas) return;
const rect = dragCanvas.getBoundingClientRect();
const dx = e.clientX - _sDragStart.clientX; const dx = e.clientX - _sDragStart.clientX;
if (Math.abs(dx) > 3) _sDragMoved = true; if (Math.abs(dx) > 3) _sDragMoved = true;
spectrumPanFrac = _sDragStart.panFrac - (dx / rect.width) / spectrumZoom; spectrumPanFrac = _sDragStart.panFrac - (dx / rect.width) / spectrumZoom;
@@ -7115,6 +7131,7 @@ if (spectrumCanvas) {
return; return;
} }
_sDragStart = null; _sDragStart = null;
_sDragCanvas = null;
}); });
} }
@@ -7213,7 +7230,6 @@ if (spectrumCanvas) {
// ── Click to tune (only when not dragging) ──────────────────────────────────── // ── Click to tune (only when not dragging) ────────────────────────────────────
if (spectrumCanvas) { if (spectrumCanvas) {
spectrumCanvas.addEventListener("click", (e) => { spectrumCanvas.addEventListener("click", (e) => {
if (_sDragMoved) { _sDragMoved = false; return; }
handleSpectrumClick(e, spectrumCanvas); handleSpectrumClick(e, spectrumCanvas);
}); });
} }