mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-30 17:57:57 +01:00
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:
@@ -938,6 +938,11 @@ public partial class View
|
||||
_height = Frame.Height;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty (Title))
|
||||
{
|
||||
SetTitleTextFormatterSize ();
|
||||
}
|
||||
|
||||
SetNeedsLayout ();
|
||||
SetNeedsDisplay ();
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user