From 0032f227a7b97e445a71300ac6737cf4af82333a Mon Sep 17 00:00:00 2001 From: paul Date: Fri, 6 Sep 2013 02:08:15 +0000 Subject: [PATCH] lcl: don't call GetCursorPos() twice while initializing Drag/Dock operation. Use the first time retrieved value. git-svn-id: trunk@42626 - --- lcl/include/dragmanager.inc | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/lcl/include/dragmanager.inc b/lcl/include/dragmanager.inc index 6941116ca2..4368444f91 100644 --- a/lcl/include/dragmanager.inc +++ b/lcl/include/dragmanager.inc @@ -98,6 +98,8 @@ type procedure DragStart(AControl: TControl; AImmediate: Boolean; AThreshold: Integer); override; procedure DragMove(APosition: TPoint); override; procedure DragStop(ADropped: Boolean); override; + + property StartPosition: TPoint read FStartPosition; end; @@ -129,17 +131,13 @@ end; constructor TDragPerformer.Create(AManager: TDragManagerDefault; AControl: TControl); //Start a drag operation, if not already running -var - p: TPoint; begin inherited Create(AManager, AControl); AControl.DoStartDrag(FDragObject); if FDragObject = nil then FDragObject := TDragControlObject.AutoCreate(AControl); - - GetCursorPos(p); - FDragObject.DragPos := p; + FDragObject.DragPos := AManager.StartPosition; SetCaptureControl(AControl); end; @@ -270,16 +268,13 @@ end; constructor TDockPerformer.Create(AManager: TDragManagerDefault; AControl: TControl); //Start a drag operation, if not already running -var - APoint: TPoint; begin inherited Create(AManager, AControl); AControl.DoStartDock(TDragObject(FDockObject)); if FDockObject = nil then FDockObject := TDragDockObject.AutoCreate(AControl); - GetCursorPos(APoint); - FDockObject.InitDock(APoint); + FDockObject.InitDock(AManager.StartPosition); // we are tracking capture change to stop drag/dock is happen SetCaptureControl(AControl); end;