mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 10:19:36 +02:00
SynEdit Gutter: Fixing some AutoSize stuff
git-svn-id: trunk@18362 -
This commit is contained in:
parent
de0f8578f0
commit
3b28b9026f
@ -7857,7 +7857,8 @@ var
|
||||
begin
|
||||
if not (csLoading in ComponentState) then begin
|
||||
FGutter.AutoSizeDigitCount(FTheLinesView.Count); // Todo: Make the LineNumberGutterPart an observer
|
||||
nW := fGutter.RealGutterWidth(fCharWidth);
|
||||
fGutter.RealGutterWidth(fCharWidth);
|
||||
nW := fGutter.Width;
|
||||
if nW = fGutterWidth then
|
||||
InvalidateGutter
|
||||
else
|
||||
|
@ -99,7 +99,7 @@ type
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
constructor Create(AOwner: TComponent; AGutter: TSynGutter);
|
||||
// destructor Destroy; override;
|
||||
destructor Destroy; override;
|
||||
property Items[Index: Integer]: TSynGutterPartBase
|
||||
read GetPart write PutPart; default;
|
||||
end;
|
||||
@ -114,12 +114,12 @@ type
|
||||
FMarkupInfo: TSynSelectedColor;
|
||||
FCursor: TCursor;
|
||||
FVisible: Boolean;
|
||||
FWidth : integer;
|
||||
FOnChange: TNotifyEvent;
|
||||
FOnGutterClick: TGutterClickEvent;
|
||||
function GetGutterParts: TSynGutterPartList;
|
||||
procedure SetMarkupInfo(const AValue: TSynSelectedColor);
|
||||
protected
|
||||
FWidth : integer;
|
||||
procedure SetAutoSize(const AValue : boolean); virtual;
|
||||
procedure SetVisible(const AValue : boolean); virtual;
|
||||
procedure SetWidth(const AValue : integer); virtual;
|
||||
@ -476,7 +476,7 @@ begin
|
||||
|
||||
Result := FLeftOffset + FRightOffset;
|
||||
|
||||
for i := FGutterPartList.Count-1 downto 0 do
|
||||
for i := GutterPartCount-1 downto 0 do
|
||||
Result := Result + GutterPart[i].RealGutterWidth(CharWidth);
|
||||
end;
|
||||
|
||||
@ -487,7 +487,10 @@ end;
|
||||
|
||||
function TSynGutter.GetGutterPartCount: integer;
|
||||
begin
|
||||
result := FGutterPartList.Count;
|
||||
if FGutterPartList <> nil then
|
||||
result := FGutterPartList.Count
|
||||
else
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
function TSynGutter.GetGutterPartCountByClass(AClass: TSynGutterPartBaseClass): integer;
|
||||
@ -552,6 +555,7 @@ procedure TSynGutter.Clear;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
if FGutterPartList = nil then exit;
|
||||
for i := FGutterPartList.Count-1 downto 0 do
|
||||
GutterPart[i].Free;
|
||||
FGutterPartList.Clear;
|
||||
@ -597,7 +601,7 @@ end;
|
||||
procedure TSynGutter.SetWidth(Value: integer);
|
||||
begin
|
||||
Value := Max(0, Value);
|
||||
if FWidth <> Value then
|
||||
if (FWidth <> Value) and not FAutoSize then
|
||||
begin
|
||||
FWidth := Value;
|
||||
DoChange(Self);
|
||||
@ -606,6 +610,8 @@ end;
|
||||
|
||||
procedure TSynGutter.DoChange(Sender: TObject);
|
||||
begin
|
||||
If FAutoSize then
|
||||
FWidth := RealGutterWidth(FTextDrawer.CharWidth);
|
||||
if Assigned(FOnChange) then
|
||||
FOnChange(Self);
|
||||
end;
|
||||
@ -654,7 +660,7 @@ var
|
||||
begin
|
||||
i := 0;
|
||||
x2 := x;
|
||||
while i < FGutterPartList.Count-1 do begin
|
||||
while i < GutterPartCount-1 do begin
|
||||
if GutterPart[i].Visible then begin
|
||||
if x2 >= GutterPart[i].Width then
|
||||
x2 := x2 - GutterPart[i].Width
|
||||
@ -690,12 +696,13 @@ begin
|
||||
AClip.Left := FLeftOffset;
|
||||
rcLine := AClip;
|
||||
rcLine.Right := rcLine.Left;
|
||||
for i := 0 to FGutterPartList.Count -1 do
|
||||
for i := 0 to GutterPartCount -1 do
|
||||
begin
|
||||
if rcLine.Right >= AClip.Right then break;
|
||||
if GutterPart[i].Visible then
|
||||
begin
|
||||
rcLine.Left := rcLine.Right;
|
||||
rcLine.Right := rcLine.Left + GutterPart[i].Width;
|
||||
rcLine.Right := min(rcLine.Left + GutterPart[i].Width, AClip.Right);
|
||||
GutterPart[i].Paint(Canvas, rcLine, FirstLine, LastLine);
|
||||
end;
|
||||
end;
|
||||
@ -737,7 +744,7 @@ end;
|
||||
|
||||
procedure TSynGutterPartBase.SetWidth(const AValue : integer);
|
||||
begin
|
||||
if FWidth=AValue then exit;
|
||||
if (FWidth=AValue) or (FAutoSize) then exit;
|
||||
FWidth:=AValue;
|
||||
DoChange(self);
|
||||
end;
|
||||
@ -798,7 +805,7 @@ end;
|
||||
constructor TSynGutterSeparator.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
Width := 2;
|
||||
FWidth := 2;
|
||||
end;
|
||||
|
||||
procedure TSynGutterSeparator.Paint(Canvas: TCanvas; AClip: TRect; FirstLine, LastLine: integer);
|
||||
@ -842,6 +849,13 @@ begin
|
||||
Create(AOwner);
|
||||
end;
|
||||
|
||||
destructor TSynGutterPartList.Destroy;
|
||||
begin
|
||||
FGutter.FGutterPartList := nil;
|
||||
OnChange := nil;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TSynGutterPartList.RegisterItem(AnItem: TSynObjectListItem);
|
||||
begin
|
||||
TSynGutterPartBase(AnItem).OnChange := {$IFDEF FPC}@{$ENDIF}DoChange;
|
||||
|
@ -18,6 +18,8 @@ type
|
||||
function GetSavedColor: TColor;
|
||||
procedure SetModifiedColor(const AValue: TColor);
|
||||
procedure SetSavedColor(const AValue: TColor);
|
||||
protected
|
||||
procedure DoChange(Sender: TObject); override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -44,7 +46,7 @@ begin
|
||||
MarkupInfo.Foreground := clGreen;
|
||||
MarkupInfo.FrameColor := $00E9FC;
|
||||
|
||||
Width := 6;
|
||||
FWidth := 4;
|
||||
end;
|
||||
|
||||
destructor TSynGutterChanges.Destroy;
|
||||
@ -72,6 +74,13 @@ begin
|
||||
MarkupInfo.Foreground := AValue;
|
||||
end;
|
||||
|
||||
procedure TSynGutterChanges.DoChange(Sender: TObject);
|
||||
begin
|
||||
if AutoSize then
|
||||
FWidth := 4;
|
||||
inherited DoChange(Sender);
|
||||
end;
|
||||
|
||||
function TSynGutterChanges.RealGutterWidth(CharWidth: integer): integer;
|
||||
begin
|
||||
if not Visible then
|
||||
|
@ -15,6 +15,8 @@ type
|
||||
TSynGutterCodeFolding = class(TSynGutterPartBase)
|
||||
private
|
||||
FFoldView: TSynEditFoldedView;
|
||||
protected
|
||||
procedure DoChange(Sender: TObject); override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -33,6 +35,13 @@ uses
|
||||
|
||||
{ TSynGutterCodeFolding }
|
||||
|
||||
procedure TSynGutterCodeFolding.DoChange(Sender: TObject);
|
||||
begin
|
||||
if AutoSize then
|
||||
FWidth := 10;
|
||||
inherited DoChange(Sender);
|
||||
end;
|
||||
|
||||
constructor TSynGutterCodeFolding.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
@ -42,7 +51,7 @@ begin
|
||||
MarkupInfo.Foreground := clDkGray;
|
||||
MarkupInfo.FrameColor := clNone;
|
||||
|
||||
Width := 10;
|
||||
FWidth := 10;
|
||||
end;
|
||||
|
||||
destructor TSynGutterCodeFolding.Destroy;
|
||||
|
@ -28,6 +28,8 @@ type
|
||||
procedure SetShowOnlyLineNumbersMultiplesOf(const AValue : integer);
|
||||
procedure SetZeroStart(const AValue : boolean);
|
||||
function FormatLineNumber(Line: integer; IsDot: boolean): string;
|
||||
protected
|
||||
procedure DoChange(Sender: TObject); override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -63,6 +65,7 @@ begin
|
||||
FShowOnlyLineNumbersMultiplesOf := 1;
|
||||
FLeadingZeros := false;
|
||||
FZeroStart := False;
|
||||
FWidth := 25;
|
||||
end;
|
||||
|
||||
destructor TSynGutterLineNumber.Destroy;
|
||||
@ -133,7 +136,7 @@ begin
|
||||
end;
|
||||
|
||||
if AutoSize then
|
||||
Width := FAutoSizeDigitCount * CharWidth + 1;
|
||||
FWidth := FAutoSizeDigitCount * CharWidth + 1;
|
||||
Result := Width;
|
||||
end;
|
||||
|
||||
@ -177,6 +180,13 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSynGutterLineNumber.DoChange(Sender: TObject);
|
||||
begin
|
||||
if AutoSize then
|
||||
FWidth := RealGutterWidth(FTextDrawer.CharWidth);
|
||||
inherited DoChange(Sender);
|
||||
end;
|
||||
|
||||
procedure TSynGutterLineNumber.Paint(Canvas : TCanvas; AClip : TRect; FirstLine, LastLine : integer);
|
||||
var
|
||||
i, iLine: integer;
|
||||
|
@ -17,6 +17,8 @@ type
|
||||
FFoldView: TSynEditFoldedView;
|
||||
FBookMarkOpt: TSynBookMarkOpt;
|
||||
FInternalImage: TSynInternalImage;
|
||||
protected
|
||||
procedure DoChange(Sender: TObject); override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -33,6 +35,13 @@ uses
|
||||
|
||||
{ TSynGutterMarks }
|
||||
|
||||
procedure TSynGutterMarks.DoChange(Sender: TObject);
|
||||
begin
|
||||
if AutoSize then
|
||||
FWidth := 22;
|
||||
inherited DoChange(Sender);
|
||||
end;
|
||||
|
||||
constructor TSynGutterMarks.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
@ -40,7 +49,7 @@ begin
|
||||
FBookMarkOpt := TSynEdit(SynEdit).BookMarkOptions;
|
||||
FInternalImage := nil;
|
||||
|
||||
Width := 22;
|
||||
FWidth := 22;
|
||||
end;
|
||||
|
||||
destructor TSynGutterMarks.Destroy;
|
||||
|
Loading…
Reference in New Issue
Block a user