mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
Reverted to v2_develop DimAuto
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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!
|
||||
|
||||
@@ -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 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 ();
|
||||
//}
|
||||
|
||||
#region Auto
|
||||
//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 (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
|
||||
//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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user