diff --git a/MainForm.pas b/MainForm.pas index e7c1770..334d0a4 100644 --- a/MainForm.pas +++ b/MainForm.pas @@ -1032,13 +1032,8 @@ begin // Пересчитываем drive byte для нового диапазона перед отправкой в сеть FController.FDriveLevel := CalcDriveByte; - // ApplyVfoA обновит сеть, FreqDisp, shift, перерисует + // ApplyVfoA обновит сеть, FreqDisp, shift, Ruler — перерисует. ApplyVfoA(Round(B.VfoA)); - // Смена диапазона — дискретное событие (не wheel/drag), поэтому - // перерисовываем Ruler синхронно. ApplyVfoA откладывает рендер на таймер - // (FSpectrumDirty), что для оффлайна/без RUN не перерисовывает линейку. - FSpecView.InvalidateRulerCache; - if PbRuler <> nil then PbRuler.Invalidate; end; procedure TMainForm.SaveAllAndExit; @@ -4732,9 +4727,13 @@ begin // Не рисуем синхронно из wheel/drag path: частые события мыши иначе // забивают UI-поток и мешают аудио. Таймер подхватит ближайший кадр. + // Сам DrawSpectrum/DrawWaterfall откладываем (FSpectrumDirty), но Invalidate + // дёргаем сразу — он лишь планирует перерисовку. Линейку (PbRuler) тоже: + // её рендер дешёвый и без него она отставала от спектра при клике/смене VFO. SyncSpecViewFreq; FSpectrumDirty := True; PbSpectrum.Invalidate; + if PbRuler <> nil then PbRuler.Invalidate; if Scrolled then begin FWaterfallDirty := True;