Переглянути джерело

Fixed for dynamically added view.

BDisp 5 роки тому
батько
коміт
adae58bbf7
2 змінених файлів з 9 додано та 4 видалено
  1. 6 4
      Terminal.Gui/Core/View.cs
  2. 3 0
      UnitTests/ViewTests.cs

+ 6 - 4
Terminal.Gui/Core/View.cs

@@ -621,13 +621,18 @@ namespace Terminal.Gui {
 				container.ChildNeedsDisplay ();
 			if (subviews == null)
 				return;
-			foreach (var view in subviews)
+			foreach (var view in subviews) {
+				if (IsInitialized && !view.IsInitialized) {
+					view.BeginInit ();
+					view.EndInit ();
+				}
 				if (view.Frame.IntersectsWith (region)) {
 					var childRegion = Rect.Intersect (view.Frame, region);
 					childRegion.X -= view.Frame.X;
 					childRegion.Y -= view.Frame.Y;
 					view.SetNeedsDisplay (childRegion);
 				}
+			}
 		}
 
 		internal bool childNeedsDisplay;
@@ -666,9 +671,6 @@ namespace Terminal.Gui {
 				CanFocus = true;
 				view.tabIndex = tabIndexes.IndexOf (view);
 			}
-			if (IsInitialized) {
-				view.BeginInit ();
-			}
 			SetNeedsLayout ();
 			SetNeedsDisplay ();
 		}

+ 3 - 0
UnitTests/ViewTests.cs

@@ -700,6 +700,9 @@ namespace Terminal.Gui {
 
 				v1.Add (sv1);
 
+				while (!sv1.CanFocus) {
+				}
+
 				Application.Refresh ();
 				t.Running = false;
 			};