From d7c8cde0a3af82221b4a28689de031bc2316738a Mon Sep 17 00:00:00 2001 From: Toni Spets Date: Fri, 26 Nov 2010 21:44:31 +0200 Subject: [PATCH] 640x480 mode cursor boundary hack --- mouse.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/mouse.c b/mouse.c index 5daf9f5..1a83df0 100644 --- a/mouse.c +++ b/mouse.c @@ -24,6 +24,7 @@ #define MAX_HOOKS 16 BOOL mouse_active = FALSE; +int real_height = 0; struct hook { char name[32]; void *func; }; struct hack @@ -59,7 +60,15 @@ BOOL WINAPI fake_GetCursorPos(LPPOINT lpPoint) if(ddraw->cursor.x < 0) ddraw->cursor.x = 0; if(ddraw->cursor.y < 0) ddraw->cursor.y = 0; if(ddraw->cursor.x > ddraw->width-1) ddraw->cursor.x = ddraw->width-1; - if(ddraw->cursor.y > ddraw->height-1) ddraw->cursor.y = ddraw->height-1; + + if(real_height) + { + if(ddraw->cursor.y > real_height-1) ddraw->cursor.y = real_height-1; + } + else + { + if(ddraw->cursor.y > ddraw->height-1) ddraw->cursor.y = ddraw->height-1; + } if(pt.x != ddraw->center.x || pt.y != ddraw->center.y) { @@ -74,6 +83,11 @@ BOOL WINAPI fake_GetCursorPos(LPPOINT lpPoint) BOOL WINAPI fake_ClipCursor(const RECT *lpRect) { + if(lpRect) + { + /* hack for 640x480 mode */ + real_height = lpRect->bottom; + } return TRUE; }