mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-07 21:18:01 +02:00
LCL: Fix #40416: Mouse Message issue (Enter/Level/Move)
This commit is contained in:
parent
5b6b7955cb
commit
53cd3db19c
@ -1287,7 +1287,7 @@ type
|
||||
function IsHelpKeyWordStored: Boolean;
|
||||
function IsShowHintStored: Boolean;
|
||||
function IsVisibleStored: Boolean;
|
||||
procedure DoBeforeMouseMessage;
|
||||
procedure DoBeforeMouseMessage(TheMessage: TLMessage);
|
||||
procedure DoConstrainedResize(var NewLeft, NewTop, NewWidth, NewHeight: Integer);
|
||||
procedure SetAccessibleName(AValue: TCaption);
|
||||
procedure SetAccessibleDescription(AValue: TCaption);
|
||||
|
@ -1583,6 +1583,7 @@ type
|
||||
destructor Destroy; override;
|
||||
procedure ActivateHint(CursorPos: TPoint; CheckHintControlChange: Boolean = False);
|
||||
function GetControlAtMouse: TControl;
|
||||
function GetControlAtPos(P: TPoint): TControl;
|
||||
procedure ControlDestroyed(AControl: TControl);
|
||||
function BigIconHandle: HIcon;
|
||||
function SmallIconHandle: HIcon;
|
||||
|
@ -559,7 +559,12 @@ var
|
||||
P: TPoint;
|
||||
begin
|
||||
GetCursorPos(P);
|
||||
//debugln(['TApplication.GetControlAtMouse p=',dbgs(p),' FLastMousePos=',dbgs(FLastMousePos)]);
|
||||
Result:= GetControlAtPos(P);
|
||||
end;
|
||||
|
||||
function TApplication.GetControlAtPos(P: TPoint): TControl;
|
||||
begin
|
||||
//debugln(['TApplication.GetControlAtPos p=',dbgs(p),' FLastMousePos=',dbgs(FLastMousePos)]);
|
||||
if FLastMouseControlValid and (P.X = FLastMousePos.x) and (P.Y = FLastMousePos.Y) then
|
||||
Result := FLastMouseControl
|
||||
else
|
||||
|
@ -1399,15 +1399,21 @@ end;
|
||||
{------------------------------------------------------------------------------
|
||||
procedure TControl.DoBeforeMouseMessage;
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TControl.DoBeforeMouseMessage;
|
||||
procedure TControl.DoBeforeMouseMessage(TheMessage: TLMessage);
|
||||
var
|
||||
MouseMessage: TLMMouse absolute TheMessage;
|
||||
P: TPoint;
|
||||
NewMouseControl: TControl;
|
||||
begin
|
||||
if Assigned(Application) then
|
||||
begin
|
||||
NewMouseControl := GetCaptureControl;
|
||||
if NewMouseControl = nil then
|
||||
NewMouseControl := Application.GetControlAtMouse;
|
||||
begin
|
||||
P := GetMousePosFromMessage(MouseMessage.Pos);
|
||||
p := ClientToScreen(P);
|
||||
NewMouseControl := Application.GetControlAtPos(P);
|
||||
end;
|
||||
Application.DoBeforeMouseMessage(NewMouseControl);
|
||||
end;
|
||||
end;
|
||||
|
@ -5392,7 +5392,7 @@ begin
|
||||
DebugLn('TWinControl.WndPRoc A ',Name,':',ClassName);
|
||||
{$ENDIF}
|
||||
//if Message.Msg=LM_RBUTTONUP then begin DebugLn(['TWinControl.WndProc ',DbgSName(Self)]); DumpStack end;
|
||||
DoBeforeMouseMessage;
|
||||
DoBeforeMouseMessage(Message);
|
||||
if IsControlMouseMSG(Message) then
|
||||
Exit
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user