소스 검색

Reverted to v2_develop DimAuto

Tig 1 년 전
부모
커밋
c58a7a59fb
5개의 변경된 파일39개의 추가작업 그리고 108개의 파일을 삭제
  1. 0 3
      Terminal.Gui/Input/KeyBindingScope.cs
  2. 1 1
      Terminal.Gui/Input/KeyBindings.cs
  3. 35 101
      Terminal.Gui/View/Layout/DimAuto.cs
  4. 1 1
      Terminal.Gui/View/Layout/DimAutoStyle.cs
  5. 2 2
      UICatalog/UICatalog.cs

+ 0 - 3
Terminal.Gui/Input/KeyBindingScope.cs

@@ -41,9 +41,6 @@ public enum KeyBindingScope
     ///         Application-scoped key bindings are only invoked if the key down event was not handled by the focused view or
     ///         any of its subviews, and if the key was not bound to a <see cref="View.HotKey"/>.
     ///     </para>
-    ///     <para>
-    ///         <see cref="Shortcut"/> makes it easy to add Application-scoped key bindings with a visual indicator. See also <see cref="Bar"/>.
-    ///     </para>
     /// </remarks>
     Application = 4
 }

+ 1 - 1
Terminal.Gui/Input/KeyBindings.cs

@@ -17,7 +17,7 @@ public class KeyBindings
     /// <summary>
     ///     The view that the <see cref="KeyBindings"/> are bound to.
     /// </summary>
-    public View BoundView { get; }
+    public View? BoundView { get; }
 
     // TODO: Add a dictionary comparer that ignores Scope
     // TODO: This should not be public!

+ 35 - 101
Terminal.Gui/View/Layout/DimAuto.cs

@@ -1,6 +1,4 @@
 #nullable enable
-using System.Drawing;
-
 namespace Terminal.Gui;
 
 /// <summary>
@@ -22,7 +20,6 @@ public class DimAuto () : Dim
     /// <summary>
     ///     Gets the maximum dimension the View's ContentSize will be fit to. NOT CURRENTLY SUPPORTED.
     /// </summary>
-
     // ReSharper disable once ConvertToAutoProperty
     public required Dim? MaximumContentDim
     {
@@ -35,7 +32,6 @@ public class DimAuto () : Dim
     /// <summary>
     ///     Gets the minimum dimension the View's ContentSize will be constrained to.
     /// </summary>
-
     // ReSharper disable once ConvertToAutoProperty
     public required Dim? MinimumContentDim
     {
@@ -48,7 +44,6 @@ public class DimAuto () : Dim
     /// <summary>
     ///     Gets the style of the DimAuto.
     /// </summary>
-
     // ReSharper disable once ConvertToAutoProperty
     public required DimAutoStyle Style
     {
@@ -86,11 +81,10 @@ public class DimAuto () : Dim
                 // TODO: This whole body of code is a WIP (for https://github.com/gui-cs/Terminal.Gui/pull/3451).
                 subviewsSize = 0;
 
-                List<View> includedSubviews = us.Subviews.ToList (); //.Where (v => !v.ExcludeFromLayout).ToList ();
+                List<View> includedSubviews = us.Subviews.ToList();//.Where (v => !v.ExcludeFromLayout).ToList ();
                 List<View> subviews;
 
                 #region Not Anchored and Are Not Dependent
-
                 // Start with subviews that are not anchored to the end, aligned, or dependent on content size
                 // [x] PosAnchorEnd
                 // [x] PosAlign
@@ -104,25 +98,17 @@ public class DimAuto () : Dim
                 // [ ] DimView
                 if (dimension == Dimension.Width)
                 {
-                    subviews = includedSubviews.Where (
-                                                       v => v.X is not PosAnchorEnd
-                                                            && v.X is not PosAlign
-
-                                                            // && v.X is not PosCenter
-                                                            && v.Width is not DimAuto
-                                                            && v.Width is not DimFill)
-                                               .ToList ();
+                    subviews = includedSubviews.Where (v => v.X is not PosAnchorEnd
+                                                           && v.X is not PosAlign
+                                                           // && v.X is not PosCenter
+                                                           && v.Width is not DimFill).ToList ();
                 }
                 else
                 {
-                    subviews = includedSubviews.Where (
-                                                       v => v.Y is not PosAnchorEnd
-                                                            && v.Y is not PosAlign
-
-                                                            // && v.Y is not PosCenter
-                                                            && v.Height is not DimAuto
-                                                            && v.Height is not DimFill)
-                                               .ToList ();
+                    subviews = includedSubviews.Where (v => v.Y is not PosAnchorEnd
+                                                           && v.Y is not PosAlign
+                                                           // && v.Y is not PosCenter
+                                                           && v.Height is not DimFill).ToList ();
                 }
 
                 for (var i = 0; i < subviews.Count; i++)
@@ -137,11 +123,9 @@ public class DimAuto () : Dim
                         subviewsSize = size;
                     }
                 }
-
                 #endregion Not Anchored and Are Not Dependent
 
                 #region Anchored
-
                 // Now, handle subviews that are anchored to the end
                 // [x] PosAnchorEnd
                 if (dimension == Dimension.Width)
@@ -154,7 +138,6 @@ public class DimAuto () : Dim
                 }
 
                 int maxAnchorEnd = 0;
-
                 for (var i = 0; i < subviews.Count; i++)
                 {
                     View v = subviews [i];
@@ -162,84 +145,47 @@ public class DimAuto () : Dim
                 }
 
                 subviewsSize += maxAnchorEnd;
-
                 #endregion Anchored
 
-
-                #region Auto
-
-                if (dimension == Dimension.Width)
-                {
-                    subviews = includedSubviews.Where (v => v.Width is DimAuto).ToList ();
-                }
-                else
-                {
-                    subviews = includedSubviews.Where (v => v.Height is DimAuto).ToList ();
-                }
-
-                int maxAuto = 0;
-
-                for (var i = 0; i < subviews.Count; i++)
-                {
-                    View v = subviews [i];
-
-                    maxAuto = CalculateMinDimension (us, dimension);
-
-                    if (maxAuto > subviewsSize)
-                    {
-                        // BUGBUG: Should we break here? Or choose min/max?
-                        subviewsSize = maxAuto;
-                    }
-                }
-
-                //                subviewsSize += maxAuto;
-
-                #endregion Auto
-
-                #region Center
-
-                // Now, handle subviews that are Centered
-                if (dimension == Dimension.Width)
-                {
-                    subviews = us.Subviews.Where (v => v.X is PosCenter).ToList ();
-                }
-                else
-                {
-                    subviews = us.Subviews.Where (v => v.Y is PosCenter).ToList ();
-                }
-
-                int maxCenter = 0;
-
-                for (var i = 0; i < subviews.Count; i++)
-                {
-                    View v = subviews [i];
-                    maxCenter = dimension == Dimension.Width ? v.Frame.Width : v.Frame.Height;
-
-                    if (maxCenter > subviewsSize)
-                    {
-                        // BUGBUG: Should we break here? Or choose min/max?
-                        subviewsSize = maxCenter;
-                    }
-                }
-
-                #endregion Center
+                //#region Center
+                //// Now, handle subviews that are Centered
+                //if (dimension == Dimension.Width)
+                //{
+                //    subviews = us.Subviews.Where (v => v.X is PosCenter).ToList ();
+                //}
+                //else
+                //{
+                //    subviews = us.Subviews.Where (v => v.Y is PosCenter).ToList ();
+                //}
+
+                //int maxCenter = 0;
+                //for (var i = 0; i < subviews.Count; i++)
+                //{
+                //    View v = subviews [i];
+                //    maxCenter = dimension == Dimension.Width ? v.Frame.Width : v.Frame.Height;
+                //}
+
+                //subviewsSize += maxCenter;
+                //#endregion Center
 
                 #region Are Dependent
-
                 // Now, go back to those that are dependent on content size
                 // [x] DimFill
                 // [ ] DimPercent
                 if (dimension == Dimension.Width)
                 {
-                    subviews = includedSubviews.Where (v => v.Width is DimFill).ToList ();
+                    subviews = includedSubviews.Where (v => v.Width is DimFill
+                                                      // || v.X is PosCenter
+                                                     ).ToList ();
                 }
                 else
                 {
-                    subviews = includedSubviews.Where (v => v.Height is DimFill).ToList ();
+                    subviews = includedSubviews.Where (v => v.Height is DimFill
+                                                      //|| v.Y is PosCenter
+                                                     ).ToList ();
                 }
 
                 int maxFill = 0;
-
                 for (var i = 0; i < subviews.Count; i++)
                 {
                     View v = subviews [i];
@@ -252,12 +198,10 @@ public class DimAuto () : Dim
                     {
                         v.SetRelativeLayout (new Size (0, autoMax - subviewsSize));
                     }
-
                     maxFill = dimension == Dimension.Width ? v.Frame.Width : v.Frame.Height;
                 }
 
                 subviewsSize += maxFill;
-
                 #endregion Are Dependent
             }
         }
@@ -283,16 +227,6 @@ public class DimAuto () : Dim
         return int.Min (max, autoMax);
     }
 
-    internal int CalculateMinDimension (View us, Dimension dimension)
-    {
-
-
-        int min = dimension == Dimension.Width ? us.Frame.Width : us.Frame.Height;
-
-        return min;
-    }
-
-
     internal override bool ReferencesOtherViews ()
     {
         // BUGBUG: This is not correct. _contentSize may be null.

+ 1 - 1
Terminal.Gui/View/Layout/DimAutoStyle.cs

@@ -12,7 +12,7 @@ public enum DimAutoStyle
     /// <summary>
     ///     The dimensions will be computed based on the View's <see cref="View.GetContentSize ()"/> and/or <see cref="View.Subviews"/>.
     ///     <para>
-    ///         If <see cref="View.GetContentSize ()TracksViewport"/> is <see langword="true"/>, <see cref="View.GetContentSize ()"/> will be used to determine the dimension.
+    ///         If <see cref="View.ContentSizeTracksViewport"/> is <see langword="true"/>, <see cref="View.GetContentSize ()"/> will be used to determine the dimension.
     ///     </para>
     ///     <para>
     ///         Otherwise, the Subview in <see cref="View.Subviews"/> with the largest corresponding position plus dimension

+ 2 - 2
UICatalog/UICatalog.cs

@@ -128,7 +128,7 @@ internal class UICatalogApp
                                 {
                                     var options = new Options
                                     {
-                                        Driver = context.ParseResult.GetValueForOption (driverOption),
+                                        Driver = context.ParseResult.GetValueForOption (driverOption) ?? string.Empty,
                                         Scenario = context.ParseResult.GetValueForArgument (scenarioArgument)
                                         /* etc. */
                                     };
@@ -660,7 +660,7 @@ internal class UICatalogApp
 
             List<MenuItem> schemeMenuItems = new ();
 
-            foreach (KeyValuePair<string, ColorScheme> sc in Colors.ColorSchemes)
+            foreach (KeyValuePair<string, ColorScheme?> sc in Colors.ColorSchemes)
             {
                 var item = new MenuItem { Title = $"_{sc.Key}", Data = sc.Key };
                 item.CheckType |= MenuItemCheckStyle.Radio;