diff --git a/ddraw.rc b/ddraw.rc index 22a7c86..cada6f5 100644 --- a/ddraw.rc +++ b/ddraw.rc @@ -4,7 +4,7 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 3 #define VERSION_BUILD 4 -#define VERSION_REVISION 4 +#define VERSION_REVISION 5 #define VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD, VERSION_REVISION #define VERSION_STRING ver_str(VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD, VERSION_REVISION) diff --git a/src/main.c b/src/main.c index e35cac3..09789bb 100644 --- a/src/main.c +++ b/src/main.c @@ -1499,11 +1499,34 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) } break; - //Workaround for invisible menu on Load/Save/Delete in Tiberian Sun case WM_PARENTNOTIFY: { - if (!ddraw->handlemouse && LOWORD(wParam) == WM_DESTROY) - redrawCount = 2; + if (!ddraw->handlemouse) + { + switch (LOWORD(wParam)) + { + case WM_DESTROY: //Workaround for invisible menu on Load/Save/Delete in Tiberian Sun + redrawCount = 2; + break; + case WM_LBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_XBUTTONDOWN: + { + if (!ddraw->devmode && !ddraw->locked) + { + int x = GET_X_LPARAM(lParam); + int y = GET_Y_LPARAM(lParam); + + ddraw->cursor.x = (x - ddraw->render.viewport.x) * ddraw->render.unScaleW; + ddraw->cursor.y = (y - ddraw->render.viewport.y) * ddraw->render.unScaleH; + + mouse_lock(); + } + break; + } + } + } break; } case WM_PAINT: