From 6d18f5e1d49e5d85b427a24e4ed833aa2ba8df2b Mon Sep 17 00:00:00 2001 From: Stan Grams Date: Thu, 12 Mar 2026 20:49:43 +0100 Subject: [PATCH] [fix](trx-frontend): enable BW drag handles on vchans Use the active channel frequency for spectrum bandwidth edge hit-testing. Co-authored-by: OpenAI Codex Signed-off-by: Stan Grams --- .../trx-frontend-http/assets/web/app.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js index 80cc958..2c96d5c 100644 --- a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js @@ -927,10 +927,7 @@ function drawSignalOverlay() { } } - const _bwCenterHz = (typeof vchanIsOnVirtual === "function" && vchanIsOnVirtual() && - typeof vchanActiveChannel === "function") - ? (vchanActiveChannel()?.freq_hz ?? lastFreqHz) - : lastFreqHz; + const _bwCenterHz = activeBandwidthCenterHz(); if (_bwCenterHz != null && currentBandwidthHz > 0) { for (const spec of visibleBandwidthSpecs(_bwCenterHz)) { const span = displaySpanForBandwidthSpec(spec); @@ -1298,6 +1295,11 @@ function activeChannelFreqHz() { return lastFreqHz; } +function activeBandwidthCenterHz() { + const freqHz = activeChannelFreqHz(); + return Number.isFinite(freqHz) ? freqHz : lastFreqHz; +} + function buildRdsOverlayHtml(rds) { const ps = rds?.program_service; const hasPs = !!(ps && ps.length > 0); @@ -7791,12 +7793,13 @@ if (overviewCanvas) { // ── BW strip edge hit-test (CSS pixels) ────────────────────────────────────── function getBwEdgeHit(cssX, cssW, range) { - if (!lastFreqHz || !currentBandwidthHz || !lastSpectrumData) return null; + const bwCenterHz = activeBandwidthCenterHz(); + if (!Number.isFinite(bwCenterHz) || !currentBandwidthHz || !lastSpectrumData) return null; const HIT = 8; let bestEdge = null; let bestDist = Number.POSITIVE_INFINITY; - for (const spec of visibleBandwidthSpecs(lastFreqHz)) { + for (const spec of visibleBandwidthSpecs(bwCenterHz)) { const span = displaySpanForBandwidthSpec(spec); const xL = ((span.loHz - range.visLoHz) / range.visSpanHz) * cssW; const xR = ((span.hiHz - range.visLoHz) / range.visSpanHz) * cssW;