mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-30 17:57:57 +01:00
Fixes #2282. HotKeyPos is causing black cell on center and right/bottom alignments.
This commit is contained in:
@@ -1212,11 +1212,11 @@ namespace Terminal.Gui {
|
||||
if (isVertical) {
|
||||
var runesWidth = GetSumMaxCharWidth (Lines, line);
|
||||
x = bounds.Right - runesWidth;
|
||||
CursorPosition = bounds.Width - runesWidth + hotKeyPos;
|
||||
CursorPosition = bounds.Width - runesWidth + (hotKeyPos > -1 ? hotKeyPos : 0);
|
||||
} else {
|
||||
var runesWidth = GetTextWidth (ustring.Make (runes));
|
||||
x = bounds.Right - runesWidth;
|
||||
CursorPosition = bounds.Width - runesWidth + hotKeyPos;
|
||||
CursorPosition = bounds.Width - runesWidth + (hotKeyPos > -1 ? hotKeyPos : 0);
|
||||
}
|
||||
} else if (textAlignment == TextAlignment.Left || textAlignment == TextAlignment.Justified) {
|
||||
if (isVertical) {
|
||||
@@ -1225,16 +1225,16 @@ namespace Terminal.Gui {
|
||||
} else {
|
||||
x = bounds.Left;
|
||||
}
|
||||
CursorPosition = hotKeyPos;
|
||||
CursorPosition = hotKeyPos > -1 ? hotKeyPos : 0;
|
||||
} else if (textAlignment == TextAlignment.Centered) {
|
||||
if (isVertical) {
|
||||
var runesWidth = GetSumMaxCharWidth (Lines, line);
|
||||
x = bounds.Left + line + ((bounds.Width - runesWidth) / 2);
|
||||
CursorPosition = (bounds.Width - runesWidth) / 2 + hotKeyPos;
|
||||
CursorPosition = (bounds.Width - runesWidth) / 2 + (hotKeyPos > -1 ? hotKeyPos : 0);
|
||||
} else {
|
||||
var runesWidth = GetTextWidth (ustring.Make (runes));
|
||||
x = bounds.Left + (bounds.Width - runesWidth) / 2;
|
||||
CursorPosition = (bounds.Width - runesWidth) / 2 + hotKeyPos;
|
||||
CursorPosition = (bounds.Width - runesWidth) / 2 + (hotKeyPos > -1 ? hotKeyPos : 0);
|
||||
}
|
||||
} else {
|
||||
throw new ArgumentOutOfRangeException ();
|
||||
@@ -1291,7 +1291,7 @@ namespace Terminal.Gui {
|
||||
rune = runes [idx];
|
||||
}
|
||||
}
|
||||
if (idx == HotKeyPos) {
|
||||
if (HotKeyPos > -1 && idx == HotKeyPos) {
|
||||
if ((isVertical && textVerticalAlignment == VerticalTextAlignment.Justified) ||
|
||||
(!isVertical && textAlignment == TextAlignment.Justified)) {
|
||||
CursorPosition = idx - start;
|
||||
|
||||
@@ -37,9 +37,9 @@ public class AutoInitShutdownAttribute : Xunit.Sdk.BeforeAfterTestAttribute {
|
||||
/// <param name="fakeClipboardIsSupportedAlwaysTrue">Only valid if <paramref name="autoInit"/> is true.
|
||||
/// Only valid if <see cref="consoleDriver"/> == <see cref="FakeDriver"/> and <paramref name="autoInit"/> is true.</param>
|
||||
public AutoInitShutdownAttribute (bool autoInit = true, bool autoShutdown = true,
|
||||
Type consoleDriverType = null,
|
||||
bool useFakeClipboard = false,
|
||||
bool fakeClipboardAlwaysThrowsNotSupportedException = false,
|
||||
Type consoleDriverType = null,
|
||||
bool useFakeClipboard = false,
|
||||
bool fakeClipboardAlwaysThrowsNotSupportedException = false,
|
||||
bool fakeClipboardIsSupportedAlwaysTrue = false)
|
||||
{
|
||||
//Assert.True (autoInit == false && consoleDriverType == null);
|
||||
@@ -54,7 +54,7 @@ public class AutoInitShutdownAttribute : Xunit.Sdk.BeforeAfterTestAttribute {
|
||||
|
||||
static bool _init = false;
|
||||
bool AutoInit { get; }
|
||||
bool AutoShutdown { get; }
|
||||
bool AutoShutdown { get; }
|
||||
Type DriverType;
|
||||
|
||||
public override void Before (MethodInfo methodUnderTest)
|
||||
@@ -251,7 +251,7 @@ class TestHelpers {
|
||||
|
||||
var match = expectedColors.Where (e => e.Value == val).ToList ();
|
||||
if (match.Count == 0) {
|
||||
throw new Exception ($"Unexpected color {DescribeColor (val)} was used at row {r} and col {c} (indexes start at 0). Color value was {val} (expected colors were {string.Join (",", expectedColors.Select (c => c.Value))})");
|
||||
throw new Exception ($"Unexpected color {DescribeColor (val)} was used at row {r} and col {c} (indexes start at 0). Color value was {val} (expected colors were {string.Join (",", expectedColors.Select (c => DescribeColor (c.Value)))})");
|
||||
} else if (match.Count > 1) {
|
||||
throw new ArgumentException ($"Bad value for expectedColors, {match.Count} Attributes had the same Value");
|
||||
}
|
||||
|
||||
@@ -4259,5 +4259,46 @@ This TextFormatter (tf2) is rewritten.
|
||||
0111000000
|
||||
0000000000", expectedColors);
|
||||
}
|
||||
|
||||
[Fact, AutoInitShutdown]
|
||||
public void Colors_On_TextAlignment_Right_And_Bottom ()
|
||||
{
|
||||
var labelRight = new Label ("Test") {
|
||||
Width = 6,
|
||||
Height = 1,
|
||||
TextAlignment = TextAlignment.Right,
|
||||
ColorScheme = Colors.Base
|
||||
};
|
||||
var labelBottom = new Label ("Test", TextDirection.TopBottom_LeftRight) {
|
||||
Y = 1,
|
||||
Width = 1,
|
||||
Height = 6,
|
||||
VerticalTextAlignment = VerticalTextAlignment.Bottom,
|
||||
ColorScheme = Colors.Base
|
||||
};
|
||||
var top = Application.Top;
|
||||
top.Add (labelRight, labelBottom);
|
||||
|
||||
Application.Begin (top);
|
||||
((FakeDriver)Application.Driver).SetBufferSize (7, 7);
|
||||
|
||||
TestHelpers.AssertDriverContentsWithFrameAre (@"
|
||||
Test
|
||||
|
||||
|
||||
T
|
||||
e
|
||||
s
|
||||
t ", output);
|
||||
|
||||
TestHelpers.AssertDriverColorsAre (@"
|
||||
000000
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0", new Attribute [] { Colors.Base.Normal });
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user