Merge pull request #33 from BDisp/tig_v2_2432-DimAuto

Fixes title size not being updating on view size change.
This commit is contained in:
Tig
2024-05-01 13:55:29 -06:00
committed by GitHub
3 changed files with 45 additions and 8 deletions

View File

@@ -938,6 +938,11 @@ public partial class View
_height = Frame.Height;
}
if (!string.IsNullOrEmpty (Title))
{
SetTitleTextFormatterSize ();
}
SetNeedsLayout ();
SetNeedsDisplay ();
}

View File

@@ -456,12 +456,7 @@ public partial class View : Responder, ISupportInitializeNotification
_title = value;
TitleTextFormatter.Text = _title;
TitleTextFormatter.Size = new (
TextFormatter.GetWidestLineLength (TitleTextFormatter.Text)
- (TitleTextFormatter.Text?.Contains ((char)HotKeySpecifier.Value) == true
? Math.Max (HotKeySpecifier.GetColumns (), 0)
: 0),
1);
SetTitleTextFormatterSize ();
SetHotKeyFromTitle ();
SetNeedsDisplay ();
#if DEBUG
@@ -475,6 +470,16 @@ public partial class View : Responder, ISupportInitializeNotification
}
}
private void SetTitleTextFormatterSize ()
{
TitleTextFormatter.Size = new (
TextFormatter.GetWidestLineLength (TitleTextFormatter.Text)
- (TitleTextFormatter.Text?.Contains ((char)HotKeySpecifier.Value) == true
? Math.Max (HotKeySpecifier.GetColumns (), 0)
: 0),
1);
}
/// <summary>Called when the <see cref="View.Title"/> has been changed. Invokes the <see cref="TitleChanged"/> event.</summary>
/// <param name="oldTitle">The <see cref="View.Title"/> that is/has been replaced.</param>
/// <param name="newTitle">The new <see cref="View.Title"/> to be replaced.</param>

View File

@@ -9,8 +9,8 @@ namespace Terminal.Gui.ViewTests;
public class TitleTests
{
private readonly ITestOutputHelper output;
public TitleTests (ITestOutputHelper output) { this.output = output; }
private readonly ITestOutputHelper _output;
public TitleTests (ITestOutputHelper output) { this._output = output; }
[Fact]
public void Set_Title_Fires_TitleChanged ()
@@ -76,4 +76,31 @@ public class TitleTests
Assert.Equal (Key.H, view.HotKey);
}
[SetupFakeDriver]
[Fact]
public void Change_View_Size_Update_Title_Size ()
{
var view = new View { Title = "_Hello World", Width = Dim.Auto (), Height = Dim.Auto (), BorderStyle = LineStyle.Single};
var top = new Toplevel ();
top.Add (view);
Application.Begin (top);
Assert.Equal (string.Empty, view.Text);
Assert.Equal (new (2, 2), view.Frame.Size);
TestHelpers.AssertDriverContentsWithFrameAre (@"
┌┐
└┘", _output);
var text = "This text will increment the view size and display the title.";
view.Text = text;
top.Draw ();
Assert.Equal (text, view.Text);
// SetupFakeDriver only create a screen with 25 cols and 25 rows
Assert.Equal (new (25, 3), view.Frame.Size);
TestHelpers.AssertDriverContentsWithFrameAre (@"
┌┤Hello World├──────────┐
│This text will incremen│
└───────────────────────┘", _output);
}
}