From 1d00efb3d3b7b04664146e410a3381cc6c98c230 Mon Sep 17 00:00:00 2001 From: BDisp Date: Sat, 8 Apr 2023 16:14:30 +0100 Subject: [PATCH] Fixes #2517. ListView EnsureSelectedItemVisible isn't working at load. (#2519) * Fixes #2516. StatusBar isn't positioned at the most bottom. * Fixes #2517. ListView EnsureSelectedItemVisible isn't working at load. --- Terminal.Gui/Views/ListView.cs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Terminal.Gui/Views/ListView.cs b/Terminal.Gui/Views/ListView.cs index 0e731caa2..427915866 100644 --- a/Terminal.Gui/Views/ListView.cs +++ b/Terminal.Gui/Views/ListView.cs @@ -736,14 +736,23 @@ namespace Terminal.Gui { /// public void EnsureSelectedItemVisible () { - SuperView?.LayoutSubviews (); - if (selected < top) { - top = Math.Max (selected, 0); - } else if (Frame.Height > 0 && selected >= top + Frame.Height) { - top = Math.Max (selected - Frame.Height + 1, 0); + if (SuperView?.IsInitialized == true) { + if (selected < top) { + top = Math.Max (selected, 0); + } else if (Frame.Height > 0 && selected >= top + Frame.Height) { + top = Math.Max (selected - Frame.Height + 1, 0); + } + LayoutStarted -= ListView_LayoutStarted; + } else { + LayoutStarted += ListView_LayoutStarted; } } + private void ListView_LayoutStarted (object sender, LayoutEventArgs e) + { + EnsureSelectedItemVisible (); + } + /// public override void PositionCursor () {