浏览代码

Code cleanup

Tig 1 年之前
父节点
当前提交
ef16f814cf

+ 8 - 9
Terminal.Gui/Drawing/Thickness.cs

@@ -9,7 +9,8 @@ namespace Terminal.Gui;
 /// </summary>
 /// <remarks>
 ///     <para>
-///         Use the helper API (<see cref="GetInside(Rectangle)"/> to get the rectangle describing the insides of the frame,
+///         Use the helper API (<see cref="GetInside(Rectangle)"/> to get the rectangle describing the insides of the
+///         frame,
 ///         with the thickness widths subtracted.
 ///     </para>
 ///     <para>Use the helper API (<see cref="Draw(Rectangle, string)"/> to draw the frame with the specified thickness.</para>
@@ -86,7 +87,7 @@ public class Thickness : IEquatable<Thickness>
     public bool Equals (Thickness other) { return other is { } && Left == other.Left && Right == other.Right && Top == other.Top && Bottom == other.Bottom; }
 
     /// <summary>
-    ///     Gets whether the specified coordinates lie within the thickness (inside the bounding rectangle but outside of
+    ///     Gets whether the specified coordinates lie within the thickness (inside the bounding rectangle but outside
     ///     the rectangle described by <see cref="GetInside(Rectangle)"/>.
     /// </summary>
     /// <param name="outside">Describes the location and size of the rectangle that contains the thickness.</param>
@@ -100,17 +101,15 @@ public class Thickness : IEquatable<Thickness>
     }
 
     /// <summary>
-    /// Adds the thickness widths of another <see cref="Thickness"/> to the current <see cref="Thickness"/>, returning a new <see cref="Thickness"/>.
+    ///     Adds the thickness widths of another <see cref="Thickness"/> to the current <see cref="Thickness"/>, returning a
+    ///     new <see cref="Thickness"/>.
     /// </summary>
     /// <param name="other"></param>
     /// <returns></returns>
-    public Thickness Add (Thickness other)
-    {
-        return new Thickness (Left + other.Left, Top + other.Top, Right + other.Right, Bottom + other.Bottom);
-    }
+    public Thickness Add (Thickness other) { return new (Left + other.Left, Top + other.Top, Right + other.Right, Bottom + other.Bottom); }
 
     /// <summary>
-    /// Adds the thickness widths of another <see cref="Thickness"/> to another <see cref="Thickness"/>.
+    ///     Adds the thickness widths of another <see cref="Thickness"/> to another <see cref="Thickness"/>.
     /// </summary>
     /// <param name="a"></param>
     /// <param name="b"></param>
@@ -193,7 +192,7 @@ public class Thickness : IEquatable<Thickness>
                                         );
         }
 
-        if (View.Diagnostics.HasFlag(ViewDiagnosticFlags.Ruler))
+        if (View.Diagnostics.HasFlag (ViewDiagnosticFlags.Ruler))
         {
             // PERF: This can almost certainly be simplified down to a single point offset and fewer calls to Draw
             // Top

+ 18 - 7
Terminal.Gui/View/ViewContent.cs

@@ -196,9 +196,7 @@ public partial class View
         contentRelativeToViewport.Offset (-Viewport.X, -Viewport.Y);
 
         // Translate to Screen-Relative (our SuperView's Viewport-relative coordinates)
-        Rectangle screen = ViewportToScreen (new (contentRelativeToViewport, Size.Empty));
-
-        return screen.Location;
+        return ViewportToScreen (contentRelativeToViewport);
     }
 
     /// <summary>Converts a Screen-relative coordinate to a Content-relative coordinate.</summary>
@@ -425,22 +423,35 @@ public partial class View
         ViewportChanged?.Invoke (this, e);
     }
 
+    /// <summary>
+    ///     Converts a <see cref="Viewport"/>-relative location and size to a screen-relative location and size.
+    /// </summary>
+    /// <remarks>
+    ///     Viewport-relative means relative to the top-left corner of the inner rectangle of the <see cref="Padding"/>.
+    /// </remarks>
+    /// <param name="viewport">Viewport-relative location and size.</param>
+    /// <returns>Screen-relative location and size.</returns>
+    public Rectangle ViewportToScreen (in Rectangle viewport)
+    {
+        return viewport with { Location = ViewportToScreen (viewport.Location) };
+    }
+
     /// <summary>
     ///     Converts a <see cref="Viewport"/>-relative location to a screen-relative location.
     /// </summary>
     /// <remarks>
     ///     Viewport-relative means relative to the top-left corner of the inner rectangle of the <see cref="Padding"/>.
     /// </remarks>
-    /// <param name="location">Viewport-relative location.</param>
+    /// <param name="viewportLocation">Viewport-relative location.</param>
     /// <returns>Screen-relative location.</returns>
-    public Rectangle ViewportToScreen (in Rectangle location)
+    public Point ViewportToScreen (in Point viewportLocation)
     {
         // Translate bounds to Frame (our SuperView's Viewport-relative coordinates)
         Rectangle screen = FrameToScreen ();
         Point viewportOffset = GetViewportOffsetFromFrame ();
-        screen.Offset (viewportOffset.X + location.X, viewportOffset.Y + location.Y);
+        screen.Offset (viewportOffset.X + viewportLocation.X, viewportOffset.Y + viewportLocation.Y);
 
-        return new (screen.Location, location.Size);
+        return screen.Location;
     }
 
     /// <summary>Converts a screen-relative coordinate to a Viewport-relative coordinate.</summary>

+ 3 - 3
Terminal.Gui/View/ViewDrawing.cs

@@ -106,7 +106,7 @@ public partial class View
 
         if (ViewportSettings.HasFlag (ViewportSettings.ClearContentOnly))
         {
-            Rectangle visibleContent = ViewportToScreen (new (new (-Viewport.X, -Viewport.Y), ContentSize.GetValueOrDefault ()));
+            Rectangle visibleContent = ViewportToScreen (new Rectangle (new (-Viewport.X, -Viewport.Y), ContentSize.GetValueOrDefault ()));
             toClear = Rectangle.Intersect (toClear, visibleContent);
         }
 
@@ -172,7 +172,7 @@ public partial class View
         if (ViewportSettings.HasFlag (ViewportSettings.ClipContentOnly))
         {
             // Clamp the Clip to the just content area that is within the viewport
-            Rectangle visibleContent = ViewportToScreen (new (new (-Viewport.X, -Viewport.Y), ContentSize.GetValueOrDefault ()));
+            Rectangle visibleContent = ViewportToScreen (new Rectangle (new (-Viewport.X, -Viewport.Y), ContentSize.GetValueOrDefault ()));
             clip = Rectangle.Intersect (clip, visibleContent);
         }
 
@@ -396,7 +396,7 @@ public partial class View
             return false;
         }
 
-        Rectangle screen = ViewportToScreen (new (col, row, 0, 0));
+        var screen = ViewportToScreen (new Point (col, row));
         Driver?.Move (screen.X, screen.Y);
 
         return true;

+ 1 - 4
Terminal.Gui/View/ViewSubViews.cs

@@ -875,10 +875,7 @@ public partial class View
         if (IsInitialized && CanFocus && HasFocus && ContentSize.HasValue)
         {
             // By default, position the cursor at the hotkey (if any) or 0, 0.
-            Point location = Viewport.Location;
-            location.X = TextFormatter.HotKeyPos == -1 ? 0 : TextFormatter.CursorPosition;
-            location.Y = 0;
-            Move (location.X, location.Y);
+            Move (TextFormatter.HotKeyPos == -1 ? 0 : TextFormatter.CursorPosition, 0);
         }
 
         // Returning null will hide the cursor.

+ 5 - 5
Terminal.Gui/Views/Menu/Menu.cs

@@ -791,7 +791,7 @@ internal sealed class Menu : View
 
             if (item is null && BorderStyle != LineStyle.None)
             {
-                var s = ViewportToScreen (new (-1, i, 0, 0));
+                var s = ViewportToScreen (new Point (-1, i));
                 Driver.Move (s.X, s.Y);
                 Driver.AddRune (Glyphs.LeftTee);
             }
@@ -839,7 +839,7 @@ internal sealed class Menu : View
             {
                 if (BorderStyle != LineStyle.None && SuperView?.Frame.Right - Frame.X > Frame.Width)
                 {
-                    var s = ViewportToScreen (new (Frame.Width - 2, i, 0, 0));
+                    var s = ViewportToScreen (new Point (Frame.Width - 2, i));
                     Driver.Move (s.X, s.Y);
                     Driver.AddRune (Glyphs.RightTee);
                 }
@@ -876,7 +876,7 @@ internal sealed class Menu : View
                 textToDraw = item.Title;
             }
 
-            Rectangle screen = ViewportToScreen (new (new (0 , i), Size.Empty));
+            var screen = ViewportToScreen (new Point(0  , i));
             if (screen.X < Driver.Cols)
             {
                 Driver.Move (screen.X + 1, screen.Y);
@@ -895,7 +895,7 @@ internal sealed class Menu : View
 
                     // The -3 is left/right border + one space (not sure what for)
                     tf.Draw (
-                             ViewportToScreen (new (1, i, Frame.Width - 3, 1)),
+                             ViewportToScreen (new Rectangle(1, i, Frame.Width - 3, 1)),
                              i == _currentChild ? GetFocusColor () : GetNormalColor (),
                              i == _currentChild ? ColorScheme.HotFocus : ColorScheme.HotNormal,
                              SuperView?.ViewportToScreen (SuperView.Viewport) ?? Rectangle.Empty
@@ -915,7 +915,7 @@ internal sealed class Menu : View
                             ? item.Help.GetColumns ()
                             : item.Help.GetColumns () + item.ShortcutTag.GetColumns () + 2;
                 int col = Frame.Width - l - 3;
-                screen = ViewportToScreen (new (new (col, i), Size.Empty));
+                screen = ViewportToScreen (new Point (col, i));
 
                 if (screen.X < Driver.Cols)
                 {

+ 2 - 2
Terminal.Gui/Views/Menu/MenuBar.cs

@@ -1336,7 +1336,7 @@ public class MenuBar : View
 
         if (mi.IsTopLevel)
         {
-            Rectangle screen = ViewportToScreen (new (new (0, i), Size.Empty));
+            var screen = ViewportToScreen (new Point (0 , i));
             var menu = new Menu { Host = this, X = screen.X, Y = screen.Y, BarItems = mi };
             menu.Run (mi.Action);
             menu.Dispose ();
@@ -1699,7 +1699,7 @@ public class MenuBar : View
                     {
                         if (Menus [i].IsTopLevel)
                         {
-                            Rectangle screen = ViewportToScreen (new (new (0, i), Size.Empty));
+                            var screen = ViewportToScreen (new Point(0 , i));
                             var menu = new Menu { Host = this, X = screen.X, Y = screen.Y, BarItems = Menus [i] };
                             menu.Run (Menus [i].Action);
                             menu.Dispose ();

+ 2 - 2
UICatalog/Scenarios/Notepad.cs

@@ -362,9 +362,9 @@ public class Notepad : Scenario
                         );
         }
 
-        Rectangle screen = ((View)sender).ViewportToScreen (new (e.MouseEvent.Position, Size.Empty));
+        var screen = ((View)sender).ViewportToScreen (e.MouseEvent.Position);
 
-        var contextMenu = new ContextMenu { Position = screen.Location, MenuItems = items };
+        var contextMenu = new ContextMenu { Position = screen, MenuItems = items };
 
         contextMenu.Show ();
         e.MouseEvent.Handled = true;

+ 18 - 18
UnitTests/View/Adornment/ToScreenTests.cs

@@ -251,9 +251,9 @@ public class AdornmentToScreenTests (ITestOutputHelper output)
         view.Frame = frame;
 
         // Act
-        var marginScreen = view.Margin.ViewportToScreen (new (testX, 0, 0, 0));
-        var borderScreen = view.Border.ViewportToScreen (new (testX, 0, 0, 0));
-        var paddingScreen = view.Padding.ViewportToScreen (new (testX, 0, 0, 0));
+        var marginScreen = view.Margin.ViewportToScreen (new Point (testX, 0));
+        var borderScreen = view.Border.ViewportToScreen (new Point (testX, 0));
+        var paddingScreen = view.Padding.ViewportToScreen (new Point (testX, 0));
 
         // Assert
         Assert.Equal (expectedX, marginScreen.X);
@@ -292,9 +292,9 @@ public class AdornmentToScreenTests (ITestOutputHelper output)
         Assert.Equal(4, view.Viewport.Width);
 
         // Act
-        var marginScreen = view.Margin.ViewportToScreen (new (testX, 0, 0, 0));
-        var borderScreen = view.Border.ViewportToScreen (new (testX, 0, 0, 0));
-        var paddingScreen = view.Padding.ViewportToScreen (new (testX, 0, 0, 0));
+        var marginScreen = view.Margin.ViewportToScreen (new Point (testX, 0));
+        var borderScreen = view.Border.ViewportToScreen (new Point (testX, 0));
+        var paddingScreen = view.Padding.ViewportToScreen (new Point (testX, 0));
 
         // Assert
         Assert.Equal (expectedX, marginScreen.X);
@@ -338,9 +338,9 @@ public class AdornmentToScreenTests (ITestOutputHelper output)
         superView.LayoutSubviews ();
 
         // Act
-        var marginScreen = view.Margin.ViewportToScreen (new (testX, 0, 0, 0));
-        var borderScreen = view.Border.ViewportToScreen (new (testX, 0, 0, 0));
-        var paddingScreen = view.Padding.ViewportToScreen (new (testX, 0, 0, 0));
+        var marginScreen = view.Margin.ViewportToScreen (new Point (testX, 0));
+        var borderScreen = view.Border.ViewportToScreen (new Point (testX, 0));
+        var paddingScreen = view.Padding.ViewportToScreen (new Point (testX, 0));
 
         // Assert
         Assert.Equal (expectedX, marginScreen.X);
@@ -385,9 +385,9 @@ public class AdornmentToScreenTests (ITestOutputHelper output)
         superView.LayoutSubviews ();
 
         // Act
-        var marginScreen = view.Margin.ViewportToScreen (new (testX, 0, 0, 0));
-        var borderScreen = view.Border.ViewportToScreen (new (testX, 0, 0, 0));
-        var paddingScreen = view.Padding.ViewportToScreen (new (testX, 0, 0, 0));
+        var marginScreen = view.Margin.ViewportToScreen (new Point (testX, 0));
+        var borderScreen = view.Border.ViewportToScreen (new Point (testX, 0));
+        var paddingScreen = view.Padding.ViewportToScreen (new Point (testX, 0));
 
         // Assert
         Assert.Equal (expectedX, marginScreen.X);
@@ -441,9 +441,9 @@ public class AdornmentToScreenTests (ITestOutputHelper output)
         superView.LayoutSubviews ();
 
         // Act
-        var marginScreen = view.Margin.ViewportToScreen (new (testX, 0, 0, 0));
-        var borderScreen = view.Border.ViewportToScreen (new (testX, 0, 0, 0));
-        var paddingScreen = view.Padding.ViewportToScreen (new (testX, 0, 0, 0));
+        var marginScreen = view.Margin.ViewportToScreen (new Point (testX, 0));
+        var borderScreen = view.Border.ViewportToScreen (new Point (testX, 0));
+        var paddingScreen = view.Padding.ViewportToScreen (new Point (testX, 0));
 
         // Assert
         Assert.Equal (expectedX, marginScreen.X);
@@ -502,9 +502,9 @@ public class AdornmentToScreenTests (ITestOutputHelper output)
         superView.LayoutSubviews ();
 
         // Act
-        var marginScreen = view.Margin.ViewportToScreen (new (testX, 0, 0, 0));
-        var borderScreen = view.Border.ViewportToScreen (new (testX, 0, 0, 0));
-        var paddingScreen = view.Padding.ViewportToScreen (new (testX, 0, 0, 0));
+        var marginScreen = view.Margin.ViewportToScreen (new Point (testX, 0));
+        var borderScreen = view.Border.ViewportToScreen (new Point (testX, 0));
+        var paddingScreen = view.Padding.ViewportToScreen (new Point (testX, 0));
 
         // Assert
         Assert.Equal (expectedX, marginScreen.X);

+ 7 - 7
UnitTests/View/Layout/ToScreenTests.cs

@@ -655,7 +655,7 @@ public class ToScreenTests (ITestOutputHelper output)
         view.Frame = frame;
 
         // Act
-        var screen = view.ViewportToScreen (new (viewportX, 0, 0, 0));
+        var screen = view.ViewportToScreen (new Point (viewportX, 0));
 
         // Assert
         Assert.Equal (expectedX, screen.X);
@@ -687,7 +687,7 @@ public class ToScreenTests (ITestOutputHelper output)
         view.Frame = frame;
 
         // Act
-        var screen = view.ViewportToScreen (new (viewportX, 0, 0, 0));
+        var screen = view.ViewportToScreen (new Point (viewportX, 0));
 
         // Assert
         Assert.Equal (expectedX, screen.X);
@@ -729,7 +729,7 @@ public class ToScreenTests (ITestOutputHelper output)
         superView.LayoutSubviews ();
 
         // Act
-        var screen = view.ViewportToScreen (new (viewportX, 0, 0, 0));
+        var screen = view.ViewportToScreen (new Point (viewportX, 0));
 
         // Assert
         Assert.Equal (expectedX, screen.X);
@@ -772,7 +772,7 @@ public class ToScreenTests (ITestOutputHelper output)
         superView.LayoutSubviews ();
 
         // Act
-        var screen = view.ViewportToScreen (new (viewportX, 0, 0, 0));
+        var screen = view.ViewportToScreen (new Point (viewportX, 0));
 
         // Assert
         Assert.Equal (expectedX, screen.X);
@@ -824,7 +824,7 @@ public class ToScreenTests (ITestOutputHelper output)
         superView.LayoutSubviews ();
 
         // Act
-        var screen = view.ViewportToScreen (new (viewportX, 0, 0, 0));
+        var screen = view.ViewportToScreen (new Point (viewportX, 0));
 
         // Assert
         Assert.Equal (expectedX, screen.X);
@@ -878,7 +878,7 @@ public class ToScreenTests (ITestOutputHelper output)
         superView.LayoutSubviews ();
 
         // Act
-        var screen = view.ViewportToScreen (new (viewportX, 0, 0, 0));
+        var screen = view.ViewportToScreen (new Point (viewportX, 0));
 
         // Assert
         Assert.Equal (expectedX, screen.X);
@@ -935,7 +935,7 @@ public class ToScreenTests (ITestOutputHelper output)
         superView.LayoutSubviews ();
 
         // Act
-        var screen = view.ViewportToScreen (new (testX, 0, 0, 0));
+        var screen = view.ViewportToScreen (new Point (testX, 0));
 
         // Assert
         Assert.Equal (expectedX, screen.X);

+ 34 - 34
UnitTests/View/NavigationTests.cs

@@ -852,19 +852,19 @@ public class NavigationTests
 
         // top
         Assert.Equal (Point.Empty, top.ScreenToFrame (new (0, 0)));
-        Rectangle screen = top.Margin.ViewportToScreen (new (0, 0, 0, 0));
+        var screen = top.Margin.ViewportToScreen (new Point (0, 0));
         Assert.Equal (0, screen.X);
         Assert.Equal (0, screen.Y);
-        screen = top.Border.ViewportToScreen (new (0, 0, 0, 0));
+        screen = top.Border.ViewportToScreen (new Point (0, 0));
         Assert.Equal (0, screen.X);
         Assert.Equal (0, screen.Y);
-        screen = top.Padding.ViewportToScreen (new (0, 0, 0, 0));
+        screen = top.Padding.ViewportToScreen (new Point (0, 0));
         Assert.Equal (1, screen.X);
         Assert.Equal (1, screen.Y);
-        screen = top.ViewportToScreen (new (0, 0, 0, 0));
+        screen = top.ViewportToScreen (new Point (0, 0));
         Assert.Equal (1, screen.X);
         Assert.Equal (1, screen.Y);
-        screen = top.ViewportToScreen (new (-1, -1, 0, 0));
+        screen = top.ViewportToScreen (new Point (-1, -1));
         Assert.Equal (0, screen.X);
         Assert.Equal (0, screen.Y);
         var found = View.FindDeepestView (top, new (0, 0));
@@ -873,7 +873,7 @@ public class NavigationTests
         Assert.Equal (0, found.Frame.X);
         Assert.Equal (0, found.Frame.Y);
         Assert.Equal (new Point (3, 2), top.ScreenToFrame (new (3, 2)));
-        screen = top.ViewportToScreen (new (3, 2, 0, 0));
+        screen = top.ViewportToScreen (new Point (3, 2));
         Assert.Equal (4, screen.X);
         Assert.Equal (3, screen.Y);
         found = View.FindDeepestView (top, new (screen.X, screen.Y));
@@ -885,14 +885,14 @@ public class NavigationTests
         //Assert.Equal (3, found.FrameToScreen ().X);
         //Assert.Equal (2, found.FrameToScreen ().Y);
         Assert.Equal (new Point (13, 2), top.ScreenToFrame (new (13, 2)));
-        screen = top.ViewportToScreen (new (12, 2, 0, 0));
+        screen = top.ViewportToScreen (new Point (12, 2));
         Assert.Equal (13, screen.X);
         Assert.Equal (3, screen.Y);
         found = View.FindDeepestView (top, new (screen.X, screen.Y));
         Assert.Equal (view, found);
         //Assert.Equal (9, found.FrameToScreen ().X);
         //Assert.Equal (0, found.FrameToScreen ().Y);
-        screen = top.ViewportToScreen (new (13, 2, 0, 0));
+        screen = top.ViewportToScreen (new Point (13, 2));
         Assert.Equal (14, screen.X);
         Assert.Equal (3, screen.Y);
         found = View.FindDeepestView (top, new (13, 2));
@@ -900,7 +900,7 @@ public class NavigationTests
         //Assert.Equal (13, found.FrameToScreen ().X);
         //Assert.Equal (2, found.FrameToScreen ().Y);
         Assert.Equal (new Point (14, 3), top.ScreenToFrame (new (14, 3)));
-        screen = top.ViewportToScreen (new (14, 3, 0, 0));
+        screen = top.ViewportToScreen (new Point (14, 3));
         Assert.Equal (15, screen.X);
         Assert.Equal (4, screen.Y);
         found = View.FindDeepestView (top, new (14, 3));
@@ -910,40 +910,40 @@ public class NavigationTests
 
         // view
         Assert.Equal (new Point (-4, -3), view.ScreenToFrame (new (0, 0)));
-        screen = view.Margin.ViewportToScreen (new (-3, -2, 0, 0));
+        screen = view.Margin.ViewportToScreen (new Point (-3, -2));
         Assert.Equal (1, screen.X);
         Assert.Equal (1, screen.Y);
-        screen = view.Border.ViewportToScreen (new (-3, -2, 0, 0));
+        screen = view.Border.ViewportToScreen (new Point (-3, -2));
         Assert.Equal (1, screen.X);
         Assert.Equal (1, screen.Y);
-        screen = view.Padding.ViewportToScreen (new (-3, -2, 0, 0));
+        screen = view.Padding.ViewportToScreen (new Point (-3, -2));
         Assert.Equal (1, screen.X);
         Assert.Equal (1, screen.Y);
-        screen = view.ViewportToScreen (new (-3, -2, 0, 0));
+        screen = view.ViewportToScreen (new Point (-3, -2));
         Assert.Equal (1, screen.X);
         Assert.Equal (1, screen.Y);
-        screen = view.ViewportToScreen (new (-4, -3, 0, 0));
+        screen = view.ViewportToScreen (new Point (-4, -3));
         Assert.Equal (0, screen.X);
         Assert.Equal (0, screen.Y);
         found = View.FindDeepestView (top, new (0, 0));
         Assert.Equal (top.Border, found);
 
         Assert.Equal (new Point (-1, -1), view.ScreenToFrame (new (3, 2)));
-        screen = view.ViewportToScreen (new (0, 0, 0, 0));
+        screen = view.ViewportToScreen (new Point (0, 0));
         Assert.Equal (4, screen.X);
         Assert.Equal (3, screen.Y);
         found = View.FindDeepestView (top, new (4, 3));
         Assert.Equal (view, found);
 
         Assert.Equal (new Point (9, -1), view.ScreenToFrame (new (13, 2)));
-        screen = view.ViewportToScreen (new (10, 0, 0, 0));
+        screen = view.ViewportToScreen (new Point (10, 0));
         Assert.Equal (14, screen.X);
         Assert.Equal (3, screen.Y);
         found = View.FindDeepestView (top, new (14, 3));
         Assert.Equal (top, found);
 
         Assert.Equal (new Point (10, 0), view.ScreenToFrame (new (14, 3)));
-        screen = view.ViewportToScreen (new (11, 1, 0, 0));
+        screen = view.ViewportToScreen (new Point (11, 1));
         Assert.Equal (15, screen.X);
         Assert.Equal (4, screen.Y);
         found = View.FindDeepestView (top, new (15, 4));
@@ -1006,80 +1006,80 @@ public class NavigationTests
 
         // top
         Assert.Equal (new Point (-3, -2), top.ScreenToFrame (new (0, 0)));
-        Rectangle screen = top.Margin.ViewportToScreen (new (-3, -2, 0, 0));
+        var  screen = top.Margin.ViewportToScreen (new Point (-3, -2));
         Assert.Equal (0, screen.X);
         Assert.Equal (0, screen.Y);
-        screen = top.Border.ViewportToScreen (new (-3, -2, 0, 0));
+        screen = top.Border.ViewportToScreen (new Point (-3, -2));
         Assert.Equal (0, screen.X);
         Assert.Equal (0, screen.Y);
-        screen = top.Padding.ViewportToScreen (new (-3, -2, 0, 0));
+        screen = top.Padding.ViewportToScreen (new Point (-3, -2));
         Assert.Equal (1, screen.X);
         Assert.Equal (1, screen.Y);
-        screen = top.ViewportToScreen (new (-3, -2, 0, 0));
+        screen = top.ViewportToScreen (new Point (-3, -2));
         Assert.Equal (1, screen.X);
         Assert.Equal (1, screen.Y);
-        screen = top.ViewportToScreen (new (-4, -3, 0, 0));
+        screen = top.ViewportToScreen (new Point (-4, -3));
         Assert.Equal (0, screen.X);
         Assert.Equal (0, screen.Y);
         var found = View.FindDeepestView (top, new (-4, -3));
         Assert.Null (found);
         Assert.Equal (Point.Empty, top.ScreenToFrame (new (3, 2)));
-        screen = top.ViewportToScreen (new (0, 0, 0, 0));
+        screen = top.ViewportToScreen (new Point (0, 0));
         Assert.Equal (4, screen.X);
         Assert.Equal (3, screen.Y);
         Assert.Equal (top.Border, View.FindDeepestView (top, new (3, 2)));
         //Assert.Equal (0, found.FrameToScreen ().X);
         //Assert.Equal (0, found.FrameToScreen ().Y);
         Assert.Equal (new Point (10, 0), top.ScreenToFrame (new (13, 2)));
-        screen = top.ViewportToScreen (new (10, 0, 0, 0));
+        screen = top.ViewportToScreen (new Point (10, 0));
         Assert.Equal (14, screen.X);
         Assert.Equal (3, screen.Y);
         Assert.Equal (top.Border, View.FindDeepestView (top, new (13, 2)));
         //Assert.Equal (10, found.FrameToScreen ().X);
         //Assert.Equal (0, found.FrameToScreen ().Y);
         Assert.Equal (new Point (11, 1), top.ScreenToFrame (new (14, 3)));
-        screen = top.ViewportToScreen (new (11, 1, 0, 0));
+        screen = top.ViewportToScreen (new Point (11, 1));
         Assert.Equal (15, screen.X);
         Assert.Equal (4, screen.Y);
         Assert.Equal (top, View.FindDeepestView (top, new (14, 3)));
 
         // view
         Assert.Equal (new Point (-7, -5), view.ScreenToFrame (new (0, 0)));
-        screen = view.Margin.ViewportToScreen (new (-6, -4, 0, 0));
+        screen = view.Margin.ViewportToScreen (new Point (-6, -4));
         Assert.Equal (1, screen.X);
         Assert.Equal (1, screen.Y);
-        screen = view.Border.ViewportToScreen (new (-6, -4, 0, 0));
+        screen = view.Border.ViewportToScreen (new Point (-6, -4));
         Assert.Equal (1, screen.X);
         Assert.Equal (1, screen.Y);
-        screen = view.Padding.ViewportToScreen (new (-6, -4, 0, 0));
+        screen = view.Padding.ViewportToScreen (new Point (-6, -4));
         Assert.Equal (1, screen.X);
         Assert.Equal (1, screen.Y);
-        screen = view.ViewportToScreen (new (-6, -4, 0, 0));
+        screen = view.ViewportToScreen (new Point (-6, -4));
         Assert.Equal (1, screen.X);
         Assert.Equal (1, screen.Y);
         Assert.Null (View.FindDeepestView (top, new (1, 1)));
         Assert.Equal (new Point (-4, -3), view.ScreenToFrame (new (3, 2)));
-        screen = view.ViewportToScreen (new (-3, -2, 0, 0));
+        screen = view.ViewportToScreen (new Point (-3, -2));
         Assert.Equal (4, screen.X);
         Assert.Equal (3, screen.Y);
         Assert.Equal (top, View.FindDeepestView (top, new (4, 3)));
         Assert.Equal (new Point (-1, -1), view.ScreenToFrame (new (6, 4)));
-        screen = view.ViewportToScreen (new (0, 0, 0, 0));
+        screen = view.ViewportToScreen (new Point (0, 0));
         Assert.Equal (7, screen.X);
         Assert.Equal (5, screen.Y);
         Assert.Equal (view, View.FindDeepestView (top, new (7, 5)));
         Assert.Equal (new Point (6, -1), view.ScreenToFrame (new (13, 4)));
-        screen = view.ViewportToScreen (new (7, 0, 0, 0));
+        screen = view.ViewportToScreen (new Point (7, 0));
         Assert.Equal (14, screen.X);
         Assert.Equal (5, screen.Y);
         Assert.Equal (view, View.FindDeepestView (top, new (14, 5)));
         Assert.Equal (new Point (7, -2), view.ScreenToFrame (new (14, 3)));
-        screen = view.ViewportToScreen (new (8, -1, 0, 0));
+        screen = view.ViewportToScreen (new Point (8, -1));
         Assert.Equal (15, screen.X);
         Assert.Equal (4, screen.Y);
         Assert.Equal (top, View.FindDeepestView (top, new (15, 4)));
         Assert.Equal (new Point (16, -2), view.ScreenToFrame (new (23, 3)));
-        screen = view.ViewportToScreen (new (17, -1, 0, 0));
+        screen = view.ViewportToScreen (new Point (17, -1));
         Assert.Equal (24, screen.X);
         Assert.Equal (4, screen.Y);
         Assert.Null (View.FindDeepestView (top, new (24, 4)));