Forráskód Böngészése

Fixes #2053. MessageBox.Query still not wrapping with v1.8.0 on windows/net6.0.

BDisp 2 éve
szülő
commit
92dc7f04d4
2 módosított fájl, 107 hozzáadás és 3 törlés
  1. 3 3
      Terminal.Gui/Windows/MessageBox.cs
  2. 104 0
      UnitTests/MessageBoxTests.cs

+ 3 - 3
Terminal.Gui/Windows/MessageBox.cs

@@ -248,9 +248,9 @@ namespace Terminal.Gui {
 			} else {
 				maxWidthLine = width;
 			}
-			int textWidth = TextFormatter.MaxWidth (message, maxWidthLine);
+			int textWidth = Math.Min (TextFormatter.MaxWidth (message, maxWidthLine), Application.Driver.Cols);
 			int textHeight = TextFormatter.MaxLines (message, textWidth); // message.Count (ustring.Make ('\n')) + 1;
-			int msgboxHeight = Math.Max (1, textHeight) + 4; // textHeight + (top + top padding + buttons + bottom)
+			int msgboxHeight = Math.Min (Math.Max (1, textHeight) + 4, Application.Driver.Rows); // textHeight + (top + top padding + buttons + bottom)
 
 			// Create button array for Dialog
 			int count = 0;
@@ -300,7 +300,7 @@ namespace Terminal.Gui {
 
 			if (width == 0 & height == 0) {
 				// Dynamically size Width
-				d.Width = Math.Max (maxWidthLine, Math.Max (title.ConsoleWidth, Math.Max (textWidth + 2, d.GetButtonsWidth ()))); // textWidth + (left + padding + padding + right)
+				d.Width = Math.Min (Math.Max (maxWidthLine, Math.Max (title.ConsoleWidth, Math.Max (textWidth + 2, d.GetButtonsWidth ()))), Application.Driver.Cols); // textWidth + (left + padding + padding + right)
 			}
 
 			// Setup actions

+ 104 - 0
UnitTests/MessageBoxTests.cs

@@ -154,5 +154,109 @@ namespace Terminal.Gui.Views {
 
 			Application.Run ();
 		}
+
+		[Fact, AutoInitShutdown]
+		public void MessageBox_With_A_Label_Without_Spaces ()
+		{
+			var iterations = -1;
+			Application.Begin (Application.Top);
+
+			Application.Iteration += () => {
+				iterations++;
+
+				if (iterations == 0) {
+					MessageBox.Query ("mywindow", new string ('f', 2000), "ok");
+
+					Application.RequestStop ();
+				} else if (iterations == 1) {
+					Application.Top.Redraw (Application.Top.Bounds);
+					GraphViewTests.AssertDriverContentsWithFrameAre (@"
+┌ mywindow ────────────────────────────────────────────────────────────────────┐
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
+│                                   [◦ ok ◦]                                   │
+└──────────────────────────────────────────────────────────────────────────────┘
+", output);
+
+					Application.RequestStop ();
+				}
+			};
+
+			Application.Run ();
+		}
+
+		[Fact, AutoInitShutdown]
+		public void MessageBox_With_A_Label_With_Spaces ()
+		{
+			var iterations = -1;
+			Application.Begin (Application.Top);
+
+			Application.Iteration += () => {
+				iterations++;
+
+				if (iterations == 0) {
+					var sb = new StringBuilder ();
+					for (int i = 0; i < 1000; i++)
+						sb.Append ("ff ");
+
+					MessageBox.Query ("mywindow", sb.ToString (), "ok");
+
+					Application.RequestStop ();
+				} else if (iterations == 1) {
+					Application.Top.Redraw (Application.Top.Bounds);
+					GraphViewTests.AssertDriverContentsWithFrameAre (@"
+┌ mywindow ────────────────────────────────────────────────────────────────────┐
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
+│                                   [◦ ok ◦]                                   │
+└──────────────────────────────────────────────────────────────────────────────┘
+", output);
+
+					Application.RequestStop ();
+				}
+			};
+
+			Application.Run ();
+		}
 	}
 }