mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-15 12:19:13 +02:00
customdrawn-android and x11: Implements proper targeting for MouseUp
git-svn-id: trunk@33883 -
This commit is contained in:
parent
af910e4d3b
commit
7a4de2176d
@ -21,6 +21,8 @@ type
|
|||||||
Window: X.TWindow;
|
Window: X.TWindow;
|
||||||
LCLControl: TWinControl;
|
LCLControl: TWinControl;
|
||||||
Children: TFPList; // of TCDWinControl;
|
Children: TFPList; // of TCDWinControl;
|
||||||
|
//
|
||||||
|
LastMouseDownControl: TWinControl; // Stores the control which should receive the next MouseUp
|
||||||
// Used and valid only during event processing
|
// Used and valid only during event processing
|
||||||
XEvent: PXEvent;
|
XEvent: PXEvent;
|
||||||
// X11 extra objects
|
// X11 extra objects
|
||||||
|
@ -54,9 +54,14 @@ begin
|
|||||||
lEventPos := FormPosToControlPos(lTarget, Round(X), Round(Y));
|
lEventPos := FormPosToControlPos(lTarget, Round(X), Round(Y));
|
||||||
|
|
||||||
case action of
|
case action of
|
||||||
ACTION_DOWN: LCLSendMouseDownMsg(lTarget, lEventPos.X, lEventPos.Y, mbLeft, []);
|
ACTION_DOWN:
|
||||||
|
begin
|
||||||
|
lCurForm.LastMouseDownControl := lTarget;
|
||||||
|
LCLSendMouseDownMsg(lTarget, lEventPos.X, lEventPos.Y, mbLeft, []);
|
||||||
|
end;
|
||||||
ACTION_UP:
|
ACTION_UP:
|
||||||
begin
|
begin
|
||||||
|
if lCurForm.LastMouseDownControl <> nil then lTarget := lCurForm.LastMouseDownControl;
|
||||||
LCLSendMouseUpMsg(lTarget, lEventPos.X, lEventPos.Y, mbLeft, []);
|
LCLSendMouseUpMsg(lTarget, lEventPos.X, lEventPos.Y, mbLeft, []);
|
||||||
LCLSendClickedMsg(lTarget);
|
LCLSendClickedMsg(lTarget);
|
||||||
end;
|
end;
|
||||||
|
@ -32,6 +32,8 @@ type
|
|||||||
public
|
public
|
||||||
LCLForm: TCustomForm;
|
LCLForm: TCustomForm;
|
||||||
Children: TFPList; // of TCDWinControl;
|
Children: TFPList; // of TCDWinControl;
|
||||||
|
//
|
||||||
|
LastMouseDownControl: TWinControl; // Stores the control which should receive the next MouseUp
|
||||||
// painting objects
|
// painting objects
|
||||||
Image: TLazIntfImage;
|
Image: TLazIntfImage;
|
||||||
Canvas: TLazCanvas;
|
Canvas: TLazCanvas;
|
||||||
|
@ -527,6 +527,7 @@ var
|
|||||||
lTarget: TWinControl;
|
lTarget: TWinControl;
|
||||||
begin
|
begin
|
||||||
lTarget := FindControlWhichReceivedEvent(TCustomForm(AWinControl), AWindowInfo.Children, Event.x, Event.y);
|
lTarget := FindControlWhichReceivedEvent(TCustomForm(AWinControl), AWindowInfo.Children, Event.x, Event.y);
|
||||||
|
AWindowInfo.LastMouseDownControl := lTarget;
|
||||||
|
|
||||||
if XButtonToMouseButton(Event.button, MouseButton) then
|
if XButtonToMouseButton(Event.button, MouseButton) then
|
||||||
begin
|
begin
|
||||||
@ -562,7 +563,9 @@ var
|
|||||||
lTarget: TWinControl;
|
lTarget: TWinControl;
|
||||||
lEventPos: TPoint;
|
lEventPos: TPoint;
|
||||||
begin
|
begin
|
||||||
lTarget := FindControlWhichReceivedEvent(TCustomForm(AWinControl), AWindowInfo.Children, Event.x, Event.y);
|
lTarget := AWindowInfo.LastMouseDownControl;
|
||||||
|
if lTarget = nil then
|
||||||
|
lTarget := FindControlWhichReceivedEvent(TCustomForm(AWinControl), AWindowInfo.Children, Event.x, Event.y);
|
||||||
lEventPos := FormPosToControlPos(lTarget, Event.x, Event.y);
|
lEventPos := FormPosToControlPos(lTarget, Event.x, Event.y);
|
||||||
|
|
||||||
{ Release events are only for mouse buttons, and not mouse wheel moviments }
|
{ Release events are only for mouse buttons, and not mouse wheel moviments }
|
||||||
|
Loading…
Reference in New Issue
Block a user