mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
Fix ruler not redrawing on CTun toggle and band switch
Ruler (PbRuler) — отдельный paintbox, перерисовывается только по PbRuler.Invalidate. Дискретные события его не дёргали: - CTun toggle (batch 7): OnControllerState(rfCTun) рисовал спектр/водопад, но не линейку. Добавлен InvalidateRulerCache + PbRuler.Invalidate. - Смена диапазона: RestoreBand -> ApplyVfoA, а ApplyVfoA намеренно откладывает рендер на таймер (FSpectrumDirty) ради wheel/drag — что для оффлайна/без RUN не перерисовывало линейку. Добавлена синхронная инвалидация Ruler в конце RestoreBand (дискретное событие, флуда нет). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
2e4cd3cc65
commit
af1352b1e6
@@ -1034,6 +1034,11 @@ begin
|
||||
FController.FDriveLevel := CalcDriveByte;
|
||||
// ApplyVfoA обновит сеть, FreqDisp, shift, перерисует
|
||||
ApplyVfoA(Round(B.VfoA));
|
||||
// Смена диапазона — дискретное событие (не wheel/drag), поэтому
|
||||
// перерисовываем Ruler синхронно. ApplyVfoA откладывает рендер на таймер
|
||||
// (FSpectrumDirty), что для оффлайна/без RUN не перерисовывает линейку.
|
||||
FSpecView.InvalidateRulerCache;
|
||||
if PbRuler <> nil then PbRuler.Invalidate;
|
||||
end;
|
||||
|
||||
procedure TMainForm.SaveAllAndExit;
|
||||
@@ -1447,11 +1452,13 @@ begin
|
||||
rfCTun:
|
||||
begin
|
||||
StyleButton(BtnCTun, FController.FCTun);
|
||||
FSpecView.InvalidateRulerCache;
|
||||
SyncSpecViewFreq;
|
||||
FSpecView.DrawSpectrum;
|
||||
FSpecView.DrawWaterfall;
|
||||
PbSpectrum.Invalidate;
|
||||
PbWaterfall.Invalidate;
|
||||
if PbRuler <> nil then PbRuler.Invalidate;
|
||||
end;
|
||||
rfWfAGC:
|
||||
FSpecView.WfAGCEnabled := FController.FWfAGCEnabled;
|
||||
|
||||
Reference in New Issue
Block a user