mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 19:45:09 +00:00
ui(vfo): колесо мыши прокручивает список устройств в AUD
VfoOverlay запоминает прямоугольник списка (FAudListRect) и обрабатывает колесо над ним (HandleMouseWheel): шаг = одна строка. Если курсор в этой зоне, событие считается обработанным и не уходит в спектр — частота не съезжает даже когда список целиком помещается и крутить нечего. PanafallPanel.DispatchFlagsMouseWheel перебирает главный флаг и флаги слайсов (как остальные Dispatch*), MainForm.FormMouseWheel зовёт его по всем панам первым делом после дисплеев VFO; координаты берутся через PbSpectrum.ScreenToClient(Mouse.CursorPos), поэтому работает и в pop-out. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -7885,12 +7885,27 @@ var
|
||||
SLo, SHi, SNew: Double;
|
||||
Sl: TCtrlSlice;
|
||||
SlicePan: TPanafallPanel;
|
||||
P: TPoint;
|
||||
begin
|
||||
// Над дисплеем VFO (A или B) колесо обрабатывает сам TFreqDisplay поразрядно
|
||||
// (включая неактивный VFO). Не дублируем здесь, иначе менялись бы обе частоты:
|
||||
// виджет крутил бы B, а этот хендлер — активный A.
|
||||
if OverFreqDisp(FreqDispA) or OverFreqDisp(FreqDispB) then Exit;
|
||||
|
||||
// Колесо над раскрытым списком устройств во флаге — прокрутка этого списка.
|
||||
for i := 0 to MAX_PANS - 1 do
|
||||
if (FPans[i] <> nil) and Assigned(FPans[i].PbSpectrum) and
|
||||
FPans[i].PbSpectrum.Visible then
|
||||
begin
|
||||
P := FPans[i].PbSpectrum.ScreenToClient(Mouse.CursorPos);
|
||||
if FPans[i].DispatchFlagsMouseWheel(P.X, P.Y, WheelDelta) then
|
||||
begin
|
||||
MarkPanDirty(FPans[i]);
|
||||
Handled := True;
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
// Колесо над маркером слайса (любого пана) — двигаем частоту ЭТОГО слайса.
|
||||
SliceId := 0;
|
||||
SlicePan := nil;
|
||||
|
||||
Reference in New Issue
Block a user