瀏覽代碼

Fixes #836. Allows a Label display the text initially empty.

BDisp 5 年之前
父節點
當前提交
6a571163ab
共有 2 個文件被更改,包括 5 次插入2 次删除
  1. 2 2
      Terminal.Gui/Core/TextFormatter.cs
  2. 3 0
      Terminal.Gui/Core/View.cs

+ 2 - 2
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;

+ 3 - 0
Terminal.Gui/Core/View.cs

@@ -1813,6 +1813,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 ();
 			}
 		}