From d2436d9f3c005fb3a0bd32508f32e17acb0eb44d Mon Sep 17 00:00:00 2001 From: Bart House Date: Fri, 16 Nov 2018 21:48:00 -0800 Subject: [PATCH] Map curso blinking controlled by win32_cursorblink. --- win/win32/mhmap.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/win/win32/mhmap.c b/win/win32/mhmap.c index 233e02ed1..8e61aea8c 100644 --- a/win/win32/mhmap.c +++ b/win/win32/mhmap.c @@ -21,8 +21,6 @@ #define CURSOR_BLINK_INTERVAL 1000 // milliseconds #define CURSOR_HEIGHT 2 // pixels -#define CUSOR_BLINK FALSE // Set to true for a cursor that blinks - extern short glyph2tile[]; #define TILEBMP_X(ntile) \ @@ -59,7 +57,10 @@ typedef struct mswin_nethack_map_window { double monitorScale; /* from 96dpi to monitor dpi*/ boolean cursorOn; - int yCursor; /* height of cursor inback buffer in pixels */ + int yNoBlinkCursor; /* non-blinking cursor height inback buffer + in pixels */ + int yBlinkCursor; /* blinking cursor height inback buffer + in pixels */ int backWidth; /* back buffer width */ int backHeight; /* back buffer height */ @@ -132,10 +133,8 @@ mswin_init_map_window() mswin_apply_window_style(hWnd); -#if CURSOR_BLINK /* set cursor blink timer */ SetTimer(hWnd, 0, CURSOR_BLINK_INTERVAL, NULL); -#endif return hWnd; } @@ -283,11 +282,8 @@ mswin_map_stretch(HWND hWnd, LPSIZE map_size, BOOL redraw) data->yFrontTile = (int) ((double) data->yBackTile * data->frontScale); /* calcuate ASCII cursor height */ -#if CURSOR_BLINK - data->yCursor = (int) ((double) CURSOR_HEIGHT * data->backScale); -#else - data->yCursor = data->yBackTile; -#endif + data->yBlinkCursor = (int) ((double) CURSOR_HEIGHT * data->backScale); + data->yNoBlinkCursor = data->yBackTile; /* set map origin point */ data->map_orig.x = @@ -830,7 +826,8 @@ paintTile(PNHMapWindow data, int i, int j, RECT * rect) } #endif - if (i == data->xCur && j == data->yCur && data->cursorOn) + if (i == data->xCur && j == data->yCur && + (data->cursorOn || !win32_cursorblink)) DrawFocusRect(data->backBufferDC, rect); } @@ -897,12 +894,16 @@ paintGlyph(PNHMapWindow data, int i, int j, RECT * rect) SetTextColor(data->backBufferDC, OldFg); } - if (i == data->xCur && j == data->yCur && data->cursorOn) + if (i == data->xCur && j == data->yCur && + (data->cursorOn || !win32_cursorblink)) { + int yCursor = (win32_cursorblink ? data->yBlinkCursor : + data->yNoBlinkCursor); PatBlt(data->backBufferDC, - rect->left, rect->bottom - data->yCursor, + rect->left, rect->bottom - yCursor, rect->right - rect->left, - data->yCursor, + yCursor, DSTINVERT); + } } static void setGlyph(PNHMapWindow data, int i, int j, int fg, int bg)