symlist: does not allocate for each node xtra data

- this happens a lot
- directly use data as an integer
This commit is contained in:
Basile Burg 2015-07-14 01:45:56 +02:00
parent bf115d9594
commit 9e039477fc
2 changed files with 6 additions and 13 deletions

View File

@ -33,7 +33,6 @@ inherited CESymbolListWidget: TCESymbolListWidget
SelectionColor = clActiveBorder SelectionColor = clActiveBorder
TabOrder = 0 TabOrder = 0
OnCompare = TreeCompare OnCompare = TreeCompare
OnDeletion = TreeDeletion
OnKeyPress = TreeKeyPress OnKeyPress = TreeKeyPress
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
Items.Data = { Items.Data = {

View File

@ -107,7 +107,6 @@ type
TreeFilterEdit1: TTreeFilterEdit; TreeFilterEdit1: TTreeFilterEdit;
procedure btnRefreshClick(Sender: TObject); procedure btnRefreshClick(Sender: TObject);
procedure TreeCompare(Sender: TObject; Node1, Node2: TTreeNode; var Compare: Integer); procedure TreeCompare(Sender: TObject; Node1, Node2: TTreeNode; var Compare: Integer);
procedure TreeDeletion(Sender: TObject; Node: TTreeNode);
procedure TreeFilterEdit1AfterFilter(Sender: TObject); procedure TreeFilterEdit1AfterFilter(Sender: TObject);
function TreeFilterEdit1FilterItem(Item: TObject; out Done: Boolean): Boolean; function TreeFilterEdit1FilterItem(Item: TObject; out Done: Boolean): Boolean;
procedure TreeFilterEdit1MouseEnter(Sender: TObject); procedure TreeFilterEdit1MouseEnter(Sender: TObject);
@ -538,12 +537,6 @@ begin
callToolProc; callToolProc;
end; end;
procedure TCESymbolListWidget.TreeDeletion(Sender: TObject; Node: TTreeNode);
begin
if (node.Data <> nil) then
Dispose(PNativeUint(node.Data));
end;
procedure TCESymbolListWidget.btnRefreshClick(Sender: TObject); procedure TCESymbolListWidget.btnRefreshClick(Sender: TObject);
begin begin
fActRefresh.Execute; fActRefresh.Execute;
@ -646,7 +639,9 @@ begin
if Tree.Selected = nil then exit; if Tree.Selected = nil then exit;
if Tree.Selected.Data = nil then exit; if Tree.Selected.Data = nil then exit;
// //
line := PNativeUInt(Tree.Selected.Data)^; {$HINTS OFF}
line := NativeUInt(Tree.Selected.Data);
{$HINTS ON}
fDoc.CaretY := line; fDoc.CaretY := line;
fDoc.SelectLine; fDoc.SelectLine;
end; end;
@ -734,15 +729,14 @@ end;
// //
procedure symbolToTreeNode(origin: TTreenode; sym: TSymbol); procedure symbolToTreeNode(origin: TTreenode; sym: TSymbol);
var var
data: PNativeUint;
cat: TTreeNode; cat: TTreeNode;
node: TTreeNode; node: TTreeNode;
i: Integer; i: Integer;
begin begin
cat := getCatNode(origin, sym.symType); cat := getCatNode(origin, sym.symType);
data := new(PNativeUint); {$HINTS OFF}
data^ := sym.fline; node := tree.Items.AddChildObject(cat, sym.name, Pointer(sym.fline));
node := tree.Items.AddChildObject(cat, sym.name, data); {$HINTS ON}
if not fShowChildCategories then node := nil; if not fShowChildCategories then node := nil;
cat.Visible:=true; cat.Visible:=true;
for i := 0 to sym.subs.Count-1 do for i := 0 to sym.subs.Count-1 do