mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-04 18:40:29 +02:00
LCL: TTreeView: set overlay if none is set
git-svn-id: trunk@42882 -
This commit is contained in:
parent
6e22b78c6b
commit
5c566f9437
@ -119,6 +119,7 @@ type
|
||||
FChanged: boolean;
|
||||
FUpdateCount: integer;
|
||||
FOverlays: array[TOverlay] of Integer;
|
||||
fHasOverlays: boolean;
|
||||
|
||||
procedure AllocData(ACount: Integer);
|
||||
function GetReference: TWSCustomImageListReference;
|
||||
@ -174,10 +175,10 @@ type
|
||||
AEnabled: Boolean = True); overload;
|
||||
procedure Draw(ACanvas: TCanvas; AX, AY, AIndex: Integer; ADrawingStyle: TDrawingStyle; AImageType: TImageType;
|
||||
ADrawEffect: TGraphicsDrawEffect); overload; virtual;
|
||||
procedure DrawOverlay(ACanvas: TCanvas; AX, AY, AIndex: Integer; AOverlay: TOverlay; AEnabled: Boolean = True);
|
||||
procedure DrawOverlay(ACanvas: TCanvas; AX, AY, AIndex: Integer; AOverlay: TOverlay; ADrawEffect: TGraphicsDrawEffect);
|
||||
procedure DrawOverlay(ACanvas: TCanvas; AX, AY, AIndex: Integer; AOverlay: TOverlay; AEnabled: Boolean = True); overload;
|
||||
procedure DrawOverlay(ACanvas: TCanvas; AX, AY, AIndex: Integer; AOverlay: TOverlay; ADrawEffect: TGraphicsDrawEffect); overload;
|
||||
procedure DrawOverlay(ACanvas: TCanvas; AX, AY, AIndex: Integer; AOverlay: TOverlay; ADrawingStyle:
|
||||
TDrawingStyle; AImageType: TImageType; ADrawEffect: TGraphicsDrawEffect); virtual;
|
||||
TDrawingStyle; AImageType: TImageType; ADrawEffect: TGraphicsDrawEffect); virtual; overload;
|
||||
procedure FillDescription(out ADesc: TRawImageDescription);
|
||||
|
||||
procedure GetBitmap(Index: Integer; Image: TCustomBitmap); overload;
|
||||
@ -195,6 +196,7 @@ type
|
||||
procedure InsertMasked(Index: Integer; AImage: TCustomBitmap; MaskColor: TColor);
|
||||
procedure Move(ACurIndex, ANewIndex: Integer);
|
||||
procedure Overlay(AIndex: Integer; Overlay: TOverlay);
|
||||
property HasOverlays: boolean read fHasOverlays;
|
||||
procedure Replace(AIndex: Integer; AImage, AMask: TCustomBitmap);
|
||||
procedure ReplaceMasked(Index: Integer; NewImage: TCustomBitmap; MaskColor: TColor);
|
||||
procedure RegisterChanges(Value: TChangeLink);
|
||||
|
@ -1361,8 +1361,21 @@ begin
|
||||
end;
|
||||
|
||||
procedure TCustomImageList.Overlay(AIndex: Integer; Overlay: TOverlay);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
FOverlays[Overlay] := AIndex;
|
||||
if AIndex>=0 then
|
||||
fHasOverlays:=true
|
||||
else if fHasOverlays then begin
|
||||
fHasOverlays:=false;
|
||||
for i:=Low(TOverlay) to high(TOverlay) do
|
||||
begin
|
||||
if FOverlays[i]<0 then continue;
|
||||
fHasOverlays:=true;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
|
@ -4882,6 +4882,7 @@ var
|
||||
CurTextRect: TRect;
|
||||
DrawState: TCustomDrawState;
|
||||
PaintImages: boolean;
|
||||
OverlayIndex: Integer;
|
||||
begin
|
||||
NodeRect := Node.DisplayRect(False);
|
||||
if (NodeRect.Bottom < 0) or (NodeRect.Top >= (ClientHeight - ScrollBarWidth)) then
|
||||
@ -4937,13 +4938,27 @@ begin
|
||||
begin
|
||||
if PaintImages then
|
||||
begin
|
||||
if (Node.OverlayIndex < 0) or (Node.OverlayIndex>=Images.Count) then
|
||||
if (Node.OverlayIndex >= 0) then begin
|
||||
OverlayIndex:=Node.OverlayIndex;
|
||||
if Images.HasOverlays then begin
|
||||
Images.DrawOverlay(Canvas, x + 1, (NodeRect.Top + NodeRect.Bottom - Images.Height) div 2,
|
||||
ImgIndex, OverlayIndex, Node.FNodeEffect);
|
||||
end else begin
|
||||
// draw the Overlay using the image from the list
|
||||
// set an Overlay
|
||||
Images.OverLay(OverlayIndex,0);
|
||||
// draw overlay
|
||||
Images.DrawOverlay(Canvas, x + 1, (NodeRect.Top + NodeRect.Bottom - Images.Height) div 2,
|
||||
ImgIndex, 0, Node.FNodeEffect);
|
||||
// reset the Overlay
|
||||
Images.OverLay(-1,0);
|
||||
end;
|
||||
end
|
||||
else begin
|
||||
Images.Draw(Canvas, x + 1, (NodeRect.Top + NodeRect.Bottom - Images.Height) div 2,
|
||||
ImgIndex, Node.FNodeEffect)
|
||||
else
|
||||
Images.DrawOverlay(Canvas, x + 1, (NodeRect.Top + NodeRect.Bottom - Images.Height) div 2,
|
||||
ImgIndex, Node.OverlayIndex, Node.FNodeEffect);
|
||||
end;
|
||||
ImgIndex, Node.FNodeEffect);
|
||||
end;
|
||||
end;
|
||||
inc(x, Images.Width + 2);
|
||||
end;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user