Explorar o código

Merge pull request #1000 from BDisp/toplevel-redraw

Fixes #999. Toplevel should only redraw the subviews if !NeedDisplay.IsEmpty or layoutNeeded.
Charlie Kindel %!s(int64=4) %!d(string=hai) anos
pai
achega
a82cb75641
Modificáronse 1 ficheiros con 10 adicións e 8 borrados
  1. 10 8
      Terminal.Gui/Core/Toplevel.cs

+ 10 - 8
Terminal.Gui/Core/Toplevel.cs

@@ -399,7 +399,7 @@ namespace Terminal.Gui {
 			Application.CurrentView = this;
 
 			if (IsCurrentTop || this == Application.Top) {
-				if (!NeedDisplay.IsEmpty) {
+				if (!NeedDisplay.IsEmpty || layoutNeeded) {
 					Driver.SetAttribute (Colors.TopLevel.Normal);
 
 					// This is the Application.Top. Clear just the region we're being asked to redraw 
@@ -407,15 +407,17 @@ namespace Terminal.Gui {
 					Clear (bounds);
 					Driver.SetAttribute (Colors.Base.Normal);
 					PositionToplevels ();
-				}
-				foreach (var view in Subviews) {
-					if (view.Frame.IntersectsWith (bounds)) {
-						view.SetNeedsLayout ();
-						view.SetNeedsDisplay (view.Bounds);
+
+					foreach (var view in Subviews) {
+						if (view.Frame.IntersectsWith (bounds)) {
+							view.SetNeedsLayout ();
+							view.SetNeedsDisplay (view.Bounds);
+						}
 					}
-				}
 
-				ClearNeedsDisplay ();
+					layoutNeeded = false;
+					ClearNeedsDisplay ();
+				}
 			}
 
 			base.Redraw (base.Bounds);