mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-25 10:40:38 +01:00
SynEdit: fold indicator pen.width for drawing depend on PPI
git-svn-id: trunk@58506 -
This commit is contained in:
parent
7dd6673f2d
commit
1c010971b9
@ -68,6 +68,8 @@ type
|
||||
{ TSynGutterCodeFolding }
|
||||
|
||||
TSynGutterCodeFolding = class(TSynGutterPartBase)
|
||||
private
|
||||
const cNodeOffset = 1;
|
||||
private
|
||||
FMouseActionsCollapsed: TSynEditMouseInternalActions;
|
||||
FMouseActionsExpanded: TSynEditMouseInternalActions;
|
||||
@ -76,6 +78,7 @@ type
|
||||
FIsFoldHidePreviousLine: Boolean;
|
||||
FPopUpImageList: TSynGutterImageList;
|
||||
FReversePopMenuOrder: Boolean;
|
||||
FPpiPenWidth: Integer;
|
||||
procedure FPopUpOnPopup(Sender: TObject);
|
||||
function GetMouseActionsCollapsed: TSynEditMouseActions;
|
||||
function GetMouseActionsExpanded: TSynEditMouseActions;
|
||||
@ -93,9 +96,11 @@ type
|
||||
procedure CreatePopUpMenuEntries(var APopUp: TPopupMenu; ALine: Integer); virtual;
|
||||
procedure PopClicked(Sender: TObject);
|
||||
function CreateMouseActions: TSynEditMouseInternalActions; override;
|
||||
procedure SetWidth(const AValue: integer); override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
procedure ScalePPI(const AScaleFactor: Double); override;
|
||||
|
||||
procedure Paint(Canvas: TCanvas; AClip: TRect; FirstLine, LastLine: integer);
|
||||
override;
|
||||
@ -354,6 +359,7 @@ end;
|
||||
|
||||
constructor TSynGutterCodeFolding.Create(AOwner: TComponent);
|
||||
begin
|
||||
FPpiPenWidth := 1;
|
||||
FReversePopMenuOrder := true;
|
||||
FMouseActionsExpanded := TSynEditMouseActionsGutterFoldExpanded.Create(self);
|
||||
FMouseActionsCollapsed := TSynEditMouseActionsGutterFoldCollapsed.Create(self);
|
||||
@ -378,6 +384,16 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TSynGutterCodeFolding.ScalePPI(const AScaleFactor: Double);
|
||||
var
|
||||
m: Integer;
|
||||
begin
|
||||
inherited ScalePPI(AScaleFactor);
|
||||
FPpiPenWidth := Max(1, Scale96ToFont(1));
|
||||
m := Max(1, Min(Width, TCustomSynEdit(SynEdit).LineHeight - cNodeOffset*2) div 5);
|
||||
FPpiPenWidth := Min(m, FPpiPenWidth);
|
||||
end;
|
||||
|
||||
procedure TSynGutterCodeFolding.PopClicked(Sender: TObject);
|
||||
var
|
||||
inf: TFoldViewNodeInfo;
|
||||
@ -397,6 +413,18 @@ begin
|
||||
Result := TSynEditMouseActionsGutterFold.Create(self);
|
||||
end;
|
||||
|
||||
procedure TSynGutterCodeFolding.SetWidth(const AValue: integer);
|
||||
var
|
||||
m: Integer;
|
||||
begin
|
||||
if (Width=AValue) or (AutoSize) then exit;
|
||||
inherited SetWidth(AValue);
|
||||
|
||||
FPpiPenWidth := Max(1, Scale96ToFont(1));
|
||||
m := Max(1, Min(Width, TCustomSynEdit(SynEdit).LineHeight - cNodeOffset*2) div 5);
|
||||
FPpiPenWidth := Min(m, FPpiPenWidth);
|
||||
end;
|
||||
|
||||
procedure TSynGutterCodeFolding.DoOnGutterClick(X, Y : integer);
|
||||
begin
|
||||
// Do Nothing
|
||||
@ -592,7 +620,6 @@ begin
|
||||
end;
|
||||
|
||||
procedure TSynGutterCodeFolding.Paint(Canvas : TCanvas; AClip : TRect; FirstLine, LastLine : integer);
|
||||
const cNodeOffset = 1;
|
||||
var
|
||||
iLine: integer;
|
||||
rcLine: TRect;
|
||||
@ -707,7 +734,7 @@ begin
|
||||
with Canvas do
|
||||
begin
|
||||
Pen.Color := MarkupInfo.Foreground;
|
||||
Pen.Width := 1;
|
||||
Pen.Width := FPpiPenWidth;
|
||||
|
||||
rcLine.Bottom := AClip.Top;
|
||||
for iLine := FirstLine to LastLine do
|
||||
|
||||
Loading…
Reference in New Issue
Block a user