diff --git a/ideintf/componenttreeview.pas b/ideintf/componenttreeview.pas index 27c0df89ad..cdb69c86b5 100644 --- a/ideintf/componenttreeview.pas +++ b/ideintf/componenttreeview.pas @@ -312,6 +312,7 @@ begin // restore old expanded state OldExpanded.Apply(Self); OldExpanded.Free; + MakeSelectionVisible; EndUpdate; end; diff --git a/lcl/comctrls.pp b/lcl/comctrls.pp index c851ccf6c4..6d4fabe736 100644 --- a/lcl/comctrls.pp +++ b/lcl/comctrls.pp @@ -1549,6 +1549,7 @@ type procedure InternalMove(ANode: TTreeNode; AddMode: TAddMode); function IsEqual(Node: TTreeNode): Boolean; function IsNodeVisible: Boolean; + function IsNodeHeightFullVisible: Boolean; procedure ReadData(Stream: TStream; StreamVersion: integer; Info: PTreeNodeInfo); procedure ReadDelphiData(Stream: TStream; Info: PDelphiNodeInfo); @@ -1635,6 +1636,7 @@ type property ImageIndex: integer read FImageIndex write SetImageIndex; property Index: Integer read GetIndex; property IsVisible: Boolean read IsNodeVisible; + property IsFullHeightVisible: Boolean read IsNodeHeightFullVisible; property Items[ItemIndex: Integer]: TTreeNode read GetItems write SetItems; default; property Level: Integer read GetLevel; property MultiSelected: Boolean read GetMultiSelected write SetMultiSelected; @@ -1940,6 +1942,7 @@ type function IsCustomDrawn(Target: TCustomDrawTarget; Stage: TCustomDrawStage): Boolean; function IsNodeVisible(ANode: TTreeNode): Boolean; + function IsNodeHeightFullVisible(ANode: TTreeNode): Boolean; function IsInsertMarkVisible: boolean; virtual; procedure Change(Node: TTreeNode); dynamic; procedure Collapse(Node: TTreeNode); dynamic; @@ -2255,6 +2258,9 @@ end. { ============================================================================= $Log$ + Revision 1.125 2004/05/20 14:45:47 mattias + implemented showing treenode completely on single selection + Revision 1.124 2004/05/19 18:41:19 micha disable custom drawn border by default for treeview (already has borderstyle=bsSingle diff --git a/lcl/include/treeview.inc b/lcl/include/treeview.inc index cf7530db2a..2dccb5b85e 100644 --- a/lcl/include/treeview.inc +++ b/lcl/include/treeview.inc @@ -1339,13 +1339,19 @@ begin end; function TTreeNode.IsNodeVisible: Boolean; -//var Rect: TRect; begin if TreeView<>nil then Result:=TreeView.IsNodeVisible(Self) else Result:=AreParentsExpanded; - //Result := TreeView_GetItemRect(Handle, ItemId, Rect, True); +end; + +function TTreeNode.IsNodeHeightFullVisible: Boolean; +begin + if TreeView<>nil then + Result:=TreeView.IsNodeHeightFullVisible(Self) + else + Result:=AreParentsExpanded; end; procedure TTreeNode.Update; @@ -3384,6 +3390,24 @@ begin //' Node.Text=',ANode.Text,' Visible=',Result); end; +function TCustomTreeView.IsNodeHeightFullVisible(ANode: TTreeNode): Boolean; +begin + Result:=(ANode<>nil) and (ANode.AreParentsExpanded); + //DebugLn('[TCustomTreeView.IsNodeVisible] A Node=',HexStr(Cardinal(ANode),8), + //' ANode.AreParentsExpanded=',ANode.AreParentsExpanded); + if Result then begin + //DebugLn('[TCustomTreeView.IsNodeVisible] B Node=',HexStr(Cardinal(ANode),8), + //' ',FScrolledTop,'>=',ANode.Top,'+',ANode.Height,' or ',FScrolledTop,'+',ClientHeight,'<',ANode.Top); + if (FScrolledTop>ANode.Top) + or (FScrolledTop+(ClientHeight-ScrollBarWidth)-2*BorderWidth +