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
TabOrder = 0
OnCompare = TreeCompare
OnDeletion = TreeDeletion
OnKeyPress = TreeKeyPress
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
Items.Data = {

View File

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