Explorar o código

Prevent crash by avoiding using a cast that is not correct, fixes #356

miguel %!s(int64=5) %!d(string=hai) anos
pai
achega
72403fbd21
Modificáronse 1 ficheiros con 20 adicións e 3 borrados
  1. 20 3
      Terminal.Gui/Types/PosDim.cs

+ 20 - 3
Terminal.Gui/Types/PosDim.cs

@@ -190,7 +190,7 @@ namespace Terminal.Gui {
 
 			public override string ToString ()
 			{
-				return $"{((PosView)left).Target.ToString ()},{right.ToString ()}";
+				return $"Pos.Combine ({left.ToString ()}{(add?'+':'-')}{right.ToString ()})";
 			}
 
 		}
@@ -206,8 +206,12 @@ namespace Terminal.Gui {
 		public static Pos operator + (Pos left, Pos right)
 		{
 			PosCombine newPos = new PosCombine (true, left, right);
-			if (posCombine?.ToString () != newPos.ToString ())
-				((PosView)left).Target.SetNeedsLayout ();
+			if (posCombine?.ToString () != newPos.ToString ()) {
+				var view = left as PosView;
+				if (view != null) {
+					view.Target.SetNeedsLayout ();
+				}
+			}
 			return posCombine = newPos;
 		}
 
@@ -244,6 +248,19 @@ namespace Terminal.Gui {
 					return 0;
 				}
 			}
+
+			public override string ToString ()
+			{
+				string tside;
+				switch (side) {
+				case 0: tside = "x"; break;
+				case 1: tside = "y"; break;
+				case 2: tside = "right"; break;
+				case 3: tside = "bottom"; break;
+				default: tside = "unknown"; break;
+				}
+				return $"Pos.View(side={tside}, target={Target.ToString()}";
+			}
 		}
 
 		/// <summary>