diff --git a/Terminal.Gui/Views/TreeView.cs b/Terminal.Gui/Views/TreeView.cs
index aae03a845..2551d0747 100644
--- a/Terminal.Gui/Views/TreeView.cs
+++ b/Terminal.Gui/Views/TreeView.cs
@@ -649,6 +649,28 @@ namespace Terminal.Gui {
return false;
}
+ ///
+ /// Positions the cursor at the start of the selected objects line (if visible)
+ ///
+ public override void PositionCursor()
+ {
+ if (CanFocus && HasFocus && Visible && SelectedObject != null)
+ {
+ var map = BuildLineMap();
+ var idx = Array.FindIndex(map,b=>b.Model.Equals(SelectedObject));
+
+ // if currently selected line is visible
+ if(idx - ScrollOffset >= 0 && idx - ScrollOffset < Bounds.Height)
+ Move(0,idx - ScrollOffset);
+ else
+ base.PositionCursor();
+
+ } else {
+ base.PositionCursor();
+ }
+ }
+
+
///
/// Determines systems behaviour when the left arrow key is pressed. Default behaviour is to collapse the current tree node if possible otherwise changes selection to current branches parent
///