chiark / gitweb /
Fix a display glitch in Keen's pencil-mode cursor.
authorJonas Kölker <jonaskoelker@yahoo.com>
Thu, 1 Oct 2015 19:59:30 +0000 (21:59 +0200)
committerSimon Tatham <anakin@pobox.com>
Sat, 3 Oct 2015 16:12:20 +0000 (17:12 +0100)
Draw pencil-mode cursor before corners of thick lines in order to make
the thick lines appear on top of the north-west corner of the pencil
cursor, just like they do with the non-pencil cursor.

keen.c

diff --git a/keen.c b/keen.c
index a6a723894f8731d513be1ca411edccc7f41ec1b4..69aebc447d528a6f69124c23df157b26248ae2a0 100644 (file)
--- a/keen.c
+++ b/keen.c
@@ -1790,6 +1790,18 @@ static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues,
     draw_rect(dr, cx, cy, cw, ch,
              (tile & DF_HIGHLIGHT) ? COL_HIGHLIGHT : COL_BACKGROUND);
 
+    /* pencil-mode highlight */
+    if (tile & DF_HIGHLIGHT_PENCIL) {
+        int coords[6];
+        coords[0] = cx;
+        coords[1] = cy;
+        coords[2] = cx+cw/2;
+        coords[3] = cy;
+        coords[4] = cx;
+        coords[5] = cy+ch/2;
+        draw_polygon(dr, coords, 3, COL_HIGHLIGHT, COL_HIGHLIGHT);
+    }
+
     /*
      * Draw the corners of thick lines in corner-adjacent squares,
      * which jut into this square by one pixel.
@@ -1803,18 +1815,6 @@ static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues,
     if (x+1 < w && y+1 < w && dsf_canonify(clues->dsf, y*w+x) != dsf_canonify(clues->dsf, (y+1)*w+x+1))
        draw_rect(dr, tx+TILESIZE-1-2*GRIDEXTRA, ty+TILESIZE-1-2*GRIDEXTRA, GRIDEXTRA, GRIDEXTRA, COL_GRID);
 
-    /* pencil-mode highlight */
-    if (tile & DF_HIGHLIGHT_PENCIL) {
-        int coords[6];
-        coords[0] = cx;
-        coords[1] = cy;
-        coords[2] = cx+cw/2;
-        coords[3] = cy;
-        coords[4] = cx;
-        coords[5] = cy+ch/2;
-        draw_polygon(dr, coords, 3, COL_HIGHLIGHT, COL_HIGHLIGHT);
-    }
-
     /* Draw the box clue. */
     if (dsf_canonify(clues->dsf, y*w+x) == y*w+x) {
        long clue = clues->clues[y*w+x];