|
@@ -118,7 +118,7 @@ namespace Terminal.Gui {
|
|
|
|
|
|
public Curses.Window window;
|
|
|
|
|
|
- static short last_color_pair = 16;
|
|
|
+ //static short last_color_pair = 16;
|
|
|
|
|
|
/// <summary>
|
|
|
/// Creates a curses color from the provided foreground and background colors
|
|
@@ -128,12 +128,15 @@ namespace Terminal.Gui {
|
|
|
/// <returns></returns>
|
|
|
public static Attribute MakeColor (short foreground, short background)
|
|
|
{
|
|
|
- Curses.InitColorPair (++last_color_pair, foreground, background);
|
|
|
+ var v = (short)((int)foreground | background << 4);
|
|
|
+ //Curses.InitColorPair (++last_color_pair, foreground, background);
|
|
|
+ Curses.InitColorPair (v, foreground, background);
|
|
|
return new Attribute (
|
|
|
- value: Curses.ColorPair (last_color_pair),
|
|
|
+ //value: Curses.ColorPair (last_color_pair),
|
|
|
+ value: Curses.ColorPair (v),
|
|
|
foreground: (Color)foreground,
|
|
|
- background: (Color)background
|
|
|
- );
|
|
|
+ background: (Color)background);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
int [,] colorPairs = new int [16, 16];
|
|
@@ -144,9 +147,9 @@ namespace Terminal.Gui {
|
|
|
int b = (short)background;
|
|
|
var v = colorPairs [f, b];
|
|
|
if ((v & 0x10000) == 0) {
|
|
|
- b = b & 0x7;
|
|
|
+ b &= 0x7;
|
|
|
bool bold = (f & 0x8) != 0;
|
|
|
- f = f & 0x7;
|
|
|
+ f &= 0x7;
|
|
|
|
|
|
v = MakeColor ((short)f, (short)b) | (bold ? Curses.A_BOLD : 0);
|
|
|
colorPairs [(int)foreground, (int)background] = v | 0x1000;
|
|
@@ -157,7 +160,7 @@ namespace Terminal.Gui {
|
|
|
Dictionary<int, int> rawPairs = new Dictionary<int, int> ();
|
|
|
public override void SetColors (short foreColorId, short backgroundColorId)
|
|
|
{
|
|
|
- int key = (((ushort)foreColorId << 16)) | (ushort)backgroundColorId;
|
|
|
+ int key = ((ushort)foreColorId << 16) | (ushort)backgroundColorId;
|
|
|
if (!rawPairs.TryGetValue (key, out var v)) {
|
|
|
v = MakeColor (foreColorId, backgroundColorId);
|
|
|
rawPairs [key] = v;
|
|
@@ -781,33 +784,33 @@ namespace Terminal.Gui {
|
|
|
Colors.TopLevel.Normal = MakeColor (Curses.COLOR_GREEN, Curses.COLOR_BLACK);
|
|
|
Colors.TopLevel.Focus = MakeColor (Curses.COLOR_WHITE, Curses.COLOR_CYAN);
|
|
|
Colors.TopLevel.HotNormal = MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_BLACK);
|
|
|
- Colors.TopLevel.HotFocus = MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_CYAN);
|
|
|
+ Colors.TopLevel.HotFocus = MakeColor (Curses.COLOR_BLUE, Curses.COLOR_CYAN);
|
|
|
|
|
|
Colors.Base.Normal = MakeColor (Curses.COLOR_WHITE, Curses.COLOR_BLUE);
|
|
|
- Colors.Base.Focus = MakeColor (Curses.COLOR_BLACK, Curses.COLOR_CYAN);
|
|
|
- Colors.Base.HotNormal = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_BLUE);
|
|
|
- Colors.Base.HotFocus = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_CYAN);
|
|
|
+ Colors.Base.Focus = MakeColor (Curses.COLOR_BLACK, Curses.COLOR_WHITE);
|
|
|
+ Colors.Base.HotNormal = MakeColor (Curses.COLOR_CYAN, Curses.COLOR_BLUE);
|
|
|
+ Colors.Base.HotFocus = Curses.A_BOLD | MakeColor (Curses.COLOR_BLUE, Curses.COLOR_GRAY);
|
|
|
|
|
|
// Focused,
|
|
|
// Selected, Hot: Yellow on Black
|
|
|
// Selected, text: white on black
|
|
|
// Unselected, hot: yellow on cyan
|
|
|
// unselected, text: same as unfocused
|
|
|
- Colors.Menu.HotFocus = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_BLACK);
|
|
|
+ Colors.Menu.Normal = Curses.A_BOLD | MakeColor (Curses.COLOR_WHITE, Curses.COLOR_GRAY);
|
|
|
Colors.Menu.Focus = Curses.A_BOLD | MakeColor (Curses.COLOR_WHITE, Curses.COLOR_BLACK);
|
|
|
- Colors.Menu.HotNormal = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_CYAN);
|
|
|
- Colors.Menu.Normal = Curses.A_BOLD | MakeColor (Curses.COLOR_WHITE, Curses.COLOR_CYAN);
|
|
|
- Colors.Menu.Disabled = MakeColor (Curses.COLOR_WHITE, Curses.COLOR_CYAN);
|
|
|
+ Colors.Menu.HotNormal = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_GRAY);
|
|
|
+ Colors.Menu.HotFocus = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_BLACK);
|
|
|
+ Colors.Menu.Disabled = MakeColor (Curses.COLOR_WHITE, Curses.COLOR_GRAY);
|
|
|
|
|
|
Colors.Dialog.Normal = MakeColor (Curses.COLOR_BLACK, Curses.COLOR_WHITE);
|
|
|
- Colors.Dialog.Focus = MakeColor (Curses.COLOR_BLACK, Curses.COLOR_CYAN);
|
|
|
+ Colors.Dialog.Focus = MakeColor (Curses.COLOR_WHITE, Curses.COLOR_GRAY);
|
|
|
Colors.Dialog.HotNormal = MakeColor (Curses.COLOR_BLUE, Curses.COLOR_WHITE);
|
|
|
- Colors.Dialog.HotFocus = MakeColor (Curses.COLOR_BLUE, Curses.COLOR_CYAN);
|
|
|
+ Colors.Dialog.HotFocus = MakeColor (Curses.COLOR_BLUE, Curses.COLOR_GRAY);
|
|
|
|
|
|
- Colors.Error.Normal = Curses.A_BOLD | MakeColor (Curses.COLOR_WHITE, Curses.COLOR_RED);
|
|
|
- Colors.Error.Focus = MakeColor (Curses.COLOR_BLACK, Curses.COLOR_WHITE);
|
|
|
- Colors.Error.HotNormal = Curses.A_BOLD | MakeColor (Curses.COLOR_YELLOW, Curses.COLOR_RED);
|
|
|
- Colors.Error.HotFocus = Colors.Error.HotNormal;
|
|
|
+ Colors.Error.Normal = MakeColor (Curses.COLOR_RED, Curses.COLOR_WHITE);
|
|
|
+ Colors.Error.Focus = Curses.A_BOLD | MakeColor (Curses.COLOR_WHITE, Curses.COLOR_RED);
|
|
|
+ Colors.Error.HotNormal = MakeColor (Curses.COLOR_BLACK, Curses.COLOR_WHITE);
|
|
|
+ Colors.Error.HotFocus = Curses.A_BOLD | MakeColor (Curses.COLOR_BLACK, Curses.COLOR_RED);
|
|
|
} else {
|
|
|
Colors.TopLevel.Normal = Curses.COLOR_GREEN;
|
|
|
Colors.TopLevel.Focus = Curses.COLOR_WHITE;
|
|
@@ -852,21 +855,22 @@ namespace Terminal.Gui {
|
|
|
case Color.Gray:
|
|
|
return Curses.COLOR_WHITE;
|
|
|
case Color.DarkGray:
|
|
|
- return Curses.COLOR_BLACK | Curses.A_BOLD;
|
|
|
+ //return Curses.COLOR_BLACK | Curses.A_BOLD;
|
|
|
+ return Curses.COLOR_GRAY;
|
|
|
case Color.BrightBlue:
|
|
|
- return Curses.COLOR_BLUE | Curses.A_BOLD;
|
|
|
+ return Curses.COLOR_BLUE | Curses.A_BOLD | Curses.COLOR_GRAY;
|
|
|
case Color.BrightGreen:
|
|
|
- return Curses.COLOR_GREEN | Curses.A_BOLD;
|
|
|
+ return Curses.COLOR_GREEN | Curses.A_BOLD | Curses.COLOR_GRAY;
|
|
|
case Color.BrightCyan:
|
|
|
- return Curses.COLOR_CYAN | Curses.A_BOLD;
|
|
|
+ return Curses.COLOR_CYAN | Curses.A_BOLD | Curses.COLOR_GRAY;
|
|
|
case Color.BrightRed:
|
|
|
- return Curses.COLOR_RED | Curses.A_BOLD;
|
|
|
+ return Curses.COLOR_RED | Curses.A_BOLD | Curses.COLOR_GRAY;
|
|
|
case Color.BrightMagenta:
|
|
|
- return Curses.COLOR_MAGENTA | Curses.A_BOLD;
|
|
|
+ return Curses.COLOR_MAGENTA | Curses.A_BOLD | Curses.COLOR_GRAY;
|
|
|
case Color.BrightYellow:
|
|
|
- return Curses.COLOR_YELLOW | Curses.A_BOLD;
|
|
|
+ return Curses.COLOR_YELLOW | Curses.A_BOLD | Curses.COLOR_GRAY;
|
|
|
case Color.White:
|
|
|
- return Curses.COLOR_WHITE | Curses.A_BOLD;
|
|
|
+ return Curses.COLOR_WHITE | Curses.A_BOLD | Curses.COLOR_GRAY;
|
|
|
}
|
|
|
throw new ArgumentException ("Invalid color code");
|
|
|
}
|