Merge pull request #1728 from BDisp/button-width-fix

Fixes GetMaxLengthforWidth on Button.
This commit is contained in:
Tig Kindel
2022-05-19 13:51:10 -07:00
committed by GitHub
3 changed files with 55 additions and 9 deletions

View File

@@ -137,7 +137,8 @@ namespace Terminal.Gui {
if (hotKey != hk) {
HotKey = hk;
}
Update ();
if (IsInitialized)
Update ();
}
}
@@ -149,7 +150,8 @@ namespace Terminal.Gui {
get => is_default;
set {
is_default = value;
Update ();
if (IsInitialized)
Update ();
}
}
@@ -186,7 +188,8 @@ namespace Terminal.Gui {
get => base.AutoSize;
set {
base.AutoSize = value;
Update ();
if (IsInitialized)
Update ();
}
}

View File

@@ -1,12 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit;
using Xunit.Abstractions;
namespace Terminal.Gui.Views {
public class ButtonTests {
readonly ITestOutputHelper output;
public ButtonTests (ITestOutputHelper output)
{
this.output = output;
}
[Fact, AutoInitShutdown]
public void Constructors_Defaults ()
{
@@ -185,5 +189,41 @@ namespace Terminal.Gui.Views {
Assert.Equal ("Te_st", btn.Text);
Assert.Equal (Key.S, btn.HotKey);
}
[Fact, AutoInitShutdown]
public void Update_Only_On_Or_After_Initialize ()
{
var btn = new Button ("Say Hello 你") {
X = Pos.Center (),
Y = Pos.Center ()
};
var win = new Window ("Test Demo 你") {
Width = Dim.Fill (),
Height = Dim.Fill ()
};
win.Add (btn);
Application.Top.Add (win);
Assert.False (btn.IsInitialized);
Application.Begin (Application.Top);
((FakeDriver)Application.Driver).SetBufferSize (30, 5);
Assert.True (btn.IsInitialized);
Assert.Equal ("Say Hello 你", btn.Text);
Assert.Equal ("[ Say Hello 你 ]", btn.TextFormatter.Text);
Assert.Equal (new Rect (0, 0, 16, 1), btn.Bounds);
var expected = @"
┌ Test Demo 你 ──────────────┐
│ │
│ [ Say Hello 你 ] │
│ │
└────────────────────────────┘
";
var pos = GraphViewTests.AssertDriverContentsWithFrameAre (expected, output);
Assert.Equal (new Rect (0, 0, 30, 5), pos);
}
}
}

View File

@@ -2065,7 +2065,8 @@ namespace Terminal.Gui.Core {
}
var label = new Label (breakLines) {
TextDirection = TextDirection.TopBottom_LeftRight,
Width = Dim.Fill (), Height = Dim.Fill ()
Width = Dim.Fill (),
Height = Dim.Fill ()
};
var frame = new FrameView () { Width = Dim.Fill (), Height = Dim.Fill () };
@@ -3153,7 +3154,7 @@ e
[Fact]
public void GetSumMaxCharWidth_List_Simple_And_Wide_Runes ()
{
List<ustring> text =new List<ustring>() { "Hello", "World" };
List<ustring> text = new List<ustring> () { "Hello", "World" };
Assert.Equal (2, TextFormatter.GetSumMaxCharWidth (text));
Assert.Equal (1, TextFormatter.GetSumMaxCharWidth (text, 1, 1));
text = new List<ustring> () { "こんにちは", "世界" };
@@ -3177,6 +3178,8 @@ e
Assert.Equal (6, TextFormatter.GetMaxLengthForWidth (runes, 6));
runes = ustring.Make ("こんにちは 世界").ToRuneList ();
Assert.Equal (3, TextFormatter.GetMaxLengthForWidth (runes, 6));
runes = ustring.Make ("[ Say Hello 你 ]").ToRuneList ();
Assert.Equal (15, TextFormatter.GetMaxLengthForWidth (runes, 16));
}
[Fact]