mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2026-02-19 18:16:35 +01:00
LCL: fix the bug in FindControlAtPosition(), issue #42062
This commit is contained in:
parent
13ccaf0c22
commit
9239154fdb
@ -3429,14 +3429,19 @@ const
|
||||
var
|
||||
WinControl: TWinControl;
|
||||
Control: TControl;
|
||||
clientPos: TPoint;
|
||||
flags: TControlAtPosFlags;
|
||||
begin
|
||||
Result := nil;
|
||||
WinControl := FindLCLWindow(Position, AllowDisabled);
|
||||
if Assigned(WinControl) then
|
||||
begin
|
||||
Result := WinControl;
|
||||
Control := WinControl.ControlAtPos(WinControl.ScreenToClient(Position),
|
||||
[capfAllowWinControls, capfRecursive] + DisabledFlag[AllowDisabled]);
|
||||
clientPos := WinControl.ScreenToClient(Position);
|
||||
clientPos.Offset(WinControl.GetClientScrollOffset());
|
||||
flags := [capfAllowWinControls, capfRecursive, capfHasScrollOffset]
|
||||
+ DisabledFlag[AllowDisabled];
|
||||
Control := WinControl.ControlAtPos(clientPos, flags);
|
||||
//debugln(['FindControlAtPosition ',dbgs(Position),' ',DbgSName(WinControl),' ',dbgs(WinControl.ScreenToClient(Position)),' ',DbgSName(Control)]);
|
||||
if Assigned(Control) then
|
||||
Result := Control;
|
||||
|
||||
@ -5380,7 +5380,7 @@ begin
|
||||
(TWinControl(Result).ControlCount > 0) then
|
||||
begin
|
||||
// in LCL ClientOrigin contains the scroll offset. At least this is so
|
||||
// for win32 and gtk2
|
||||
// for win32 and gtk2 and Cocoa
|
||||
OldClientOrigin := ClientOrigin;
|
||||
NewClientOrigin := TWinControl(Result).ClientOrigin;
|
||||
NewPos := Pos;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user