summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Lutz <michi@icosahedron.de>2021-01-16 16:31:08 +0100
committerMichael Lutz <michi@icosahedron.de>2021-01-17 19:57:36 +0100
commit7415964a4df4ff1618fdc251401c208112aa0b40 (patch)
tree9cd6ac7bea9a39eda6a13b2468a7c0b35e2c93f9
parent40d5fe1631ca59080ec7001b621526cbc9a26504 (diff)
downloadopenttd-7415964a4df4ff1618fdc251401c208112aa0b40.tar.xz
Codechange: [Win32] Remove Windows 95 specific mouse tracking work-around.
-rw-r--r--src/video/win32_v.cpp49
1 files changed, 7 insertions, 42 deletions
diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp
index e7e89fd73..a9dbd8589 100644
--- a/src/video/win32_v.cpp
+++ b/src/video/win32_v.cpp
@@ -39,9 +39,6 @@
#define PM_QS_INPUT 0x20000
#endif
-typedef BOOL (WINAPI *PFNTRACKMOUSEEVENT)(LPTRACKMOUSEEVENT lpEventTrack);
-static PFNTRACKMOUSEEVENT _pTrackMouseEvent = nullptr;
-
static struct {
HWND main_wnd; ///< Handle to system window.
HBITMAP dib_sect; ///< System bitmap object referencing our rendering buffer.
@@ -229,31 +226,6 @@ int RedrawScreenDebug()
}
#endif
-/* Windows 95 will not have a WM_MOUSELEAVE message, so define it if needed */
-#if !defined(WM_MOUSELEAVE)
-#define WM_MOUSELEAVE 0x02A3
-#endif
-#define TID_POLLMOUSE 1
-#define MOUSE_POLL_DELAY 75
-
-static void CALLBACK TrackMouseTimerProc(HWND hwnd, UINT msg, UINT_PTR event, DWORD time)
-{
- RECT rc;
- POINT pt;
-
- /* Get the rectangle of our window and translate it to screen coordinates.
- * Compare this with the current screen coordinates of the mouse and if it
- * falls outside of the area or our window we have left the window. */
- GetClientRect(hwnd, &rc);
- MapWindowPoints(hwnd, HWND_DESKTOP, (LPPOINT)(LPRECT)&rc, 2);
- GetCursorPos(&pt);
-
- if (!PtInRect(&rc, pt) || (WindowFromPoint(pt) != hwnd)) {
- KillTimer(hwnd, event);
- PostMessage(hwnd, WM_MOUSELEAVE, 0, 0L);
- }
-}
-
/**
* Instantiate a new window.
* @param full_screen Whether to make a full screen window or not.
@@ -633,7 +605,7 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
switch (msg) {
case WM_CREATE:
- SetTimer(hwnd, TID_POLLMOUSE, MOUSE_POLL_DELAY, TrackMouseTimerProc);
+ _cursor.in_window = false; // Win32 has mouse tracking.
SetCompositionPos(hwnd);
_imm_props = ImmGetProperty(GetKeyboardLayout(0), IGP_PROPERTY);
break;
@@ -730,16 +702,12 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
* tracking the mouse for exiting the window */
if (!_cursor.in_window) {
_cursor.in_window = true;
- if (_pTrackMouseEvent != nullptr) {
- TRACKMOUSEEVENT tme;
- tme.cbSize = sizeof(tme);
- tme.dwFlags = TME_LEAVE;
- tme.hwndTrack = hwnd;
-
- _pTrackMouseEvent(&tme);
- } else {
- SetTimer(hwnd, TID_POLLMOUSE, MOUSE_POLL_DELAY, TrackMouseTimerProc);
- }
+ TRACKMOUSEEVENT tme;
+ tme.cbSize = sizeof(tme);
+ tme.dwFlags = TME_LEAVE;
+ tme.hwndTrack = hwnd;
+
+ TrackMouseEvent(&tme);
}
if (_cursor.fix_at) {
@@ -1024,9 +992,6 @@ static void RegisterWndClass()
registered = true;
if (!RegisterClass(&wnd)) usererror("RegisterClass failed");
-
- /* Dynamically load mouse tracking, as it doesn't exist on Windows 95. */
- _pTrackMouseEvent = (PFNTRACKMOUSEEVENT)GetProcAddress(GetModuleHandle(_T("User32")), "TrackMouseEvent");
}
}