diff --git a/Terminal.Gui/Core/TextFormatter.cs b/Terminal.Gui/Core/TextFormatter.cs index 1cfaf62d7..7fe96445d 100644 --- a/Terminal.Gui/Core/TextFormatter.cs +++ b/Terminal.Gui/Core/TextFormatter.cs @@ -47,7 +47,7 @@ namespace Terminal.Gui { set { text = value; - if (Size.IsEmpty) { + if (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; diff --git a/Terminal.Gui/Core/View.cs b/Terminal.Gui/Core/View.cs index 69d0ed5c7..fde54913c 100644 --- a/Terminal.Gui/Core/View.cs +++ b/Terminal.Gui/Core/View.cs @@ -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 (); } }