Browse Source

Subviews of adornments work!

Tig 1 year ago
parent
commit
1da6c39407

+ 2 - 2
Terminal.Gui/Drawing/Thickness.cs

@@ -121,9 +121,9 @@ public class Thickness : IEquatable<Thickness>
     /// <summary>Draws the <see cref="Thickness"/> rectangle with an optional diagnostics label.</summary>
     /// <summary>Draws the <see cref="Thickness"/> rectangle with an optional diagnostics label.</summary>
     /// <remarks>
     /// <remarks>
     ///     If <see cref="ViewDiagnosticFlags"/> is set to
     ///     If <see cref="ViewDiagnosticFlags"/> is set to
-    ///     <see cref="ViewViewDiagnosticFlags.Paddingthen 'T', 'L', 'R', and 'B' glyphs will be used instead of
+    ///     <see cref="ViewDiagnosticFlags.Padding"/> then 'T', 'L', 'R', and 'B' glyphs will be used instead of
     ///     space. If <see cref="ViewDiagnosticFlags"/> is set to
     ///     space. If <see cref="ViewDiagnosticFlags"/> is set to
-    ///     <see cref="ViewViewDiagnosticFlags.Rulerthen a ruler will be drawn on the outer edge of the
+    ///     <see cref="ViewDiagnosticFlags.Ruler"/> then a ruler will be drawn on the outer edge of the
     ///     Thickness.
     ///     Thickness.
     /// </remarks>
     /// </remarks>
     /// <param name="rect">The location and size of the rectangle that bounds the thickness rectangle, in screen coordinates.</param>
     /// <param name="rect">The location and size of the rectangle that bounds the thickness rectangle, in screen coordinates.</param>

+ 1 - 21
Terminal.Gui/View/Adornment/Adornment.cs

@@ -115,27 +115,7 @@ public class Adornment : View
     {
     {
             return Parent.ScreenToFrame (x - Frame.X, y - Frame.Y);
             return Parent.ScreenToFrame (x - Frame.X, y - Frame.Y);
     }
     }
-
-    ///// <inheritdoc/>
-    //public override void SetNeedsDisplay (Rectangle region)
-    //{
-    //    SetSubViewNeedsDisplay ();
-    //    foreach (View subView in Subviews)
-    //    {
-    //        subView.SetNeedsDisplay ();
-    //    }
-    //}
-
-    /// <inheritdoc/>
-    //protected override void ClearNeedsDisplay ()
-    //{
-    //    base.ClearNeedsDisplay ();
-    //    foreach (View subView in Subviews)
-    //    {
-    //        subView.NeedsDisplay = false;
-    //    }
-    //}
-
+    
     /// <summary>Does nothing for Adornment</summary>
     /// <summary>Does nothing for Adornment</summary>
     /// <returns></returns>
     /// <returns></returns>
     public override bool OnDrawAdornments () { return false; }
     public override bool OnDrawAdornments () { return false; }

+ 10 - 6
Terminal.Gui/View/Adornment/Border.cs

@@ -70,15 +70,19 @@ public class Border : Adornment
         {
         {
             CloseButton = new Button ()
             CloseButton = new Button ()
             {
             {
-                Text = "X", // So it's not visible to not break unit tests
-                Y = 0,
+                Text = "X",
                 CanFocus = true,
                 CanFocus = true,
-                NoDecorations = false,
                 Visible = false,
                 Visible = false,
             };
             };
-            //CloseButton.BorderStyle = LineStyle.Single;
-            //CloseButton.Border.Thickness = new (1, 0, 1, 0);
-            CloseButton.X = Pos.AnchorEnd () - (Pos.Right (CloseButton) - Pos.Left (CloseButton)) + Thickness.Left + 1; // +1 for the border
+
+            CloseButton.LayoutStarted += (sender, args) =>
+                                         {
+                                             CloseButton.X = Pos.AnchorEnd (Thickness.Right / 2 + 1) - 
+                                                             (Pos.Right (CloseButton) - 
+                                                              Pos.Left (CloseButton))  ;
+
+                                             CloseButton.Y = 0;;//Thickness.Top / 2;
+                                         };
             Add (CloseButton);
             Add (CloseButton);
             CloseButton.Accept += (s, e) => {
             CloseButton.Accept += (s, e) => {
                                       e.Cancel = Parent.InvokeCommand (Command.QuitToplevel) == true;
                                       e.Cancel = Parent.InvokeCommand (Command.QuitToplevel) == true;

File diff suppressed because it is too large
+ 634 - 502
Terminal.Gui/View/Layout/ViewLayout.cs


+ 187 - 195
Terminal.Gui/View/View.cs

@@ -114,20 +114,179 @@ namespace Terminal.Gui;
 
 
 public partial class View : Responder, ISupportInitializeNotification
 public partial class View : Responder, ISupportInitializeNotification
 {
 {
-    private bool _oldEnabled;
+    #region Constructors and Initialization
 
 
-    /// <summary>Gets or sets whether a view is cleared if the <see cref="Visible"/> property is <see langword="false"/>.</summary>
-    public bool ClearOnVisibleFalse { get; set; } = true;
+    /// <summary>
+    ///     Points to the current driver in use by the view, it is a convenience property for simplifying the development
+    ///     of new views.
+    /// </summary>
+    public static ConsoleDriver Driver => Application.Driver;
+
+    /// <summary>Initializes a new instance of <see cref="View"/>.</summary>
+    /// <remarks>
+    ///     <para>
+    ///         Use <see cref="X"/>, <see cref="Y"/>, <see cref="Width"/>, and <see cref="Height"/> properties to dynamically
+    ///         control the size and location of the view. The <see cref="View"/> will be created using
+    ///         <see cref="LayoutStyle.Absolute"/> coordinates. The initial size ( <see cref="View.Frame"/>) will be adjusted
+    ///         to fit the contents of <see cref="Text"/>, including newlines ('\n') for multiple lines.
+    ///     </para>
+    ///     <para>If <see cref="Height"/> is greater than one, word wrapping is provided.</para>
+    ///     <para>
+    ///         This constructor initialize a View with a <see cref="LayoutStyle"/> of <see cref="LayoutStyle.Absolute"/>.
+    ///         Use <see cref="X"/>, <see cref="Y"/>, <see cref="Width"/>, and <see cref="Height"/> properties to dynamically
+    ///         control the size and location of the view, changing it to <see cref="LayoutStyle.Computed"/>.
+    ///     </para>
+    /// </remarks>
+    public View ()
+    {
+        HotKeySpecifier = (Rune)'_';
+        TitleTextFormatter.HotKeyChanged += TitleTextFormatter_HotKeyChanged;
+
+        TextDirection = TextDirection.LeftRight_TopBottom;
+        Text = string.Empty;
+
+        CanFocus = false;
+        TabIndex = -1;
+        TabStop = false;
+
+        AddCommands ();
+
+        CreateAdornments ();
+    }
+
+    /// <summary>
+    ///     Event called only once when the <see cref="View"/> is being initialized for the first time. Allows
+    ///     configurations and assignments to be performed before the <see cref="View"/> being shown. This derived from
+    ///     <see cref="ISupportInitializeNotification"/> to allow notify all the views that are being initialized.
+    /// </summary>
+    public event EventHandler Initialized;
+
+    /// <summary>
+    ///     Get or sets if  the <see cref="View"/> has been initialized (via <see cref="ISupportInitialize.BeginInit"/>
+    ///     and <see cref="ISupportInitialize.EndInit"/>).
+    /// </summary>
+    /// <para>
+    ///     If first-run-only initialization is preferred, overrides to
+    ///     <see cref="ISupportInitializeNotification.IsInitialized"/> can be implemented, in which case the
+    ///     <see cref="ISupportInitialize"/> methods will only be called if
+    ///     <see cref="ISupportInitializeNotification.IsInitialized"/> is <see langword="false"/>. This allows proper
+    ///     <see cref="View"/> inheritance hierarchies to override base class layout code optimally by doing so only on first
+    ///     run, instead of on every run.
+    /// </para>
+    public virtual bool IsInitialized { get; set; }
+
+    /// <summary>Signals the View that initialization is starting. See <see cref="ISupportInitialize"/>.</summary>
+    /// <remarks>
+    ///     <para>
+    ///         Views can opt-in to more sophisticated initialization by implementing overrides to
+    ///         <see cref="ISupportInitialize.BeginInit"/> and <see cref="ISupportInitialize.EndInit"/> which will be called
+    ///         when the <see cref="SuperView"/> is initialized.
+    ///     </para>
+    ///     <para>
+    ///         If first-run-only initialization is preferred, overrides to <see cref="ISupportInitializeNotification"/> can
+    ///         be implemented too, in which case the <see cref="ISupportInitialize"/> methods will only be called if
+    ///         <see cref="ISupportInitializeNotification.IsInitialized"/> is <see langword="false"/>. This allows proper
+    ///         <see cref="View"/> inheritance hierarchies to override base class layout code optimally by doing so only on
+    ///         first run, instead of on every run.
+    ///     </para>
+    /// </remarks>
+    public virtual void BeginInit ()
+    {
+        if (IsInitialized)
+        {
+            throw new InvalidOperationException ("The view is already initialized.");
+        }
+
+        _oldCanFocus = CanFocus;
+        _oldTabIndex = _tabIndex;
+
+        BeginInitAdornments ();
+
+        if (_subviews?.Count > 0)
+        {
+            foreach (View view in _subviews)
+            {
+                if (!view.IsInitialized)
+                {
+                    view.BeginInit ();
+                }
+            }
+        }
+    }
+
+    // TODO: Implement logic that allows EndInit to throw if BeginInit has not been called
+    // TODO: See EndInit_Called_Without_BeginInit_Throws test.
+
+    /// <summary>Signals the View that initialization is ending. See <see cref="ISupportInitialize"/>.</summary>
+    /// <remarks>
+    ///     <para>Initializes all Subviews and Invokes the <see cref="Initialized"/> event.</para>
+    /// </remarks>
+    public virtual void EndInit ()
+    {
+        if (IsInitialized)
+        {
+            throw new InvalidOperationException ("The view is already initialized.");
+        }
+
+        IsInitialized = true;
+
+        EndInitAdornments ();
+
+        // TODO: Move these into ViewText.cs as EndInit_Text() to consolodate.
+        // TODO: Verify UpdateTextDirection really needs to be called here.
+        // These calls were moved from BeginInit as they access Bounds which is indeterminate until EndInit is called.
+        UpdateTextDirection (TextDirection);
+        UpdateTextFormatterText ();
+        OnResizeNeeded ();
+
+        if (_subviews is { })
+        {
+            foreach (View view in _subviews)
+            {
+                if (!view.IsInitialized)
+                {
+                    view.EndInit ();
+                }
+            }
+        }
+
+        Initialized?.Invoke (this, EventArgs.Empty);
+    }
+
+    #endregion Constructors and Initialization
+
+    /// <summary>Gets or sets an identifier for the view;</summary>
+    /// <value>The identifier.</value>
+    /// <remarks>The id should be unique across all Views that share a SuperView.</remarks>
+    public string Id { get; set; } = "";
 
 
     /// <summary>Gets or sets arbitrary data for the view.</summary>
     /// <summary>Gets or sets arbitrary data for the view.</summary>
     /// <remarks>This property is not used internally.</remarks>
     /// <remarks>This property is not used internally.</remarks>
     public object Data { get; set; }
     public object Data { get; set; }
 
 
     /// <summary>
     /// <summary>
-    ///     Points to the current driver in use by the view, it is a convenience property for simplifying the development
-    ///     of new views.
+    ///     Cancelable event fired when the <see cref="Command.Accept"/> command is invoked. Set
+    ///     <see cref="CancelEventArgs.Cancel"/>
+    ///     to cancel the event.
     /// </summary>
     /// </summary>
-    public static ConsoleDriver Driver => Application.Driver;
+    public event EventHandler<CancelEventArgs> Accept;
+
+    /// <summary>
+    ///     Called when the <see cref="Command.Accept"/> command is invoked. Fires the <see cref="Accept"/>
+    ///     event.
+    /// </summary>
+    /// <returns>If <see langword="true"/> the event was canceled.</returns>
+    protected bool? OnAccept ()
+    {
+        var args = new CancelEventArgs ();
+        Accept?.Invoke (this, args);
+
+        return args.Cancel;
+    }
+
+    #region Visibility
+
+    private bool _oldEnabled;
 
 
     /// <inheritdoc/>
     /// <inheritdoc/>
     public override bool Enabled
     public override bool Enabled
@@ -177,13 +336,13 @@ public partial class View : Responder, ISupportInitializeNotification
         }
         }
     }
     }
 
 
-    /// <summary>Gets or sets an identifier for the view;</summary>
-    /// <value>The identifier.</value>
-    /// <remarks>The id should be unique across all Views that share a SuperView.</remarks>
-    public string Id { get; set; } = "";
+    /// <summary>Event fired when the <see cref="Enabled"/> value is being changed.</summary>
+    public event EventHandler EnabledChanged;
+
+    /// <inheritdoc/>
+    public override void OnEnabledChanged () { EnabledChanged?.Invoke (this, EventArgs.Empty); }
 
 
     /// <inheritdoc/>
     /// <inheritdoc/>
-    /// >
     public override bool Visible
     public override bool Visible
     {
     {
         get => base.Visible;
         get => base.Visible;
@@ -212,70 +371,15 @@ public partial class View : Responder, ISupportInitializeNotification
         }
         }
     }
     }
 
 
-    /// <summary>
-    ///     Cancelable event fired when the <see cref="Command.Accept"/> command is invoked. Set
-    ///     <see cref="CancelEventArgs.Cancel"/>
-    ///     to cancel the event.
-    /// </summary>
-    public event EventHandler<CancelEventArgs> Accept;
-
-    /// <summary>Event fired when the <see cref="Enabled"/> value is being changed.</summary>
-    public event EventHandler EnabledChanged;
-
-    /// <inheritdoc/>
-    public override void OnEnabledChanged () { EnabledChanged?.Invoke (this, EventArgs.Empty); }
-
     /// <inheritdoc/>
     /// <inheritdoc/>
     public override void OnVisibleChanged () { VisibleChanged?.Invoke (this, EventArgs.Empty); }
     public override void OnVisibleChanged () { VisibleChanged?.Invoke (this, EventArgs.Empty); }
 
 
-    /// <summary>Pretty prints the View</summary>
-    /// <returns></returns>
-    public override string ToString () { return $"{GetType ().Name}({Id}){Frame}"; }
+    /// <summary>Gets or sets whether a view is cleared if the <see cref="Visible"/> property is <see langword="false"/>.</summary>
+    public bool ClearOnVisibleFalse { get; set; } = true;
 
 
     /// <summary>Event fired when the <see cref="Visible"/> value is being changed.</summary>
     /// <summary>Event fired when the <see cref="Visible"/> value is being changed.</summary>
     public event EventHandler VisibleChanged;
     public event EventHandler VisibleChanged;
 
 
-    /// <inheritdoc/>
-    protected override void Dispose (bool disposing)
-    {
-        LineCanvas.Dispose ();
-
-        Margin?.Dispose ();
-        Margin = null;
-
-        if (Border?.CloseButton is { })
-        {
-            Border?.CloseButton.Dispose ();
-        }
-        Border?.Dispose ();
-        Border = null;
-        Padding?.Dispose ();
-        Padding = null;
-
-        for (int i = InternalSubviews.Count - 1; i >= 0; i--)
-        {
-            View subview = InternalSubviews [i];
-            Remove (subview);
-            subview.Dispose ();
-        }
-
-        base.Dispose (disposing);
-        Debug.Assert (InternalSubviews.Count == 0);
-    }
-
-    /// <summary>
-    ///     Called when the <see cref="Command.Accept"/> command is invoked. Fires the <see cref="Accept"/>
-    ///     event.
-    /// </summary>
-    /// <returns>If <see langword="true"/> the event was canceled.</returns>
-    protected bool? OnAccept ()
-    {
-        var args = new CancelEventArgs ();
-        Accept?.Invoke (this, args);
-
-        return args.Cancel;
-    }
-
     private bool CanBeVisible (View view)
     private bool CanBeVisible (View view)
     {
     {
         if (!view.Visible)
         if (!view.Visible)
@@ -294,6 +398,8 @@ public partial class View : Responder, ISupportInitializeNotification
         return true;
         return true;
     }
     }
 
 
+    #endregion Visibility
+
     #region Title
     #region Title
 
 
     private string _title = string.Empty;
     private string _title = string.Empty;
@@ -390,139 +496,25 @@ public partial class View : Responder, ISupportInitializeNotification
 
 
     #endregion
     #endregion
 
 
-    #region Constructors and Initialization
-
-    /// <summary>Initializes a new instance of <see cref="View"/>.</summary>
-    /// <remarks>
-    ///     <para>
-    ///         Use <see cref="X"/>, <see cref="Y"/>, <see cref="Width"/>, and <see cref="Height"/> properties to dynamically
-    ///         control the size and location of the view. The <see cref="View"/> will be created using
-    ///         <see cref="LayoutStyle.Absolute"/> coordinates. The initial size ( <see cref="View.Frame"/>) will be adjusted
-    ///         to fit the contents of <see cref="Text"/>, including newlines ('\n') for multiple lines.
-    ///     </para>
-    ///     <para>If <see cref="Height"/> is greater than one, word wrapping is provided.</para>
-    ///     <para>
-    ///         This constructor initialize a View with a <see cref="LayoutStyle"/> of <see cref="LayoutStyle.Absolute"/>.
-    ///         Use <see cref="X"/>, <see cref="Y"/>, <see cref="Width"/>, and <see cref="Height"/> properties to dynamically
-    ///         control the size and location of the view, changing it to <see cref="LayoutStyle.Computed"/>.
-    ///     </para>
-    /// </remarks>
-    public View ()
-    {
-        HotKeySpecifier = (Rune)'_';
-        TitleTextFormatter.HotKeyChanged += TitleTextFormatter_HotKeyChanged;
-
-        TextDirection = TextDirection.LeftRight_TopBottom;
-        Text = string.Empty;
-
-        CanFocus = false;
-        TabIndex = -1;
-        TabStop = false;
-
-        AddCommands ();
-
-        Margin = CreateAdornment (typeof (Margin)) as Margin;
-        Border = CreateAdornment (typeof (Border)) as Border;
-        Padding = CreateAdornment (typeof (Padding)) as Padding;
-    }
-
-    /// <summary>
-    ///     Get or sets if  the <see cref="View"/> has been initialized (via <see cref="ISupportInitialize.BeginInit"/>
-    ///     and <see cref="ISupportInitialize.EndInit"/>).
-    /// </summary>
-    /// <para>
-    ///     If first-run-only initialization is preferred, overrides to
-    ///     <see cref="ISupportInitializeNotification.IsInitialized"/> can be implemented, in which case the
-    ///     <see cref="ISupportInitialize"/> methods will only be called if
-    ///     <see cref="ISupportInitializeNotification.IsInitialized"/> is <see langword="false"/>. This allows proper
-    ///     <see cref="View"/> inheritance hierarchies to override base class layout code optimally by doing so only on first
-    ///     run, instead of on every run.
-    /// </para>
-    public virtual bool IsInitialized { get; set; }
-
-    /// <summary>Signals the View that initialization is starting. See <see cref="ISupportInitialize"/>.</summary>
-    /// <remarks>
-    ///     <para>
-    ///         Views can opt-in to more sophisticated initialization by implementing overrides to
-    ///         <see cref="ISupportInitialize.BeginInit"/> and <see cref="ISupportInitialize.EndInit"/> which will be called
-    ///         when the <see cref="SuperView"/> is initialized.
-    ///     </para>
-    ///     <para>
-    ///         If first-run-only initialization is preferred, overrides to <see cref="ISupportInitializeNotification"/> can
-    ///         be implemented too, in which case the <see cref="ISupportInitialize"/> methods will only be called if
-    ///         <see cref="ISupportInitializeNotification.IsInitialized"/> is <see langword="false"/>. This allows proper
-    ///         <see cref="View"/> inheritance hierarchies to override base class layout code optimally by doing so only on
-    ///         first run, instead of on every run.
-    ///     </para>
-    /// </remarks>
-    public virtual void BeginInit ()
-    {
-        if (IsInitialized)
-        {
-            throw new InvalidOperationException ("The view is already initialized.");
-        }
-
-        _oldCanFocus = CanFocus;
-        _oldTabIndex = _tabIndex;
-        Margin?.BeginInit ();
-
-        Border?.BeginInit ();
-
-
-        Padding?.BeginInit ();
-
-        if (_subviews?.Count > 0)
-        {
-            foreach (View view in _subviews)
-            {
-                if (!view.IsInitialized)
-                {
-                    view.BeginInit ();
-                }
-            }
-        }
-    }
-
-    // TODO: Implement logic that allows EndInit to throw if BeginInit has not been called
-    // TODO: See EndInit_Called_Without_BeginInit_Throws test.
+    /// <summary>Pretty prints the View</summary>
+    /// <returns></returns>
+    public override string ToString () { return $"{GetType ().Name}({Id}){Frame}"; }
 
 
-    /// <summary>Signals the View that initialization is ending. See <see cref="ISupportInitialize"/>.</summary>
-    /// <remarks>
-    ///     <para>Initializes all Subviews and Invokes the <see cref="Initialized"/> event.</para>
-    /// </remarks>
-    public virtual void EndInit ()
+    /// <inheritdoc/>
+    protected override void Dispose (bool disposing)
     {
     {
-        if (IsInitialized)
-        {
-            throw new InvalidOperationException ("The view is already initialized.");
-        }
-
-        IsInitialized = true;
-        Margin?.EndInit ();
-        Border?.EndInit ();
-        Padding?.EndInit ();
+        LineCanvas.Dispose ();
 
 
-        // TODO: Move these into ViewText.cs as EndInit_Text() to consolodate.
-        // TODO: Verify UpdateTextDirection really needs to be called here.
-        // These calls were moved from BeginInit as they access Bounds which is indeterminate until EndInit is called.
-        UpdateTextDirection (TextDirection);
-        UpdateTextFormatterText ();
-        OnResizeNeeded ();
+        DisposeAdornments ();
 
 
-        if (_subviews is { })
+        for (int i = InternalSubviews.Count - 1; i >= 0; i--)
         {
         {
-            foreach (View view in _subviews)
-            {
-                if (!view.IsInitialized)
-                {
-                    view.EndInit ();
-                }
-            }
+            View subview = InternalSubviews [i];
+            Remove (subview);
+            subview.Dispose ();
         }
         }
 
 
-        Initialized?.Invoke (this, EventArgs.Empty);
+        base.Dispose (disposing);
+        Debug.Assert (InternalSubviews.Count == 0);
     }
     }
-
-    #endregion Constructors and Initialization
 }
 }
-

+ 5 - 0
Terminal.Gui/View/ViewDrawing.cs

@@ -376,6 +376,11 @@ public partial class View
                 }
                 }
             }
             }
 
 
+            if (Title == "_Text:")
+            {
+
+            }
+
             // This should NOT clear 
             // This should NOT clear 
             TextFormatter?.Draw (
             TextFormatter?.Draw (
                                  BoundsToScreen (contentArea),
                                  BoundsToScreen (contentArea),

File diff suppressed because it is too large
+ 3 - 0
Terminal.sln.DotSettings


+ 3 - 3
UICatalog/Scenarios/Adornments.cs

@@ -90,17 +90,17 @@ public class Adornments : Scenario
 
 
         view.Initialized += (s, e) =>
         view.Initialized += (s, e) =>
                             {
                             {
-                                var labelInPadding = new Label () { X = 1, Y = 0, Title = "_Text:" };
+                                var labelInPadding = new Label () {  X = 1, Y = 0, Title = "_Text:" };
                                 view.Padding.Add (labelInPadding);
                                 view.Padding.Add (labelInPadding);
 
 
                                 var textFieldInPadding = new TextField () { X = Pos.Right (labelInPadding) + 1, Y = Pos.Top (labelInPadding), Width = 15, Text = "some text" };
                                 var textFieldInPadding = new TextField () { X = Pos.Right (labelInPadding) + 1, Y = Pos.Top (labelInPadding), Width = 15, Text = "some text" };
                                 textFieldInPadding.Accept += (s, e) => MessageBox.Query (20, 7, "TextField", textFieldInPadding.Text, "Ok");
                                 textFieldInPadding.Accept += (s, e) => MessageBox.Query (20, 7, "TextField", textFieldInPadding.Text, "Ok");
                                 view.Padding.Add (textFieldInPadding);
                                 view.Padding.Add (textFieldInPadding);
 
 
-                                var btnButtonInPadding = new Button { X = Pos.Center (), Y = 1, Text = "_Button in Padding" };
+                                var btnButtonInPadding = new Button { X = Pos.Center (), Y = 0, Text = "_Button in Padding" };
                                 btnButtonInPadding.Accept += (s, e) => MessageBox.Query (20, 7, "Hi", "Button in Padding Pressed!", "Ok");
                                 btnButtonInPadding.Accept += (s, e) => MessageBox.Query (20, 7, "Hi", "Button in Padding Pressed!", "Ok");
                                 btnButtonInPadding.BorderStyle = LineStyle.Dashed;
                                 btnButtonInPadding.BorderStyle = LineStyle.Dashed;
-                                btnButtonInPadding.Border.Thickness = new (3,3,3,3);
+                                btnButtonInPadding.Border.Thickness = new (1,1,1,1);
                                 view.Padding.Add (btnButtonInPadding);
                                 view.Padding.Add (btnButtonInPadding);
                                 btnButtonInPadding.Border.CloseButton.Visible = true;
                                 btnButtonInPadding.Border.CloseButton.Visible = true;
 
 

+ 2 - 2
UICatalog/UICatalog.csproj

@@ -29,8 +29,8 @@
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.6" />
     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.6" />
-    <PackageReference Include="SixLabors.ImageSharp" Version="3.1.2" />
-    <PackageReference Include="CsvHelper" Version="31.0.0" />
+    <PackageReference Include="SixLabors.ImageSharp" Version="3.1.3" />
+    <PackageReference Include="CsvHelper" Version="31.0.2" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" />
     <PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
     <PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
   </ItemGroup>
   </ItemGroup>

+ 1 - 1
UnitTests/UnitTests.csproj

@@ -30,7 +30,7 @@
   </PropertyGroup>
   </PropertyGroup>
   <ItemGroup>
   <ItemGroup>
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
-    <PackageReference Include="ReportGenerator" Version="5.2.1" />
+    <PackageReference Include="ReportGenerator" Version="5.2.2" />
     <PackageReference Include="TestableIO.System.IO.Abstractions.TestingHelpers" Version="20.0.15" />
     <PackageReference Include="TestableIO.System.IO.Abstractions.TestingHelpers" Version="20.0.15" />
     <PackageReference Include="xunit" Version="2.7.0" />
     <PackageReference Include="xunit" Version="2.7.0" />
     <PackageReference Include="Xunit.Combinatorial" Version="1.6.24" />
     <PackageReference Include="Xunit.Combinatorial" Version="1.6.24" />

Some files were not shown because too many files changed in this diff