From 843863bc5725d169a5cb6da0a392d9398651cd51 Mon Sep 17 00:00:00 2001
From: Carl Worth <cworth@cworth.org>
Date: Mon, 18 Dec 2006 09:26:05 -0800
Subject: [PATCH] Only show solution words after found (with refresh bug)

Initially, all words shown are just blanks. Then after words are
found they will be drawn on the next update, (which is not yet
being triggered).
---
 rack-fancy.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/rack-fancy.c b/rack-fancy.c
index 87b39f5..f2caa13 100644
--- a/rack-fancy.c
+++ b/rack-fancy.c
@@ -27,6 +27,7 @@
 #include "word-game.h"
 #include "demo-item.h"
 
+#define RACK_DICT_ENTRY_FOUND (1<<1)
 #define MAX_TILES 7
 
 typedef struct _tile
@@ -84,7 +85,13 @@ dict_paint_action (void *closure, char *word, dict_entry_t *entry)
     double new_x, new_y;
 
     cairo_move_to (cr, cursor->x, cursor->y);
-    cairo_show_text (cr, word);
+    if (*entry & RACK_DICT_ENTRY_FOUND) {
+	cairo_show_text (cr, word);
+    } else {
+	int i, length = strlen (word);
+	for (i = 0; i < length; i++)
+	    cairo_show_text (cr, "_");
+    }
     cairo_get_current_point (cr, &new_x, &new_y);
     if (new_x > cursor->max_column_width)
 	cursor->max_column_width = new_x;
@@ -313,10 +320,12 @@ on_key_press_event (GtkWidget	*widget,
     if (event->keyval == GDK_Return) {
 	dict_entry_t *entry;
 	entry = dict_lookup (rack->solution, rack->guess);
-	if (DICT_ENTRY_IS_WORD (entry))
+	if (DICT_ENTRY_IS_WORD (entry)) {
+	    *entry = *entry | RACK_DICT_ENTRY_FOUND;
 	    printf ("%s is good\n", rack->guess);
-	else
+	} else {
 	    printf ("%s is not a word\n", rack->guess);
+	}
 	rack_return_all (rack);
 	return TRUE;
     }
-- 
2.45.2