diff --git a/src/BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.Drawing.cs b/src/BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.Drawing.cs index bc1a2a484d..06b45134b2 100644 --- a/src/BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.Drawing.cs +++ b/src/BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.Drawing.cs @@ -14,8 +14,8 @@ namespace BizHawk.Client.EmuHawk using (_renderer.LockGraphics(e.Graphics)) { // White Background - _renderer.SetBrush(Color.White); - _renderer.SetSolidPen(Color.White); + _renderer.SetBrush(_backColor); + _renderer.SetSolidPen(_backColor); _renderer.FillRectangle(e.ClipRectangle); // Lag frame calculations @@ -510,7 +510,6 @@ namespace BizHawk.Client.EmuHawk private void DoSelectionBG(List visibleColumns, Rectangle rect) { - Color rowColor = Color.White; var visibleRows = FirstVisibleRow.RangeTo(LastVisibleRow); int lastRow = -1; foreach (Cell cell in _selectedItems) @@ -527,6 +526,7 @@ namespace BizHawk.Client.EmuHawk }; relativeCell.RowIndex -= CountLagFramesAbsolute(relativeCell.RowIndex.Value); + var rowColor = _backColor; if (QueryRowBkColor != null && lastRow != cell.RowIndex.Value) { QueryRowBkColor(cell.RowIndex.Value, ref rowColor); @@ -603,27 +603,21 @@ namespace BizHawk.Client.EmuHawk for (int i = 0, f = 0; f < range; i++, f++) { f += _lagFrames[i]; - Color rowColor = Color.White; + var rowColor = _backColor; QueryRowBkColor?.Invoke(f + startIndex, ref rowColor); foreach (var column in visibleColumns) { - Color itemColor = Color.White; + var itemColor = rowColor; QueryItemBkColor?.Invoke(f + startIndex, column, ref itemColor); - - if (itemColor == Color.White) - { - itemColor = rowColor; - } - else if (itemColor.A != 255 && itemColor.A != 0) + if (itemColor.A is not 0 or 255) { float alpha = (float)itemColor.A / 255; itemColor = Color.FromArgb(rowColor.R - (int)((rowColor.R - itemColor.R) * alpha), rowColor.G - (int)((rowColor.G - itemColor.G) * alpha), rowColor.B - (int)((rowColor.B - itemColor.B) * alpha)); } - - if (itemColor != Color.White) // An easy optimization, don't draw unless the user specified something other than the default + if (itemColor != _backColor) // An easy optimization, don't draw unless the user specified something other than the default { var cell = new Cell { diff --git a/src/BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.cs b/src/BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.cs index 89fc29af2a..815ca2ba19 100644 --- a/src/BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.cs +++ b/src/BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.cs @@ -31,8 +31,21 @@ namespace BizHawk.Client.EmuHawk private readonly Timer _hoverTimer = new Timer(); private readonly byte[] _lagFrames = new byte[256]; // Large enough value that it shouldn't ever need resizing. // apparently not large enough for 4K - private readonly Color _foreColor; - private readonly Color _backColor; + private Color _backColor; + + public override Color BackColor + { + get => _backColor; + set => base.BackColor = _backColor = value; + } + + private Color _foreColor; + + public override Color ForeColor + { + get => _foreColor; + set => base.ForeColor = _foreColor = value; + } private RollColumns _columns = new RollColumns(); private bool _horizontalOrientation; @@ -117,8 +130,18 @@ namespace BizHawk.Client.EmuHawk _hoverTimer.Tick += HoverTimerEventProcessor; _hoverTimer.Stop(); - _foreColor = ForeColor; - _backColor = BackColor; + if (OSTailoredCode.IsUnixHost) + { + // sorry dark theme users, but this needs to be readable + _backColor = Color.White; + _foreColor = Color.Black; + } + else + { + // this is the ctor, so these reads will always return the default values + _backColor = base.BackColor; + _foreColor = base.ForeColor; + } } private void HoverTimerEventProcessor(object sender, EventArgs e)