⛏️ index : haiku.git

author Axel Dörfler <axeld@pinc-software.de> 2025-12-03 17:36:50.0 +00:00:00
committer Axel Dörfler <axeld@pinc-software.de> 2025-12-03 21:20:51.0 +00:00:00
commit
85ced2a68eaab6228df0dee66cdb0da134c92035 [patch]
tree
931b3cf50985a32a31a5145903c1ffdd4f3b260d
parent
658d2d12224284eb8593220f9c6c56c26d823c01
download
85ced2a68eaab6228df0dee66cdb0da134c92035.tar.gz

Sudoku: Fixed colors in normal mode again

* It was not supposed to use panel color as background; it now uses
  document color instead.
* Improved color computation with less calls to ui_color(), and only
  two place to change in the future, if ever needed.
* Still does not look good in dark mode, though (no changes there).

Change-Id: I2aa355728de4b7da1939417adf6922dde77aac44
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10053
Reviewed-by: nephele nephele <nep-git@packageloss.eu>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>

Diff

 src/apps/sudoku/SudokuView.cpp | 33 +++++++++++++++++++--------------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/src/apps/sudoku/SudokuView.cpp b/src/apps/sudoku/SudokuView.cpp
index ddd3492..6dc9d6b 100644
--- a/src/apps/sudoku/SudokuView.cpp
+++ b/src/apps/sudoku/SudokuView.cpp
@@ -1,5 +1,5 @@
/*
 * Copyright 2007-2015, Axel Dörfler, axeld@pinc-software.de.
 * Copyright 2007-2025, Axel Dörfler, axeld@pinc-software.de.
 * Distributed under the terms of the MIT License.
 */

@@ -805,11 +805,15 @@
{
	// draw lines

	uint32 size = fField->Size();
	const color_which kBackgroundColorWhich = B_DOCUMENT_BACKGROUND_COLOR;
	const rgb_color kBackgroundColor = ui_color(kBackgroundColorWhich);
	const color_which kTextColorWhich = B_DOCUMENT_TEXT_COLOR;
	const rgb_color kTextColor = ui_color(kTextColorWhich);

	SetLowUIColor(B_CONTROL_BACKGROUND_COLOR);
	SetLowUIColor(kBackgroundColorWhich);
	SetHighUIColor(B_CONTROL_BORDER_COLOR);

	uint32 size = fField->Size();
	float width = fWidth - 1;
	for (uint32 x = 1; x < size; x++) {
		if (x % fBlockSize == 0) {
@@ -839,24 +843,25 @@
	for (uint32 y = 0; y < size; y++) {
		for (uint32 x = 0; x < size; x++) {
			uint32 value = fField->ValueAt(x, y);
			rgb_color fieldBackgroundColor = kBackgroundColor;

			rgb_color backgroundColor = ui_color(B_CONTROL_BACKGROUND_COLOR);
			if (value == fValueHintValue)
				backgroundColor = mix_color(ui_color(B_CONTROL_BACKGROUND_COLOR),
			if (value == fValueHintValue) {
				fieldBackgroundColor = mix_color(kBackgroundColor,
					kIdealValueHintBackgroundColor, 100);
			else if (value == 0 && fField->HasHint(x, y, fValueHintValue))
				backgroundColor = mix_color(ui_color(B_CONTROL_BACKGROUND_COLOR),
			} else if (value == 0 && fField->HasHint(x, y, fValueHintValue)) {
				fieldBackgroundColor = mix_color(kBackgroundColor,
					kIdealHintValueHintBackgroundColor, 100);
			}

			if (((fShowCursor && x == fShowHintX && y == fShowHintY)
					|| (fShowKeyboardFocus && x == fKeyboardX
						&& y == fKeyboardY))
				&& !fField->IsInitialValue(x, y)) {
				// TODO: make color more intense
				SetLowColor(tint_color(backgroundColor, B_DARKEN_2_TINT));
				SetLowColor(tint_color(fieldBackgroundColor, B_DARKEN_2_TINT));
				FillRect(_Frame(x, y), B_SOLID_LOW);
			} else {
				SetLowColor(backgroundColor);
				SetLowColor(fieldBackgroundColor);
				FillRect(_Frame(x, y), B_SOLID_LOW);
			}

@@ -870,23 +875,23 @@

			SetFont(&fFieldFont);
			if (fField->IsInitialValue(x, y))
				SetHighUIColor(B_CONTROL_TEXT_COLOR);
				SetHighUIColor(kTextColorWhich);
			else {
				if ((fHintFlags & kMarkInvalid) == 0
					|| fField->IsValid(x, y, value)) {
					if (fField->IsValueCompleted(value)) {
						if (ui_color(B_CONTROL_TEXT_COLOR).IsDark())
						if (kTextColor.IsDark())
							SetHighColor(kValueCompletedColor);
						else
							SetHighColor(tint_color(kValueCompletedColor, B_LIGHTEN_2_TINT));
					} else {
						if (ui_color(B_CONTROL_TEXT_COLOR).IsDark())
						if (kTextColor.IsDark())
							SetHighColor(kValueColor);
						else
							SetHighColor(tint_color(kValueColor, B_LIGHTEN_2_TINT));
					}
				} else {
					if (ui_color(B_CONTROL_TEXT_COLOR).IsDark())
					if (kTextColor.IsDark())
						SetHighColor(kInvalidValueColor);
					else
						SetHighColor(tint_color(kInvalidValueColor, B_LIGHTEN_2_TINT));