SynEdit: Change size of fold gutter

git-svn-id: trunk@18048 -
This commit is contained in:
martin 2009-01-02 14:22:58 +00:00
parent 0cc812fc62
commit 8928a1a17b

View File

@ -48,7 +48,7 @@ begin
FMarkupInfoCodeFoldingTree.FrameColor := clNone; FMarkupInfoCodeFoldingTree.FrameColor := clNone;
FMarkupInfoCodeFoldingTree.OnChange := @DoChange; FMarkupInfoCodeFoldingTree.OnChange := @DoChange;
Width := 14; Width := 10;
end; end;
destructor TSynGutterCodeFolding.Destroy; destructor TSynGutterCodeFolding.Destroy;
@ -75,39 +75,35 @@ begin
end; end;
procedure TSynGutterCodeFolding.Paint(Canvas : TCanvas; AClip : TRect; FirstLine, LastLine : integer); procedure TSynGutterCodeFolding.Paint(Canvas : TCanvas; AClip : TRect; FirstLine, LastLine : integer);
const cNodeOffset = 2;
var var
iLine: integer; iLine: integer;
rcLine: TRect; rcLine: TRect;
rcCodeFold: TRect; rcCodeFold: TRect;
tmp: TSynEditCodeFoldType; tmp: TSynEditCodeFoldType;
LineHeight, LineOffset: Integer; LineHeight, LineOffset, BoxSize: Integer;
procedure DrawNodeBox(rcCodeFold: TRect; Collapsed: boolean); procedure DrawNodeBox(rcCodeFold: TRect; Collapsed: boolean);
const cNodeOffset = 3;
var var
rcNode: TRect; rcNode: TRect;
ptCenter : TPoint; ptCenter : TPoint;
iSquare: integer;
begin begin
//center of the draw area //center of the draw area
ptCenter.X := (rcCodeFold.Left + rcCodeFold.Right) div 2; ptCenter.X := (rcCodeFold.Left + rcCodeFold.Right) div 2;
ptCenter.Y := (rcCodeFold.Top + rcCodeFold.Bottom) div 2; ptCenter.Y := (rcCodeFold.Top + rcCodeFold.Bottom) div 2;
//make node rect square
iSquare := Max(0, rcCodeFold.Bottom - rcCodeFold.Top - 14) div 2;
//area of drawbox //area of drawbox
rcNode.Right := rcCodeFold.Right - cNodeOffset + 1; rcNode.Left := ptCenter.X - (BoxSize div 2) + 1;
rcNode.Left := rcCodeFold.Left + cNodeOffset; rcNode.Right := ptCenter.X + (BoxSize div 2);
rcNode.Top := rcCodeFold.Top + cNodeOffset + iSquare; rcNode.Top := ptCenter.Y - (BoxSize div 2) + 1;
rcNode.Bottom := rcCodeFold.Bottom - cNodeOffset - iSquare + 1; rcNode.Bottom := ptCenter.Y + (BoxSize div 2);
Canvas.Brush.Color:=clWhite; Canvas.Brush.Color:=clWhite;
Canvas.Rectangle(rcNode); Canvas.Rectangle(rcNode);
//draw bottom handle to paragraph line //draw bottom handle to paragraph line
Canvas.MoveTo((rcNode.Left + rcNode.Right) div 2, rcNode.Bottom); Canvas.MoveTo(ptCenter.X, rcNode.Bottom);
Canvas.LineTo((rcNode.Left + rcNode.Right) div 2, rcCodeFold.Bottom); Canvas.LineTo(ptCenter.X, rcCodeFold.Bottom);
//draw unfolded sign in node box //draw unfolded sign in node box
Canvas.MoveTo(ptCenter.X - 2, ptCenter.Y); Canvas.MoveTo(ptCenter.X - 2, ptCenter.Y);
@ -151,13 +147,14 @@ begin
if not Visible then exit; if not Visible then exit;
LineHeight := TSynEdit(FEdit).LineHeight; LineHeight := TSynEdit(FEdit).LineHeight;
LineOffset := 0; LineOffset := 0;
BoxSize := Min(Width, LineHeight - cNodeOffset*2);
if MarkupInfoCodeFoldingTree.Background <> clNone then if MarkupInfoCodeFoldingTree.Background <> clNone then
begin begin
Canvas.Brush.Color := MarkupInfoCodeFoldingTree.Background; Canvas.Brush.Color := MarkupInfoCodeFoldingTree.Background;
{$IFDEF SYN_LAZARUS} {$IFDEF SYN_LAZARUS}
LCLIntf.SetBkColor(Canvas.Handle, Canvas.Brush.Color); LCLIntf.SetBkColor(Canvas.Handle, Canvas.Brush.Color);
{$ENDIF} {$ENDIF}
Canvas.FillRect(AClip); Canvas.FillRect(AClip);
end; end;