Fix arrow highlighting in mono-mode XB
authorH.G. Muller <h.g.muller@hccnet.nl>
Wed, 21 Dec 2011 21:00:26 +0000 (22:00 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Tue, 27 Dec 2011 11:51:20 +0000 (12:51 +0100)
Draw a line around it in darkSquare color in monoMode.

xboard.c

index 0424641..e777ea9 100644 (file)
--- a/xboard.c
+++ b/xboard.c
@@ -1943,7 +1943,7 @@ CreateAnyPieces()
 #if HAVE_LIBXPM
     if (appData.monoMode && // [HGM] no sense to go on to certain doom
        (appData.bitmapDirectory == NULL || appData.bitmapDirectory[0] == NULLCHAR))
 #if HAVE_LIBXPM
     if (appData.monoMode && // [HGM] no sense to go on to certain doom
        (appData.bitmapDirectory == NULL || appData.bitmapDirectory[0] == NULLCHAR))
-           appData.bitmapDirectory = DEF_BITMAP_DIR;
+           appData.bitmapDirectory = strdup(DEF_BITMAP_DIR);
 
     if (appData.bitmapDirectory[0] != NULLCHAR) {
       CreatePieces();
 
     if (appData.bitmapDirectory[0] != NULLCHAR) {
       CreatePieces();
@@ -8897,7 +8897,7 @@ void SquareToPos(int rank, int file, int *x, int *y)
 /* Draw an arrow between two points using current settings */
 void DrawArrowBetweenPoints( int s_x, int s_y, int d_x, int d_y )
 {
 /* Draw an arrow between two points using current settings */
 void DrawArrowBetweenPoints( int s_x, int s_y, int d_x, int d_y )
 {
-    XPoint arrow[7];
+    XPoint arrow[8];
     double dx, dy, j, k, x, y;
 
     if( d_x == s_x ) {
     double dx, dy, j, k, x, y;
 
     if( d_x == s_x ) {
@@ -8994,6 +8994,7 @@ void DrawArrowBetweenPoints( int s_x, int s_y, int d_x, int d_y )
     }
 
     XFillPolygon(xDisplay, xBoardWindow, highlineGC, arrow, 7, Nonconvex, CoordModeOrigin);
     }
 
     XFillPolygon(xDisplay, xBoardWindow, highlineGC, arrow, 7, Nonconvex, CoordModeOrigin);
+    if(appData.monoMode) arrow[7] = arrow[0], XDrawLines(xDisplay, xBoardWindow, darkSquareGC, arrow, 8, CoordModeOrigin);
 //    Polygon( hdc, arrow, 7 );
 }
 
 //    Polygon( hdc, arrow, 7 );
 }