mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-27 00:07:58 +01:00
Merge pull request #1728 from BDisp/button-width-fix
Fixes GetMaxLengthforWidth on Button.
This commit is contained in:
@@ -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 ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user