commit e98eaf1d440c1be0bae86cc9d9a35954ab7b6831
parent df7ebce237a6bbb50d070236ee581b10c045f032
Author: Michael Camilleri <[email protected]>
Date: Fri, 3 Jul 2026 08:22:04 +0900
Pin the grid thumbnail's filled-cell grey across appearances
The Game List thumbnail depicts the grid, which is black-and-white in
every appearance, but its filled cells were tinted with the dynamic
systemGray3. In Dark Mode that colour resolves to a dark grey that is
nearly indistinguishable from the black blocks, so cells the players had
filled in read as blocked squares. This commit pins the fill to a fixed
grey matching systemGray3's light-mode value, so the thumbnail renders
identically in both appearances and the light appearance is unchanged.
Co-Authored-By: Claude Fable 5 <[email protected]>
Diffstat:
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/Crossmate/Views/Components/GridThumbnailView.swift b/Crossmate/Views/Components/GridThumbnailView.swift
@@ -12,6 +12,13 @@ struct GridThumbnailView: View {
private let spacing: CGFloat = 0.5
+ /// Fill for cells with a letter entered. The thumbnail depicts the grid,
+ /// which is black-and-white in every appearance, so this stays a fixed
+ /// gray (systemGray3's light-mode value) rather than a dynamic colour —
+ /// the dark-mode variant is nearly indistinguishable from the black
+ /// blocks.
+ private let filledColor = Color(white: 0.78)
+
var body: some View {
Canvas(rendersAsynchronously: false) { ctx, canvasSize in
ctx.fill(
@@ -39,7 +46,7 @@ struct GridThumbnailView: View {
let y = originY + spacing + CGFloat(r) * (cell + spacing)
ctx.fill(
Path(CGRect(x: x, y: y, width: cell, height: cell)),
- with: .color(cellValue == .filled ? Color(.systemGray3) : .white)
+ with: .color(cellValue == .filled ? filledColor : .white)
)
}
}