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,26 +283,37 @@ 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;
if CodeNode.FirstChild=CodeNode.LastChild then begin // don't show statements
// node has no childs or one child if (CodeNode.Desc in AllPascalStatements+[ctnParameterList]) then exit;
// don't show boring details // 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;
// don't show keyword nodes
if CodeNode.Desc in [ctnIdentifier,ctnRangedArrayType, if CodeNode.Desc in [ctnIdentifier,ctnRangedArrayType,
ctnOpenArrayType,ctnOfConstType,ctnRangeType,ctnTypeType,ctnFileType, ctnOpenArrayType,ctnOfConstType,ctnRangeType,ctnTypeType,ctnFileType,
ctnVariantType] ctnVariantType]
then begin then
CreateNodes(ACodeTool,CodeNode.FirstChild,ParentViewNode,InFrontViewNode, ShowNode:=false;
true);
exit;
end;
end;
if ShowNode then begin
NodeData:=TViewNodeData.Create(CodeNode); NodeData:=TViewNodeData.Create(CodeNode);
NodeText:=GetNodeDescription(ACodeTool,CodeNode); NodeText:=GetNodeDescription(ACodeTool,CodeNode);
NodeImageIndex:=GetNodeImage(CodeNode); NodeImageIndex:=GetNodeImage(CodeNode);
@ -314,9 +327,16 @@ begin
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;
if ShowChilds then
CreateNodes(ACodeTool,CodeNode.FirstChild,ViewNode,nil,true); CreateNodes(ACodeTool,CodeNode.FirstChild,ViewNode,nil,true);
if CreateSiblings then begin if CreateSiblings then
CreateNodes(ACodeTool,CodeNode.NextBrother,ParentViewNode,ViewNode,true); 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
if (FChangeLinkList<>nil) and (Value.Sender=Self) then
FChangeLinkList.Remove(Value); 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;