Przeglądaj źródła

Fixed nullable issues

Tig Kindel 1 rok temu
rodzic
commit
7dc80ac962

+ 1 - 1
Terminal.Gui/ConsoleDrivers/WindowsDriver.cs

@@ -1954,7 +1954,7 @@ internal class WindowsMainLoop : IMainLoopDriver {
 #if HACK_CHECK_WINCHANGED
 		_winChange?.Dispose ();
 #endif
-		_waitForProbe?.Dispose ();
+		//_waitForProbe?.Dispose ();
 
 		_mainLoop = null;
 	}

+ 24 - 24
Terminal.Gui/Drawing/LineCanvas.cs

@@ -336,19 +336,19 @@ namespace Terminal.Gui {
 			/// </summary>
 			public abstract void SetGlyphs ();
 
-			public Rune? GetRuneForIntersects (ConsoleDriver driver, IntersectionDefinition [] intersects)
+			public Rune? GetRuneForIntersects (ConsoleDriver driver, IntersectionDefinition? [] intersects)
 			{
-				var useRounded = intersects.Any (i => i.Line.Length != 0 && (
-					i.Line.Style == LineStyle.Rounded || i.Line.Style == LineStyle.RoundedDashed || i.Line.Style == LineStyle.RoundedDotted));
+				var useRounded = intersects.Any (i => i?.Line.Length != 0 && (
+					i?.Line.Style == LineStyle.Rounded || i?.Line.Style == LineStyle.RoundedDashed || i?.Line.Style == LineStyle.RoundedDotted));
 
 				// Note that there aren't any glyphs for intersections of double lines with heavy lines
 
-				bool doubleHorizontal = intersects.Any (l => l.Line.Orientation == Orientation.Horizontal && l.Line.Style == LineStyle.Double);
-				bool doubleVertical = intersects.Any (l => l.Line.Orientation == Orientation.Vertical && l.Line.Style == LineStyle.Double);
+				bool doubleHorizontal = intersects.Any (l => l?.Line.Orientation == Orientation.Horizontal && l.Line.Style == LineStyle.Double);
+				bool doubleVertical = intersects.Any (l => l?.Line.Orientation == Orientation.Vertical && l.Line.Style == LineStyle.Double);
 
-				bool thickHorizontal = intersects.Any (l => l.Line.Orientation == Orientation.Horizontal && (
+				bool thickHorizontal = intersects.Any (l => l?.Line.Orientation == Orientation.Horizontal && (
 					l.Line.Style == LineStyle.Heavy || l.Line.Style == LineStyle.HeavyDashed || l.Line.Style == LineStyle.HeavyDotted));
-				bool thickVertical = intersects.Any (l => l.Line.Orientation == Orientation.Vertical && (
+				bool thickVertical = intersects.Any (l => l?.Line.Orientation == Orientation.Vertical && (
 					l.Line.Style == LineStyle.Heavy || l.Line.Style == LineStyle.HeavyDashed || l.Line.Style == LineStyle.HeavyDotted));
 
 				if (doubleHorizontal) {
@@ -489,7 +489,7 @@ namespace Terminal.Gui {
 			}
 		}
 
-		private Rune? GetRuneForIntersects (ConsoleDriver driver, IntersectionDefinition [] intersects)
+		private Rune? GetRuneForIntersects (ConsoleDriver driver, IntersectionDefinition? [] intersects)
 		{
 			if (!intersects.Any ()) {
 				return null;
@@ -497,18 +497,18 @@ namespace Terminal.Gui {
 
 			var runeType = GetRuneTypeForIntersects (intersects);
 
-			if (runeResolvers.ContainsKey (runeType)) {
-				return runeResolvers [runeType].GetRuneForIntersects (driver, intersects);
+			if (runeResolvers.TryGetValue (runeType, out var resolver)) {
+				return resolver.GetRuneForIntersects (driver, intersects);
 			}
 
 			// TODO: Remove these once we have all of the below ported to IntersectionRuneResolvers
-			var useDouble = intersects.Any (i => i.Line.Style == LineStyle.Double);
-			var useDashed = intersects.Any (i => i.Line.Style == LineStyle.Dashed || i.Line.Style == LineStyle.RoundedDashed);
-			var useDotted = intersects.Any (i => i.Line.Style == LineStyle.Dotted || i.Line.Style == LineStyle.RoundedDotted);
+			var useDouble = intersects.Any (i => i?.Line.Style == LineStyle.Double);
+			var useDashed = intersects.Any (i => i?.Line.Style == LineStyle.Dashed || i?.Line.Style == LineStyle.RoundedDashed);
+			var useDotted = intersects.Any (i => i?.Line.Style == LineStyle.Dotted || i?.Line.Style == LineStyle.RoundedDotted);
 			// horiz and vert lines same as Single for Rounded
-			var useThick = intersects.Any (i => i.Line.Style == LineStyle.Heavy);
-			var useThickDashed = intersects.Any (i => i.Line.Style == LineStyle.HeavyDashed);
-			var useThickDotted = intersects.Any (i => i.Line.Style == LineStyle.HeavyDotted);
+			var useThick = intersects.Any (i => i?.Line.Style == LineStyle.Heavy);
+			var useThickDashed = intersects.Any (i => i?.Line.Style == LineStyle.HeavyDashed);
+			var useThickDotted = intersects.Any (i => i?.Line.Style == LineStyle.HeavyDotted);
 			// TODO: Support ruler
 			//var useRuler = intersects.Any (i => i.Line.Style == LineStyle.Ruler && i.Line.Length != 0);
 
@@ -545,19 +545,19 @@ namespace Terminal.Gui {
 			}
 		}
 
-		private Attribute? GetAttributeForIntersects (IntersectionDefinition [] intersects)
+		private Attribute? GetAttributeForIntersects (IntersectionDefinition? [] intersects)
 		{
-			var set = new List<IntersectionDefinition> (intersects.Where (i => i.Line.Attribute?.HasValidColors ?? false));
+			var set = new List<IntersectionDefinition?> (intersects.Where (i => i!.Line.Attribute?.HasValidColors ?? false));
 
 			if (set.Count == 0) {
 				return null;
 			}
 
-			return set [0].Line.Attribute;
+			return set [0]!.Line.Attribute;
 
 		}
 
-		private Cell? GetCellForIntersects (ConsoleDriver driver, IntersectionDefinition [] intersects)
+		private Cell? GetCellForIntersects (ConsoleDriver driver, IntersectionDefinition? [] intersects)
 		{
 			if (!intersects.Any ()) {
 				return null;
@@ -572,9 +572,9 @@ namespace Terminal.Gui {
 			return cell;
 		}
 
-		private IntersectionRuneType GetRuneTypeForIntersects (IntersectionDefinition [] intersects)
+		private IntersectionRuneType GetRuneTypeForIntersects (IntersectionDefinition? [] intersects)
 		{
-			var set = new HashSet<IntersectionType> (intersects.Select (i => i.Type));
+			var set = new HashSet<IntersectionType> (intersects.Select (i => i!.Type));
 
 			#region Cross Conditions
 			if (Has (set,
@@ -696,9 +696,9 @@ namespace Terminal.Gui {
 			return IntersectionRuneType.Dot;
 		}
 
-		private bool All (IntersectionDefinition [] intersects, Orientation orientation)
+		private bool All (IntersectionDefinition? [] intersects, Orientation orientation)
 		{
-			return intersects.All (i => i.Line.Orientation == orientation);
+			return intersects.All (i => i!.Line.Orientation == orientation);
 		}
 
 		/// <summary>

+ 4 - 3
Terminal.Gui/Drawing/StraightLine.cs

@@ -1,5 +1,6 @@
 using System;
 namespace Terminal.Gui {
+#nullable enable
 	// TODO: Add events that notify when StraightLine changes to enable dynamic layout
 	/// <summary>
 	/// A line between two points on a horizontal or vertical <see cref="Orientation"/>
@@ -49,7 +50,7 @@ namespace Terminal.Gui {
 			this.Attribute = attribute;
 		}
 
-		internal IntersectionDefinition Intersects (int x, int y)
+		internal IntersectionDefinition? Intersects (int x, int y)
 		{
 			switch (Orientation) {
 			case Orientation.Horizontal: return IntersectsHorizontally (x, y);
@@ -59,7 +60,7 @@ namespace Terminal.Gui {
 
 		}
 
-		private IntersectionDefinition IntersectsHorizontally (int x, int y)
+		private IntersectionDefinition? IntersectsHorizontally (int x, int y)
 		{
 			if (Start.Y != y) {
 				return null;
@@ -99,7 +100,7 @@ namespace Terminal.Gui {
 			}
 		}
 
-		private IntersectionDefinition IntersectsVertically (int x, int y)
+		private IntersectionDefinition? IntersectsVertically (int x, int y)
 		{
 			if (Start.X != x) {
 				return null;

+ 1 - 1
Terminal.Gui/Views/GraphView/GraphView.cs

@@ -3,8 +3,8 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 
+#nullable enable
 namespace Terminal.Gui {
-
 	/// <summary>
 	/// Control for rendering graphs (bar, scatter etc)
 	/// </summary>

+ 2 - 1
Terminal.Gui/Views/GraphView/Series.cs

@@ -5,6 +5,7 @@ using System.Linq;
 using System.Text;
 
 namespace Terminal.Gui {
+#nullable enable
 	/// <summary>
 	/// Describes a series of data that can be rendered into a <see cref="GraphView"/>>
 	/// </summary>
@@ -83,7 +84,7 @@ namespace Terminal.Gui {
 		/// <param name="barsEvery">How far appart to put each category (in graph space)</param>
 		/// <param name="spacing">How much spacing between bars in a category (should be less than <paramref name="barsEvery"/>/<paramref name="numberOfBarsPerCategory"/>)</param>
 		/// <param name="colors">Array of colors that define bar color in each category.  Length must match <paramref name="numberOfBarsPerCategory"/></param>
-		public MultiBarSeries (int numberOfBarsPerCategory, float barsEvery, float spacing, Attribute [] colors = null)
+		public MultiBarSeries (int numberOfBarsPerCategory, float barsEvery, float spacing, Attribute []? colors = null)
 		{
 			subSeries = new BarSeries [numberOfBarsPerCategory];