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:
@@ -292,6 +292,7 @@ type
|
||||
procedure DispatchFlagsMouseMove(X, Y: Integer);
|
||||
function DispatchFlagsMouseUp(X, Y: Integer): Boolean;
|
||||
procedure DispatchFlagsMouseLeave;
|
||||
function DispatchFlagsMouseWheel(X, Y, WheelDelta: Integer): Boolean;
|
||||
|
||||
property Controller: TRadioController read FController write FController;
|
||||
property MainFlag: TVfoOverlay read FMainFlag;
|
||||
@@ -1557,4 +1558,24 @@ begin
|
||||
if FSliceFlags[i] <> nil then FSliceFlags[i].HandleMouseLeave;
|
||||
end;
|
||||
|
||||
// Колесо над раскрытым списком устройств во флаге: прокрутка списка вместо
|
||||
// перестройки частоты. Координаты — в системе спектра (как у остальных Handle*).
|
||||
function TPanafallPanel.DispatchFlagsMouseWheel(X, Y, WheelDelta: Integer): Boolean;
|
||||
var i: Integer;
|
||||
begin
|
||||
Result := False;
|
||||
if Assigned(FMainFlag) and FMainFlag.Visible then
|
||||
begin
|
||||
FActiveFlag := FMainFlag;
|
||||
if FMainFlag.HandleMouseWheel(X, Y, WheelDelta) then Exit(True);
|
||||
end;
|
||||
for i := 0 to High(FSliceFlags) do
|
||||
if (FSliceFlags[i] <> nil) and FSliceFlags[i].Visible then
|
||||
begin
|
||||
FActiveFlag := FSliceFlags[i];
|
||||
if FSliceFlags[i].HandleMouseWheel(X, Y, WheelDelta) then Exit(True);
|
||||
end;
|
||||
FActiveFlag := nil;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
Reference in New Issue
Block a user