mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-22 23:19:28 +02:00
synedit: fixed moving selection by mouse dragging, from Martin Friebe
git-svn-id: trunk@15760 -
This commit is contained in:
parent
cadf49eda8
commit
4fdf213191
@ -163,7 +163,7 @@ type
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
sfTripleClicked, sfQuadClicked, sfPainting,
|
||||
{$ENDIF}
|
||||
sfWaitForDragging, sfInsideRedo
|
||||
sfWaitForDragging,{$IFDEF SYN_LAZARUS} sfIsDragging,{$ENDIF} sfInsideRedo
|
||||
); //mh 2000-10-30
|
||||
TSynStateFlags = set of TSynStateFlag;
|
||||
|
||||
@ -456,6 +456,9 @@ type
|
||||
fOnReplaceText: TReplaceTextEvent;
|
||||
fOnSpecialLineColors: TSpecialLineColorsEvent;
|
||||
fOnStatusChange: TStatusChangeEvent;
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
FOnCtrlLeftMouseUp: TMouseEvent;
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
procedure AquirePrimarySelection;
|
||||
@ -988,6 +991,7 @@ protected
|
||||
property OnMouseMove;
|
||||
property OnMouseUp;
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
property OnCtrlLeftMouseUp : TMouseEvent read FOnCtrlLeftMouseUp write FOnCtrlLeftMouseUp;
|
||||
property OnMouseEnter;
|
||||
property OnMouseLeave;
|
||||
{$ENDIF}
|
||||
@ -2423,6 +2427,9 @@ begin
|
||||
or (Abs(fMouseDownY - Y) >= GetSystemMetrics(SM_CYDRAG))
|
||||
then begin
|
||||
Exclude(fStateFlags, sfWaitForDragging);
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
Include(fStateFlags, sfIsDragging);
|
||||
{$ENDIF}
|
||||
//debugln('TCustomSynEdit.MouseMove BeginDrag');
|
||||
BeginDrag({$IFDEF SYN_LAZARUS}true{$ELSE}false{$ENDIF});
|
||||
end;
|
||||
@ -2436,6 +2443,10 @@ begin
|
||||
and (Y < ClientHeight{$IFDEF SYN_LAZARUS}-ScrollBarWidth{$ENDIF})
|
||||
then
|
||||
ComputeCaret(X, Y);
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
if (not(sfIsDragging in fStateFlags))
|
||||
then
|
||||
{$ENDIF}
|
||||
SetBlockEnd({$IFDEF SYN_LAZARUS}PhysicalToLogicalPos(CaretXY)
|
||||
{$ELSE}CaretXY{$ENDIF});
|
||||
// should we begin scrolling?
|
||||
@ -2466,7 +2477,9 @@ begin
|
||||
end;
|
||||
fScrollTimer.Enabled := (fScrollDeltaX <> 0) or (fScrollDeltaY <> 0);
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
end else if MouseCapture then begin
|
||||
end else if MouseCapture
|
||||
and (not(sfIsDragging in fStateFlags))
|
||||
then begin
|
||||
MouseCapture:=false;
|
||||
fScrollTimer.Enabled := False;
|
||||
{$ENDIF}
|
||||
@ -2528,6 +2541,10 @@ begin
|
||||
if fScrollDeltaX > 0 then // scrolling right?
|
||||
Inc(X, CharsInWindow);
|
||||
CaretXY := Point(X, C.Y);
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
if (not(sfIsDragging in fStateFlags))
|
||||
then
|
||||
{$ENDIF}
|
||||
SetBlockEnd({$IFDEF SYN_LAZARUS}PhysicalToLogicalPos(CaretXY)
|
||||
{$ELSE}CaretXY{$ENDIF});
|
||||
end;
|
||||
@ -2540,6 +2557,10 @@ begin
|
||||
if fScrollDeltaY > 0 then // scrolling down?
|
||||
Inc(Y, LinesInWindow - 1);
|
||||
CaretXY := Point(C.X, Y);
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
if (not(sfIsDragging in fStateFlags))
|
||||
then
|
||||
{$ENDIF}
|
||||
SetBlockEnd({$IFDEF SYN_LAZARUS}PhysicalToLogicalPos(CaretXY)
|
||||
{$ELSE}CaretXY{$ENDIF});
|
||||
end;
|
||||
@ -2550,9 +2571,18 @@ end;
|
||||
|
||||
procedure TCustomSynEdit.MouseUp(Button: TMouseButton; Shift: TShiftState;
|
||||
X, Y: Integer);
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
var
|
||||
wasDragging : Boolean;
|
||||
{$ENDIF}
|
||||
begin
|
||||
//DebugLn('TCustomSynEdit.MouseUp Mouse=',X,',',Y,' Caret=',CaretX,',',CaretY,', BlockBegin=',BlockBegin.X,',',BlockBegin.Y,' BlockEnd=',BlockEnd.X,',',BlockEnd.Y);
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
wasDragging := (sfIsDragging in fStateFlags);
|
||||
Exclude(fStateFlags, sfIsDragging);
|
||||
{$ENDIF}
|
||||
inherited MouseUp(Button, Shift, X, Y);
|
||||
|
||||
fScrollTimer.Enabled := False;
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
MouseCapture := False;
|
||||
@ -2603,6 +2633,14 @@ begin
|
||||
Exclude(fStateFlags, sfDblClicked);
|
||||
Exclude(fStateFlags, sfPossibleGutterClick);
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
if (eoShowCtrlMouseLinks in Options)
|
||||
and not(wasDragging)
|
||||
and (Button=mbLeft) and (Shift=[ssCtrl])
|
||||
and assigned(FOnCtrlLeftMouseUp)
|
||||
then FOnCtrlLeftMouseUp(Self, Button, Shift, X,Y);;
|
||||
{$ENDIF}
|
||||
//DebugLn('TCustomSynEdit.MouseUp END Mouse=',X,',',Y,' Caret=',CaretX,',',CaretY,', BlockBegin=',BlockBegin.X,',',BlockBegin.Y,' BlockEnd=',BlockEnd.X,',',BlockEnd.Y);
|
||||
end;
|
||||
|
||||
|
@ -1669,7 +1669,7 @@ begin
|
||||
SourceNotebook.OnActivate := @OnSrcNoteBookActivated;
|
||||
SourceNotebook.OnAddJumpPoint := @OnSrcNoteBookAddJumpPoint;
|
||||
SourceNotebook.OnCloseClicked := @OnSrcNotebookFileClose;
|
||||
SourceNotebook.OnCtrlMouseUp := @OnSrcNoteBookCtrlMouseUp;
|
||||
SourceNotebook.OnCtrlLeftMouseUp := @OnSrcNoteBookCtrlMouseUp;
|
||||
SourceNotebook.OnCurrentCodeBufferChanged:=@OnSrcNotebookCurCodeBufferChanged;
|
||||
SourceNotebook.OnDeleteLastJumpPoint := @OnSrcNotebookDeleteLastJumPoint;
|
||||
SourceNotebook.OnEditorVisibleChanged := @OnSrcNotebookEditorVisibleChanged;
|
||||
|
@ -136,7 +136,7 @@ type
|
||||
FVisible: Boolean;
|
||||
FOnMouseMove: TMouseMoveEvent;
|
||||
FOnMouseDown: TMouseEvent;
|
||||
FOnMouseUp: TMouseEvent;
|
||||
FOnCtrlLeftMouseUp: TMouseEvent;
|
||||
FOnMouseWheel : tMouseWheelEvent;
|
||||
FOnKeyDown: TKeyEvent;
|
||||
|
||||
@ -145,7 +145,7 @@ type
|
||||
Procedure EditorMouseMoved(Sender: TObject; Shift: TShiftState; X,Y:Integer);
|
||||
Procedure EditorMouseDown(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftState; X,Y: Integer);
|
||||
Procedure EditorMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
Procedure EditorCtrlLeftMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftState; X,Y: Integer);
|
||||
procedure EditorMouseWheel(Sender: TObject; Shift: TShiftState;
|
||||
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
|
||||
@ -361,7 +361,7 @@ type
|
||||
write FOnEditorChange;
|
||||
property OnMouseMove: TMouseMoveEvent read FOnMouseMove write FOnMouseMove;
|
||||
property OnMouseDown: TMouseEvent read FOnMouseDown write FOnMouseDown;
|
||||
property OnMouseUp: TMouseEvent read FOnMouseUp write FOnMouseUp;
|
||||
property OnCtrlLeftMouseUp: TMouseEvent read FOnCtrlLeftMouseUp write FOnCtrlLeftMouseUp;
|
||||
property OnMouseWheel: TMouseWheelEvent read FOnMouseWheel write FOnMouseWheel;
|
||||
property OnKeyDown: TKeyEvent read FOnKeyDown write FOnKeyDown;
|
||||
property Owner: TComponent read FAOwner;
|
||||
@ -476,7 +476,7 @@ type
|
||||
FOnAddJumpPoint: TOnAddJumpPoint;
|
||||
FOnAddWatchAtCursor: TOnAddWatch;
|
||||
FOnCloseClicked: TOnCloseSrcEditor;
|
||||
FOnCtrlMouseUp: TMouseEvent;
|
||||
FOnCtrlLeftMouseUp: TMouseEvent;
|
||||
FOnCurrentCodeBufferChanged: TNotifyEvent;
|
||||
FOnDeleteLastJumpPoint: TNotifyEvent;
|
||||
FOnEditorChanged: TNotifyEvent;
|
||||
@ -576,7 +576,7 @@ type
|
||||
X,Y: Integer);
|
||||
procedure EditorMouseDown(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftstate; X,Y: Integer);
|
||||
procedure EditorMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
procedure EditorCtrlLeftMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftstate; X,Y: Integer);
|
||||
procedure EditorKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||
procedure EditorMouseWheel(Sender: TObject; Shift: TShiftState;
|
||||
@ -755,8 +755,8 @@ type
|
||||
read FOnAddJumpPoint write FOnAddJumpPoint;
|
||||
property OnCloseClicked: TOnCloseSrcEditor
|
||||
read FOnCloseClicked write FOnCloseClicked;
|
||||
property OnCtrlMouseUp: TMouseEvent
|
||||
read FOnCtrlMouseUp write FOnCtrlMouseUp;
|
||||
property OnCtrlLeftMouseUp: TMouseEvent
|
||||
read FOnCtrlLeftMouseUp write FOnCtrlLeftMouseUp;
|
||||
property OnDeleteLastJumpPoint: TNotifyEvent
|
||||
read FOnDeleteLastJumpPoint write FOnDeleteLastJumpPoint;
|
||||
property OnEditorVisibleChanged: TNotifyEvent
|
||||
@ -2260,7 +2260,7 @@ Begin
|
||||
OnMouseMove := @EditorMouseMoved;
|
||||
OnMouseWheel := @EditorMouseWheel;
|
||||
OnMouseDown := @EditorMouseDown;
|
||||
OnMouseUp := @EditorMouseUp;
|
||||
OnCtrlLeftMouseUp := @EditorCtrlLeftMouseUp;
|
||||
OnKeyDown := @EditorKeyDown;
|
||||
end;
|
||||
if FCodeTemplates<>nil then
|
||||
@ -2665,11 +2665,11 @@ begin
|
||||
OnMouseDown(Sender, Button, Shift, X,Y);
|
||||
end;
|
||||
|
||||
procedure TSourceEditor.EditorMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
procedure TSourceEditor.EditorCtrlLeftMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
begin
|
||||
if Assigned(OnMouseUp) then
|
||||
OnMouseUp(Sender, Button, Shift, X,Y);
|
||||
if Assigned(OnCtrlLeftMouseUp) then
|
||||
OnCtrlLeftMouseUp(Sender, Button, Shift, X,Y);
|
||||
end;
|
||||
|
||||
Procedure TSourceEditor.EditorKeyDown(Sender: TObject; var Key: Word; Shift :
|
||||
@ -4388,7 +4388,7 @@ Begin
|
||||
Result.OnMouseMove := @EditorMouseMove;
|
||||
Result.OnMouseDown := @EditorMouseDown;
|
||||
Result.OnMouseWheel := @EditorMouseWheel;
|
||||
Result.OnMouseUp := @EditorMouseUp;
|
||||
Result.OnCtrlLeftMouseUp := @EditorCtrlLeftMouseUp;
|
||||
Result.OnKeyDown :=@EditorKeyDown;
|
||||
|
||||
Result.EditorComponent.EndUpdate;
|
||||
@ -6231,15 +6231,13 @@ begin
|
||||
HideHint;
|
||||
end;
|
||||
|
||||
procedure TSourceNotebook.EditorMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
procedure TSourceNotebook.EditorCtrlLeftMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftstate; X, Y: Integer);
|
||||
begin
|
||||
if EditorOpts.CtrlMouseLinks and (GetKeyShiftState=[ssCtrl]) then begin
|
||||
// Control+MouseUp = Find Declaration
|
||||
if Assigned(FOnCtrlMouseUp) then begin
|
||||
FOnCtrlMouseUp(Sender,Button,Shift,X,Y);
|
||||
// CtrlLeftMouseUp = Find Declaration
|
||||
if Assigned(FOnCtrlLeftMouseUp) then begin
|
||||
FOnCtrlLeftMouseUp(Sender,Button,Shift,X,Y);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSourceNotebook.EditorKeyDown(Sender: TObject; var Key: Word;
|
||||
|
Loading…
Reference in New Issue
Block a user