Skip to content

Commit 92dc7f0

Browse files
committed
Fixes #2053. MessageBox.Query still not wrapping with v1.8.0 on windows/net6.0.
1 parent 671fa7d commit 92dc7f0

File tree

2 files changed

+107
-3
lines changed

2 files changed

+107
-3
lines changed

Terminal.Gui/Windows/MessageBox.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,9 @@ static int QueryFull (bool useErrorColors, int width, int height, ustring title,
248248
} else {
249249
maxWidthLine = width;
250250
}
251-
int textWidth = TextFormatter.MaxWidth (message, maxWidthLine);
251+
int textWidth = Math.Min (TextFormatter.MaxWidth (message, maxWidthLine), Application.Driver.Cols);
252252
int textHeight = TextFormatter.MaxLines (message, textWidth); // message.Count (ustring.Make ('\n')) + 1;
253-
int msgboxHeight = Math.Max (1, textHeight) + 4; // textHeight + (top + top padding + buttons + bottom)
253+
int msgboxHeight = Math.Min (Math.Max (1, textHeight) + 4, Application.Driver.Rows); // textHeight + (top + top padding + buttons + bottom)
254254

255255
// Create button array for Dialog
256256
int count = 0;
@@ -300,7 +300,7 @@ static int QueryFull (bool useErrorColors, int width, int height, ustring title,
300300

301301
if (width == 0 & height == 0) {
302302
// Dynamically size Width
303-
d.Width = Math.Max (maxWidthLine, Math.Max (title.ConsoleWidth, Math.Max (textWidth + 2, d.GetButtonsWidth ()))); // textWidth + (left + padding + padding + right)
303+
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)
304304
}
305305

306306
// Setup actions

UnitTests/MessageBoxTests.cs

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,5 +154,109 @@ public void MessageBox_With_A_Enough_Fixed_Size ()
154154

155155
Application.Run ();
156156
}
157+
158+
[Fact, AutoInitShutdown]
159+
public void MessageBox_With_A_Label_Without_Spaces ()
160+
{
161+
var iterations = -1;
162+
Application.Begin (Application.Top);
163+
164+
Application.Iteration += () => {
165+
iterations++;
166+
167+
if (iterations == 0) {
168+
MessageBox.Query ("mywindow", new string ('f', 2000), "ok");
169+
170+
Application.RequestStop ();
171+
} else if (iterations == 1) {
172+
Application.Top.Redraw (Application.Top.Bounds);
173+
GraphViewTests.AssertDriverContentsWithFrameAre (@"
174+
┌ mywindow ────────────────────────────────────────────────────────────────────┐
175+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
176+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
177+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
178+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
179+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
180+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
181+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
182+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
183+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
184+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
185+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
186+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
187+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
188+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
189+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
190+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
191+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
192+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
193+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
194+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
195+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
196+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
197+
│ [◦ ok ◦] │
198+
└──────────────────────────────────────────────────────────────────────────────┘
199+
", output);
200+
201+
Application.RequestStop ();
202+
}
203+
};
204+
205+
Application.Run ();
206+
}
207+
208+
[Fact, AutoInitShutdown]
209+
public void MessageBox_With_A_Label_With_Spaces ()
210+
{
211+
var iterations = -1;
212+
Application.Begin (Application.Top);
213+
214+
Application.Iteration += () => {
215+
iterations++;
216+
217+
if (iterations == 0) {
218+
var sb = new StringBuilder ();
219+
for (int i = 0; i < 1000; i++)
220+
sb.Append ("ff ");
221+
222+
MessageBox.Query ("mywindow", sb.ToString (), "ok");
223+
224+
Application.RequestStop ();
225+
} else if (iterations == 1) {
226+
Application.Top.Redraw (Application.Top.Bounds);
227+
GraphViewTests.AssertDriverContentsWithFrameAre (@"
228+
┌ mywindow ────────────────────────────────────────────────────────────────────┐
229+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
230+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
231+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
232+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
233+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
234+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
235+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
236+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
237+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
238+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
239+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
240+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
241+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
242+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
243+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
244+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
245+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
246+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
247+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
248+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
249+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
250+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
251+
│ [◦ ok ◦] │
252+
└──────────────────────────────────────────────────────────────────────────────┘
253+
", output);
254+
255+
Application.RequestStop ();
256+
}
257+
};
258+
259+
Application.Run ();
260+
}
157261
}
158262
}

0 commit comments

Comments
 (0)