mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 05:59:25 +02:00
FpDocView, SourceEditor: Prevent loosing MouseCapture while user selects text with mouse. Issue #0037150
git-svn-id: trunk@63249 -
This commit is contained in:
parent
03e92d0d2c
commit
668ee99dd1
@ -257,7 +257,9 @@ type
|
||||
semEditorCreate, // Called after a new editor was created and added to list
|
||||
semEditorDestroy, // Called when an Editor is destroyed / after it is removed fron the list of editors
|
||||
semEditorActivate, // Editor is ActiveEditor
|
||||
semEditorStatus // any status change of the editor (Caret, Selection, topline, ...)
|
||||
semEditorStatus, // any status change of the editor (Caret, Selection, topline, ...)
|
||||
semEditorMouseDown,
|
||||
semEditorMouseUp
|
||||
);
|
||||
|
||||
TSemSelectionMode = (
|
||||
|
@ -182,6 +182,7 @@ type
|
||||
procedure OpenXML;
|
||||
function GUIModified: boolean;
|
||||
procedure DoEditorUpdate(Sender: TObject);
|
||||
procedure DoEditorMouseUp(Sender: TObject);
|
||||
private
|
||||
FFollowCursor: boolean;
|
||||
FIdleConnected: boolean;
|
||||
@ -304,6 +305,7 @@ begin
|
||||
|
||||
SourceEditorManagerIntf.RegisterChangeEvent(semEditorActivate, @DoEditorUpdate);
|
||||
SourceEditorManagerIntf.RegisterChangeEvent(semEditorStatus, @DoEditorUpdate);
|
||||
SourceEditorManagerIntf.RegisterChangeEvent(semEditorMouseUp, @DoEditorMouseUp);
|
||||
|
||||
FollowCursor:=true;
|
||||
IdleConnected:=true;
|
||||
@ -1050,6 +1052,14 @@ begin
|
||||
end;
|
||||
|
||||
procedure TFPDocEditor.DoEditorUpdate(Sender: TObject);
|
||||
begin
|
||||
if GetCaptureControl <> nil then // If SynEdit has Capture the user may be selecting by Mouse. https://bugs.freepascal.org/view.php?id=37150
|
||||
exit;
|
||||
if FollowCursor then
|
||||
LoadIdentifierAtCursor;
|
||||
end;
|
||||
|
||||
procedure TFPDocEditor.DoEditorMouseUp(Sender: TObject);
|
||||
begin
|
||||
if FollowCursor then
|
||||
LoadIdentifierAtCursor;
|
||||
|
@ -272,6 +272,8 @@ 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;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
procedure EditorMouseWheel(Sender: TObject; Shift: TShiftState;
|
||||
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
|
||||
procedure EditorKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||
@ -5111,6 +5113,7 @@ Begin
|
||||
OnMouseMove := @EditorMouseMoved;
|
||||
OnMouseWheel := @EditorMouseWheel;
|
||||
OnMouseDown := @EditorMouseDown;
|
||||
OnMouseUp := @EditorMouseUp;
|
||||
OnClickLink := Manager.OnClickLink;
|
||||
OnMouseLink := Manager.OnMouseLink;
|
||||
OnKeyDown := @EditorKeyDown;
|
||||
@ -5661,6 +5664,16 @@ begin
|
||||
CheckActiveWindow;
|
||||
if Assigned(OnMouseDown) then
|
||||
OnMouseDown(Sender, Button, Shift, X,Y);
|
||||
|
||||
if (Manager <> nil) then
|
||||
Manager.FChangeNotifyLists[semEditorMouseDown].CallNotifyEvents(Self);
|
||||
end;
|
||||
|
||||
procedure TSourceEditor.EditorMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
begin
|
||||
if (Manager <> nil) then
|
||||
Manager.FChangeNotifyLists[semEditorMouseUp].CallNotifyEvents(Self);
|
||||
end;
|
||||
|
||||
procedure TSourceEditor.EditorKeyDown(Sender: TObject; var Key: Word;
|
||||
|
Loading…
Reference in New Issue
Block a user