mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-26 15:53:52 +02:00
fixed unregistering imageslink
git-svn-id: trunk@4784 -
This commit is contained in:
parent
711c426a9c
commit
1b40fbe743
@ -12,6 +12,8 @@ uses
|
||||
Menus;
|
||||
|
||||
type
|
||||
TCodeExplorerView = class;
|
||||
|
||||
TOnGetCodeTree =
|
||||
procedure(Sender: TObject; var ACodeTool: TCodeTool) of object;
|
||||
TOnJumpToCode = procedure(Sender: TObject; const Filename: string;
|
||||
@ -281,42 +283,60 @@ var
|
||||
NodeText: String;
|
||||
ViewNode: TTreeNode;
|
||||
NodeImageIndex: Integer;
|
||||
ShowNode: Boolean;
|
||||
ShowChilds: Boolean;
|
||||
begin
|
||||
if CodeNode=nil then exit;
|
||||
|
||||
// don't show statements, parameter lists
|
||||
if (CodeNode.Desc in AllPascalStatements)
|
||||
or (CodeNode.Desc in [ctnProcedureHead,ctnParameterList]) then exit;
|
||||
|
||||
if CodeNode.FirstChild=CodeNode.LastChild then begin
|
||||
// node has no childs or one child
|
||||
// don't show boring details
|
||||
if CodeNode.Desc in [ctnIdentifier,ctnRangedArrayType,
|
||||
ctnOpenArrayType,ctnOfConstType,ctnRangeType,ctnTypeType,ctnFileType,
|
||||
ctnVariantType]
|
||||
then begin
|
||||
CreateNodes(ACodeTool,CodeNode.FirstChild,ParentViewNode,InFrontViewNode,
|
||||
true);
|
||||
exit;
|
||||
end;
|
||||
ShowNode:=true;
|
||||
ShowChilds:=true;
|
||||
|
||||
// don't show statements
|
||||
if (CodeNode.Desc in AllPascalStatements+[ctnParameterList]) then exit;
|
||||
// don't show parameter lists
|
||||
if (CodeNode.Desc in [ctnProcedureHead]) then begin
|
||||
ShowNode:=false;
|
||||
ShowChilds:=false;
|
||||
end;
|
||||
// don't show forward class definitions
|
||||
if (CodeNode.Desc=ctnTypeDefinition)
|
||||
and (CodeNode.FirstChild<>nil) and (CodeNode.FirstChild.Desc=ctnClass)
|
||||
and ((CodeNode.FirstChild.SubDesc and ctnsForwardDeclaration)>0) then begin
|
||||
ShowNode:=false;
|
||||
ShowChilds:=false;
|
||||
end;
|
||||
|
||||
NodeData:=TViewNodeData.Create(CodeNode);
|
||||
NodeText:=GetNodeDescription(ACodeTool,CodeNode);
|
||||
NodeImageIndex:=GetNodeImage(CodeNode);
|
||||
if InFrontViewNode<>nil then
|
||||
ViewNode:=CodeTreeview.Items.InsertObjectBehind(
|
||||
// don't show keyword nodes
|
||||
if CodeNode.Desc in [ctnIdentifier,ctnRangedArrayType,
|
||||
ctnOpenArrayType,ctnOfConstType,ctnRangeType,ctnTypeType,ctnFileType,
|
||||
ctnVariantType]
|
||||
then
|
||||
ShowNode:=false;
|
||||
|
||||
if ShowNode then begin
|
||||
NodeData:=TViewNodeData.Create(CodeNode);
|
||||
NodeText:=GetNodeDescription(ACodeTool,CodeNode);
|
||||
NodeImageIndex:=GetNodeImage(CodeNode);
|
||||
if InFrontViewNode<>nil then
|
||||
ViewNode:=CodeTreeview.Items.InsertObjectBehind(
|
||||
InFrontViewNode,NodeText,NodeData)
|
||||
else if ParentViewNode<>nil then
|
||||
ViewNode:=CodeTreeview.Items.AddChildObject(
|
||||
else if ParentViewNode<>nil then
|
||||
ViewNode:=CodeTreeview.Items.AddChildObject(
|
||||
ParentViewNode,NodeText,NodeData)
|
||||
else
|
||||
ViewNode:=CodeTreeview.Items.AddObject(nil,NodeText,NodeData);
|
||||
ViewNode.ImageIndex:=NodeImageIndex;
|
||||
ViewNode.SelectedIndex:=NodeImageIndex;
|
||||
CreateNodes(ACodeTool,CodeNode.FirstChild,ViewNode,nil,true);
|
||||
if CreateSiblings then begin
|
||||
CreateNodes(ACodeTool,CodeNode.NextBrother,ParentViewNode,ViewNode,true);
|
||||
else
|
||||
ViewNode:=CodeTreeview.Items.AddObject(nil,NodeText,NodeData);
|
||||
ViewNode.ImageIndex:=NodeImageIndex;
|
||||
ViewNode.SelectedIndex:=NodeImageIndex;
|
||||
if ShowChilds then
|
||||
CreateNodes(ACodeTool,CodeNode.FirstChild,ViewNode,nil,true);
|
||||
if CreateSiblings then
|
||||
CreateNodes(ACodeTool,CodeNode.NextBrother,ParentViewNode,ViewNode,true);
|
||||
end else begin
|
||||
if ShowChilds then
|
||||
CreateNodes(ACodeTool,CodeNode.FirstChild,ParentViewNode,nil,true);
|
||||
if CreateSiblings then
|
||||
CreateNodes(ACodeTool,CodeNode.NextBrother,ParentViewNode,InFrontViewNode,
|
||||
true);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
@ -273,14 +273,19 @@ end;
|
||||
Destructor for the class.
|
||||
------------------------------------------------------------------------------}
|
||||
destructor TCustomImageList.Destroy;
|
||||
var i: integer;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
FBitmap.Free;
|
||||
FBitmap:=nil;
|
||||
FMaskBitmap.Free;
|
||||
FChangeLinkList.Free;
|
||||
FMaskBitmap:=nil;
|
||||
for i:=0 to FImageList.Count-1 do TObject(FImageList[i]).Free;
|
||||
FImageList.Free; //shane
|
||||
FImageList:=nil;
|
||||
inherited Destroy;
|
||||
FChangeLinkList.Free;
|
||||
FChangeLinkList:=nil;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -940,7 +945,9 @@ end;
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TCustomImageList.UnRegisterChanges(Value: TChangeLink);
|
||||
begin
|
||||
FChangeLinkList.Remove(Value);
|
||||
if (FChangeLinkList<>nil) and (Value.Sender=Self) then
|
||||
FChangeLinkList.Remove(Value);
|
||||
Value.Sender:=nil;
|
||||
end;
|
||||
|
||||
{******************************************************************************
|
||||
@ -978,6 +985,9 @@ end;
|
||||
{
|
||||
|
||||
$Log$
|
||||
Revision 1.18 2003/11/08 23:42:24 mattias
|
||||
fixed unregistering imageslink
|
||||
|
||||
Revision 1.17 2003/03/11 07:46:43 mattias
|
||||
more localization for gtk- and win32-interface and lcl
|
||||
|
||||
|
@ -2613,16 +2613,16 @@ end;
|
||||
|
||||
destructor TCustomTreeView.Destroy;
|
||||
begin
|
||||
FTreeNodes.Free;
|
||||
FTreeNodes:=nil;
|
||||
FChangeTimer.Free;
|
||||
FSaveItems.Free;
|
||||
FDragImage.Free;
|
||||
Images:=nil;
|
||||
FreeThenNil(FTreeNodes);
|
||||
FreeThenNil(FChangeTimer);
|
||||
FreeThenNil(FSaveItems);
|
||||
FreeThenNil(FDragImage);
|
||||
//FMemStream.Free;
|
||||
//FreeObjectInstance(FEditInstance);
|
||||
FImageChangeLink.Free;
|
||||
FStateChangeLink.Free;
|
||||
FCanvas.Free;
|
||||
FreeThenNil(FImageChangeLink);
|
||||
FreeThenNil(FStateChangeLink);
|
||||
FreeThenNil(FCanvas);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user