mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-23 05:19:31 +02:00
SynEdit: Free up Gutter.OnResize / OnChange
git-svn-id: trunk@35335 -
This commit is contained in:
parent
cb02facd7d
commit
3e7296c6d4
@ -1892,11 +1892,11 @@ begin
|
||||
fBookMarkOpt.OnChange := {$IFDEF FPC}@{$ENDIF}BookMarkOptionsChanged;
|
||||
|
||||
FLeftGutter := CreateGutter(self, gsLeft, FTextDrawer);
|
||||
FLeftGutter.OnChange := {$IFDEF FPC}@{$ENDIF}GutterChanged;
|
||||
FLeftGutter.OnResize := {$IFDEF FPC}@{$ENDIF}GutterResized;
|
||||
FLeftGutter.RegisterChangeHandler({$IFDEF FPC}@{$ENDIF}GutterChanged);
|
||||
FLeftGutter.RegisterResizeHandler({$IFDEF FPC}@{$ENDIF}GutterResized);
|
||||
FRightGutter := CreateGutter(self, gsRight, FTextDrawer);
|
||||
FRightGutter.OnChange := {$IFDEF FPC}@{$ENDIF}GutterChanged;
|
||||
FRightGutter.OnResize := {$IFDEF FPC}@{$ENDIF}GutterResized;
|
||||
FRightGutter.RegisterChangeHandler({$IFDEF FPC}@{$ENDIF}GutterChanged);
|
||||
FRightGutter.RegisterResizeHandler({$IFDEF FPC}@{$ENDIF}GutterResized);
|
||||
|
||||
ControlStyle := ControlStyle + [csOpaque, csSetCaption, csTripleClicks, csQuadClicks];
|
||||
Height := 150;
|
||||
@ -2210,6 +2210,10 @@ begin
|
||||
FreeAndNil(fPlugins);
|
||||
end;
|
||||
RemoveHandlers;
|
||||
FLeftGutter.UnRegisterChangeHandler({$IFDEF FPC}@{$ENDIF}GutterChanged);
|
||||
FLeftGutter.UnRegisterResizeHandler({$IFDEF FPC}@{$ENDIF}GutterResized);
|
||||
FRightGutter.UnRegisterChangeHandler({$IFDEF FPC}@{$ENDIF}GutterChanged);
|
||||
FRightGutter.UnRegisterResizeHandler({$IFDEF FPC}@{$ENDIF}GutterResized);
|
||||
|
||||
FreeAndNil(FHookedKeyTranslationList);
|
||||
fHookedCommandHandlers:=nil;
|
||||
|
@ -63,6 +63,8 @@ type
|
||||
property Width;
|
||||
property Parts;
|
||||
property MouseActions;
|
||||
property OnResize;
|
||||
property OnChange;
|
||||
end;
|
||||
|
||||
{ TSynGutterSeparator }
|
||||
|
@ -5,7 +5,7 @@ unit SynGutterBase;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Graphics, Controls, Menus, math, SynEditMarks,
|
||||
Classes, SysUtils, Graphics, Controls, Menus, math, LCLProc, SynEditMarks,
|
||||
SynEditMiscClasses, SynTextDrawer, SynEditMouseCmds, SynEditFoldedView;
|
||||
|
||||
type
|
||||
@ -38,6 +38,8 @@ type
|
||||
FOnResize: TNotifyEvent;
|
||||
FOnChange: TNotifyEvent;
|
||||
FMouseActions: TSynEditMouseInternalActions;
|
||||
FOnResizeHandler: TMethodList;
|
||||
FOnChangeHandler: TMethodList;
|
||||
|
||||
function GetMouseActions: TSynEditMouseActions;
|
||||
procedure SetAutoSize(const AValue: boolean);
|
||||
@ -70,6 +72,10 @@ type
|
||||
function MaybeHandleMouseAction(var AnInfo: TSynEditMouseActionInfo;
|
||||
HandleActionProc: TSynEditMouseActionHandler): Boolean; virtual;
|
||||
procedure ResetMouseActions; virtual; // set mouse-actions according to current Options / may clear them
|
||||
procedure RegisterResizeHandler(AHandler: TNotifyEvent);
|
||||
procedure UnregisterResizeHandler(AHandler: TNotifyEvent);
|
||||
procedure RegisterChangeHandler(AHandler: TNotifyEvent);
|
||||
procedure UnregisterChangeHandler(AHandler: TNotifyEvent);
|
||||
property Left: Integer read FLeft;
|
||||
property Top: Integer read FTop;
|
||||
property Height:Integer read FHeight;
|
||||
@ -214,12 +220,16 @@ uses SynEdit;
|
||||
constructor TSynGutterBase.Create(AOwner: TSynEditBase; ASide: TSynGutterSide;
|
||||
ATextDrawer: TheTextDrawer);
|
||||
begin
|
||||
FOnResizeHandler := TMethodList.Create;
|
||||
FOnChangeHandler := TMethodList.Create;
|
||||
|
||||
inherited Create;
|
||||
FSide := ASide;
|
||||
FSynEdit := AOwner;
|
||||
CreatePartList;
|
||||
FMouseActions := CreateMouseActions;
|
||||
|
||||
|
||||
FInDoChange := False;
|
||||
FChangeLock := 0;
|
||||
FTextDrawer := ATextDrawer;
|
||||
@ -237,6 +247,8 @@ begin
|
||||
FOnResize := nil;
|
||||
FreeAndNil(FGutterPartList);
|
||||
FreeAndNil(FMouseActions);
|
||||
FreeAndNil(FOnChangeHandler);
|
||||
FreeAndNil(FOnResizeHandler);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
@ -306,6 +318,26 @@ begin
|
||||
FMouseActions.ResetUserActions;
|
||||
end;
|
||||
|
||||
procedure TSynGutterBase.RegisterResizeHandler(AHandler: TNotifyEvent);
|
||||
begin
|
||||
FOnResizeHandler.Add(TMethod(AHandler));
|
||||
end;
|
||||
|
||||
procedure TSynGutterBase.UnregisterResizeHandler(AHandler: TNotifyEvent);
|
||||
begin
|
||||
FOnResizeHandler.Remove(TMethod(AHandler));
|
||||
end;
|
||||
|
||||
procedure TSynGutterBase.RegisterChangeHandler(AHandler: TNotifyEvent);
|
||||
begin
|
||||
FOnChangeHandler.Add(TMethod(AHandler));
|
||||
end;
|
||||
|
||||
procedure TSynGutterBase.UnregisterChangeHandler(AHandler: TNotifyEvent);
|
||||
begin
|
||||
FOnChangeHandler.Remove(TMethod(AHandler));
|
||||
end;
|
||||
|
||||
procedure TSynGutterBase.SetColor(const Value: TColor);
|
||||
begin
|
||||
if FColor <> Value then
|
||||
@ -430,6 +462,7 @@ begin
|
||||
FInDoChange := False;
|
||||
end;
|
||||
end;
|
||||
FOnChangeHandler.CallNotifyEvents(Self);
|
||||
if Assigned(FOnChange) then
|
||||
FOnChange(Self);
|
||||
end;
|
||||
@ -441,6 +474,7 @@ begin
|
||||
exit;
|
||||
end;
|
||||
FNeedOnResize := False;
|
||||
FOnResizeHandler.CallNotifyEvents(Self);
|
||||
if Assigned(FOnResize) then
|
||||
FOnResize(Self)
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user