There seems to be some odd behaviour when GTK is asked to draw an
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 28 Aug 2005 13:52:58 +0000 (13:52 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 28 Aug 2005 13:52:58 +0000 (13:52 +0000)
outline polygon with a clipping rectangle active. I don't know or
care whether this is GTK or my X server or what, but I'm working
around it by drawing the lines myself, which seems to sort it out.

git-svn-id: svn://svn.tartarus.org/sgt/puzzles@6227 cda61777-01e9-0310-a592-d414129be87e

gtk.c

diff --git a/gtk.c b/gtk.c
index b72752a..1cf5136 100644 (file)
--- a/gtk.c
+++ b/gtk.c
@@ -373,7 +373,17 @@ void gtk_draw_poly(void *handle, int *coords, int npoints,
     }
     assert(outlinecolour >= 0);
     gdk_gc_set_foreground(fe->gc, &fe->colours[outlinecolour]);
-    gdk_draw_polygon(fe->pixmap, fe->gc, FALSE, points, npoints);
+
+    /*
+     * In principle we ought to be able to use gdk_draw_polygon for
+     * the outline as well. In fact, it turns out to interact badly
+     * with a clipping region, for no terribly obvious reason, so I
+     * draw the outline as a sequence of lines instead.
+     */
+    for (i = 0; i < npoints; i++)
+       gdk_draw_line(fe->pixmap, fe->gc,
+                     points[i].x, points[i].y,
+                     points[(i+1)%npoints].x, points[(i+1)%npoints].y);
 
     sfree(points);
 }