浏览代码

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.
BDisp 2 年之前
父节点
当前提交
1d00efb3d3
共有 1 个文件被更改,包括 14 次插入5 次删除
  1. 14 5
      Terminal.Gui/Views/ListView.cs

+ 14 - 5
Terminal.Gui/Views/ListView.cs

@@ -736,14 +736,23 @@ namespace Terminal.Gui {
 		/// </summary>
 		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 ();
+		}
+
 		///<inheritdoc/>
 		public override void PositionCursor ()
 		{