fixed unregistering imageslink

git-svn-id: trunk@4784 -
This commit is contained in:
mattias 2003-11-08 23:42:24 +00:00
parent 711c426a9c
commit 1b40fbe743
3 changed files with 70 additions and 40 deletions

View File

@ -12,6 +12,8 @@ uses
Menus; Menus;
type type
TCodeExplorerView = class;
TOnGetCodeTree = TOnGetCodeTree =
procedure(Sender: TObject; var ACodeTool: TCodeTool) of object; procedure(Sender: TObject; var ACodeTool: TCodeTool) of object;
TOnJumpToCode = procedure(Sender: TObject; const Filename: string; TOnJumpToCode = procedure(Sender: TObject; const Filename: string;
@ -281,42 +283,60 @@ var
NodeText: String; NodeText: String;
ViewNode: TTreeNode; ViewNode: TTreeNode;
NodeImageIndex: Integer; NodeImageIndex: Integer;
ShowNode: Boolean;
ShowChilds: Boolean;
begin begin
if CodeNode=nil then exit; if CodeNode=nil then exit;
// don't show statements, parameter lists ShowNode:=true;
if (CodeNode.Desc in AllPascalStatements) ShowChilds:=true;
or (CodeNode.Desc in [ctnProcedureHead,ctnParameterList]) then exit;
// don't show statements
if CodeNode.FirstChild=CodeNode.LastChild then begin if (CodeNode.Desc in AllPascalStatements+[ctnParameterList]) then exit;
// node has no childs or one child // don't show parameter lists
// don't show boring details if (CodeNode.Desc in [ctnProcedureHead]) then begin
if CodeNode.Desc in [ctnIdentifier,ctnRangedArrayType, ShowNode:=false;
ctnOpenArrayType,ctnOfConstType,ctnRangeType,ctnTypeType,ctnFileType, ShowChilds:=false;
ctnVariantType] end;
then begin // don't show forward class definitions
CreateNodes(ACodeTool,CodeNode.FirstChild,ParentViewNode,InFrontViewNode, if (CodeNode.Desc=ctnTypeDefinition)
true); and (CodeNode.FirstChild<>nil) and (CodeNode.FirstChild.Desc=ctnClass)
exit; and ((CodeNode.FirstChild.SubDesc and ctnsForwardDeclaration)>0) then begin
end; ShowNode:=false;
ShowChilds:=false;
end; end;
NodeData:=TViewNodeData.Create(CodeNode); // don't show keyword nodes
NodeText:=GetNodeDescription(ACodeTool,CodeNode); if CodeNode.Desc in [ctnIdentifier,ctnRangedArrayType,
NodeImageIndex:=GetNodeImage(CodeNode); ctnOpenArrayType,ctnOfConstType,ctnRangeType,ctnTypeType,ctnFileType,
if InFrontViewNode<>nil then ctnVariantType]
ViewNode:=CodeTreeview.Items.InsertObjectBehind( 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) InFrontViewNode,NodeText,NodeData)
else if ParentViewNode<>nil then else if ParentViewNode<>nil then
ViewNode:=CodeTreeview.Items.AddChildObject( ViewNode:=CodeTreeview.Items.AddChildObject(
ParentViewNode,NodeText,NodeData) ParentViewNode,NodeText,NodeData)
else else
ViewNode:=CodeTreeview.Items.AddObject(nil,NodeText,NodeData); ViewNode:=CodeTreeview.Items.AddObject(nil,NodeText,NodeData);
ViewNode.ImageIndex:=NodeImageIndex; ViewNode.ImageIndex:=NodeImageIndex;
ViewNode.SelectedIndex:=NodeImageIndex; ViewNode.SelectedIndex:=NodeImageIndex;
CreateNodes(ACodeTool,CodeNode.FirstChild,ViewNode,nil,true); if ShowChilds then
if CreateSiblings then begin CreateNodes(ACodeTool,CodeNode.FirstChild,ViewNode,nil,true);
CreateNodes(ACodeTool,CodeNode.NextBrother,ParentViewNode,ViewNode,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;
end; end;

View File

@ -273,14 +273,19 @@ end;
Destructor for the class. Destructor for the class.
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
destructor TCustomImageList.Destroy; destructor TCustomImageList.Destroy;
var i: integer; var
i: integer;
begin begin
FBitmap.Free; FBitmap.Free;
FBitmap:=nil;
FMaskBitmap.Free; FMaskBitmap.Free;
FChangeLinkList.Free; FMaskBitmap:=nil;
for i:=0 to FImageList.Count-1 do TObject(FImageList[i]).Free; for i:=0 to FImageList.Count-1 do TObject(FImageList[i]).Free;
FImageList.Free; //shane FImageList.Free; //shane
FImageList:=nil;
inherited Destroy; inherited Destroy;
FChangeLinkList.Free;
FChangeLinkList:=nil;
end; end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
@ -940,7 +945,9 @@ end;
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
procedure TCustomImageList.UnRegisterChanges(Value: TChangeLink); procedure TCustomImageList.UnRegisterChanges(Value: TChangeLink);
begin begin
FChangeLinkList.Remove(Value); if (FChangeLinkList<>nil) and (Value.Sender=Self) then
FChangeLinkList.Remove(Value);
Value.Sender:=nil;
end; end;
{****************************************************************************** {******************************************************************************
@ -978,6 +985,9 @@ end;
{ {
$Log$ $Log$
Revision 1.18 2003/11/08 23:42:24 mattias
fixed unregistering imageslink
Revision 1.17 2003/03/11 07:46:43 mattias Revision 1.17 2003/03/11 07:46:43 mattias
more localization for gtk- and win32-interface and lcl more localization for gtk- and win32-interface and lcl

View File

@ -2613,16 +2613,16 @@ end;
destructor TCustomTreeView.Destroy; destructor TCustomTreeView.Destroy;
begin begin
FTreeNodes.Free; Images:=nil;
FTreeNodes:=nil; FreeThenNil(FTreeNodes);
FChangeTimer.Free; FreeThenNil(FChangeTimer);
FSaveItems.Free; FreeThenNil(FSaveItems);
FDragImage.Free; FreeThenNil(FDragImage);
//FMemStream.Free; //FMemStream.Free;
//FreeObjectInstance(FEditInstance); //FreeObjectInstance(FEditInstance);
FImageChangeLink.Free; FreeThenNil(FImageChangeLink);
FStateChangeLink.Free; FreeThenNil(FStateChangeLink);
FCanvas.Free; FreeThenNil(FCanvas);
inherited Destroy; inherited Destroy;
end; end;