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;
|
FController.FDriveLevel := CalcDriveByte;
|
||||||
// ApplyVfoA обновит сеть, FreqDisp, shift, перерисует
|
// ApplyVfoA обновит сеть, FreqDisp, shift, перерисует
|
||||||
ApplyVfoA(Round(B.VfoA));
|
ApplyVfoA(Round(B.VfoA));
|
||||||
|
// Смена диапазона — дискретное событие (не wheel/drag), поэтому
|
||||||
|
// перерисовываем Ruler синхронно. ApplyVfoA откладывает рендер на таймер
|
||||||
|
// (FSpectrumDirty), что для оффлайна/без RUN не перерисовывает линейку.
|
||||||
|
FSpecView.InvalidateRulerCache;
|
||||||
|
if PbRuler <> nil then PbRuler.Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.SaveAllAndExit;
|
procedure TMainForm.SaveAllAndExit;
|
||||||
@@ -1447,11 +1452,13 @@ begin
|
|||||||
rfCTun:
|
rfCTun:
|
||||||
begin
|
begin
|
||||||
StyleButton(BtnCTun, FController.FCTun);
|
StyleButton(BtnCTun, FController.FCTun);
|
||||||
|
FSpecView.InvalidateRulerCache;
|
||||||
SyncSpecViewFreq;
|
SyncSpecViewFreq;
|
||||||
FSpecView.DrawSpectrum;
|
FSpecView.DrawSpectrum;
|
||||||
FSpecView.DrawWaterfall;
|
FSpecView.DrawWaterfall;
|
||||||
PbSpectrum.Invalidate;
|
PbSpectrum.Invalidate;
|
||||||
PbWaterfall.Invalidate;
|
PbWaterfall.Invalidate;
|
||||||
|
if PbRuler <> nil then PbRuler.Invalidate;
|
||||||
end;
|
end;
|
||||||
rfWfAGC:
|
rfWfAGC:
|
||||||
FSpecView.WfAGCEnabled := FController.FWfAGCEnabled;
|
FSpecView.WfAGCEnabled := FController.FWfAGCEnabled;
|
||||||
|
|||||||
Reference in New Issue
Block a user