mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-07 21:58:20 +02:00
SynEdit: Added threshold before starting selection by mouse-move. Avoid accidental selection.
git-svn-id: trunk@30071 -
This commit is contained in:
parent
7382bb0de7
commit
bde4fc65af
@ -179,7 +179,7 @@ type
|
|||||||
// Mouse-states
|
// Mouse-states
|
||||||
sfLeftGutterClick, sfRightGutterClick,
|
sfLeftGutterClick, sfRightGutterClick,
|
||||||
sfDblClicked, sfTripleClicked, sfQuadClicked,
|
sfDblClicked, sfTripleClicked, sfQuadClicked,
|
||||||
sfWaitForDragging, sfIsDragging, sfMouseSelecting, sfMouseDoneSelecting,
|
sfWaitForDragging, sfIsDragging, sfWaitForMouseSelecting, sfMouseSelecting, sfMouseDoneSelecting,
|
||||||
sfIgnoreUpClick
|
sfIgnoreUpClick
|
||||||
); //mh 2000-10-30
|
); //mh 2000-10-30
|
||||||
TSynStateFlags = set of TSynStateFlag;
|
TSynStateFlags = set of TSynStateFlag;
|
||||||
@ -2591,7 +2591,7 @@ begin
|
|||||||
Include(fStateFlags, sfMouseDoneSelecting);
|
Include(fStateFlags, sfMouseDoneSelecting);
|
||||||
end;
|
end;
|
||||||
MouseCapture := True;
|
MouseCapture := True;
|
||||||
Include(fStateFlags, sfMouseSelecting);
|
Include(fStateFlags, sfWaitForMouseSelecting);
|
||||||
end;
|
end;
|
||||||
emcSelectWord:
|
emcSelectWord:
|
||||||
begin
|
begin
|
||||||
@ -2744,7 +2744,7 @@ begin
|
|||||||
|
|
||||||
fStateFlags := fStateFlags - [sfDblClicked, sfTripleClicked, sfQuadClicked,
|
fStateFlags := fStateFlags - [sfDblClicked, sfTripleClicked, sfQuadClicked,
|
||||||
sfLeftGutterClick, sfRightGutterClick,
|
sfLeftGutterClick, sfRightGutterClick,
|
||||||
sfMouseSelecting, sfMouseDoneSelecting,
|
sfWaitForMouseSelecting, sfMouseSelecting, sfMouseDoneSelecting,
|
||||||
sfWaitForDragging, sfIgnoreUpClick
|
sfWaitForDragging, sfIgnoreUpClick
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -2802,14 +2802,20 @@ begin
|
|||||||
LastMouseCaret := PixelsToRowColumn(Point(X,Y));
|
LastMouseCaret := PixelsToRowColumn(Point(X,Y));
|
||||||
UpdateCursor;
|
UpdateCursor;
|
||||||
|
|
||||||
|
if (sfWaitForMouseSelecting in fStateFlags) and MouseCapture and
|
||||||
|
( (abs(fMouseDownX-X) >= MinMax(fCharWidth div 2, 2, 4)) or
|
||||||
|
(abs(fMouseDownY-Y) >= MinMax(fTextHeight div 2, 2, 4)) )
|
||||||
|
then
|
||||||
|
FStateFlags := FStateFlags - [sfWaitForMouseSelecting] + [sfMouseSelecting];
|
||||||
|
|
||||||
//debugln('TCustomSynEdit.MouseMove sfWaitForDragging=',dbgs(sfWaitForDragging in fStateFlags),' MouseCapture=',dbgs(MouseCapture),' GetCaptureControl=',DbgSName(GetCaptureControl));
|
//debugln('TCustomSynEdit.MouseMove sfWaitForDragging=',dbgs(sfWaitForDragging in fStateFlags),' MouseCapture=',dbgs(MouseCapture),' GetCaptureControl=',DbgSName(GetCaptureControl));
|
||||||
if MouseCapture and (sfWaitForDragging in fStateFlags) then begin
|
if MouseCapture and (sfWaitForDragging in fStateFlags) then begin
|
||||||
if (Abs(fMouseDownX - X) >= GetSystemMetrics(SM_CXDRAG))
|
if (Abs(fMouseDownX - X) >= GetSystemMetrics(SM_CXDRAG))
|
||||||
or (Abs(fMouseDownY - Y) >= GetSystemMetrics(SM_CYDRAG))
|
or (Abs(fMouseDownY - Y) >= GetSystemMetrics(SM_CYDRAG))
|
||||||
then begin
|
then begin
|
||||||
Exclude(fStateFlags, sfWaitForDragging);
|
FStateFlags := FStateFlags
|
||||||
Exclude(fStateFlags, sfMouseSelecting);
|
-[sfWaitForDragging, sfWaitForMouseSelecting, sfMouseSelecting]
|
||||||
Include(fStateFlags, sfIsDragging);
|
+ [sfIsDragging];
|
||||||
//debugln('TCustomSynEdit.MouseMove BeginDrag');
|
//debugln('TCustomSynEdit.MouseMove BeginDrag');
|
||||||
BeginDrag(true);
|
BeginDrag(true);
|
||||||
end;
|
end;
|
||||||
@ -2872,7 +2878,7 @@ begin
|
|||||||
FBlockSelection.DecPersistentLock;
|
FBlockSelection.DecPersistentLock;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if MouseCapture and (not(sfIsDragging in fStateFlags))
|
if MouseCapture and (fStateFlags * [sfIsDragging, sfWaitForMouseSelecting] = [])
|
||||||
then begin
|
then begin
|
||||||
MouseCapture:=false;
|
MouseCapture:=false;
|
||||||
fScrollTimer.Enabled := False;
|
fScrollTimer.Enabled := False;
|
||||||
@ -2970,6 +2976,7 @@ begin
|
|||||||
wasSelecting := (sfMouseDoneSelecting in fStateFlags);
|
wasSelecting := (sfMouseDoneSelecting in fStateFlags);
|
||||||
ignoreUp := (sfIgnoreUpClick in fStateFlags);
|
ignoreUp := (sfIgnoreUpClick in fStateFlags);
|
||||||
Exclude(fStateFlags, sfIsDragging);
|
Exclude(fStateFlags, sfIsDragging);
|
||||||
|
Exclude(fStateFlags, sfWaitForMouseSelecting);
|
||||||
Exclude(fStateFlags, sfMouseSelecting);
|
Exclude(fStateFlags, sfMouseSelecting);
|
||||||
Exclude(fStateFlags, sfMouseDoneSelecting);
|
Exclude(fStateFlags, sfMouseDoneSelecting);
|
||||||
Exclude(fStateFlags, sfIgnoreUpClick);
|
Exclude(fStateFlags, sfIgnoreUpClick);
|
||||||
|
Loading…
Reference in New Issue
Block a user