Merge pull request #837 from BDisp/label-empty-initially

Fixes #836. Allows a Label display the text initially empty.
This commit is contained in:
Charlie Kindel
2020-08-07 05:53:51 -07:00
committed by GitHub
3 changed files with 7 additions and 4 deletions

View File

@@ -47,7 +47,7 @@ namespace Terminal.Gui {
set {
text = value;
if (Size.IsEmpty) {
if (text.RuneCount > 0 && (Size.Width == 0 || Size.Height == 0 || Size.Width != text.RuneCount)) {
// Proivde a default size (width = length of longest line, height = 1)
// TODO: It might makem more sense for the default to be width = length of first line?
Size = new Size (TextFormatter.MaxWidth (Text, int.MaxValue), 1);
@@ -405,7 +405,7 @@ namespace Terminal.Gui {
public static Rect CalcRect (int x, int y, ustring text)
{
if (ustring.IsNullOrEmpty (text))
return Rect.Empty;
return new Rect (new Point (x, y), Size.Empty);
int mw = 0;
int ml = 1;

View File

@@ -1784,6 +1784,9 @@ namespace Terminal.Gui {
get => textFormatter.Text;
set {
textFormatter.Text = value;
if (textFormatter.Size != Bounds.Size && (width == null || Bounds.Width == 0 || height == null || Bounds.Height == 0)) {
Bounds = new Rect (Bounds.X, Bounds.Y, textFormatter.Size.Width, textFormatter.Size.Height);
}
SetNeedsDisplay ();
}
}

View File

@@ -533,8 +533,8 @@ namespace Terminal.Gui {
{
Assert.Equal (Rect.Empty, TextFormatter.CalcRect (0, 0, null));
Assert.Equal (Rect.Empty, TextFormatter.CalcRect (0, 0, ""));
Assert.Equal (Rect.Empty, TextFormatter.CalcRect (1, 2, ""));
Assert.Equal (Rect.Empty, TextFormatter.CalcRect (-1, -2, ""));
Assert.Equal (new Rect (new Point (1, 2), Size.Empty), TextFormatter.CalcRect (1, 2, ""));
Assert.Equal (new Rect (new Point (-1, -2), Size.Empty), TextFormatter.CalcRect (-1, -2, ""));
}
[Fact]