Update of /cvsroot/java-game-lib/LWJGL/src/native/win32
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10532/src/native/win32
Modified Files:
org_lwjgl_opengl_Display.c
Log Message:
Win32: Confine cursor to fullscreen window to prevent native cursors to stray outside borders in multi-monitor setups
Index: org_lwjgl_opengl_Display.c
===================================================================
RCS file: /cvsroot/java-game-lib/LWJGL/src/native/win32/org_lwjgl_opengl_Display.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- org_lwjgl_opengl_Display.c 23 Feb 2005 11:42:04 -0000 1.17
+++ org_lwjgl_opengl_Display.c 16 Mar 2005 10:58:58 -0000 1.18
@@ -71,6 +71,19 @@
return display_hwnd;
}
+static void setupCursorClipping() {
+ RECT hwnd_client;
+ if (display_hwnd != NULL && GetWindowRect(display_hwnd, &hwnd_client) != 0) {
+ if (ClipCursor(&hwnd_client) == 0)
+ printfDebug("ClipCursor failed\n");
+ }
+}
+
+static void resetDisplayModeAndClipping(JNIEnv *env) {
+ resetDisplayMode(env);
+ ClipCursor(NULL);
+}
+
/*
* Called when the application is alt-tabbed to or from
*/
@@ -92,7 +105,7 @@
did_maximize = true;
} else if (isFullScreen) {
ShowWindow(display_hwnd, SW_SHOWMINNOACTIVE);
- resetDisplayMode(NULL);
+ resetDisplayModeAndClipping(NULL);
}
inAppActivate = false;
}
@@ -114,6 +127,8 @@
int xPos;
int yPos;
int dwheel;
+ if (isFullScreen && !isMinimized && isFocused)
+ setupCursorClipping();
switch (msg) {
// disable screen saver and monitor power down messages which wreak havoc
case WM_SYSCOMMAND:
@@ -319,6 +334,8 @@
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Win32Display_destroyWindow(JNIEnv *env, jobject self) {
closeWindow(&display_hwnd, &display_hdc);
+ if (isFullScreen)
+ ClipCursor(NULL);
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Win32Display_switchDisplayMode(JNIEnv *env, jobject self, jobject mode) {
@@ -326,7 +343,7 @@
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Win32Display_resetDisplayMode(JNIEnv *env, jobject self) {
- resetDisplayMode(env);
+ resetDisplayModeAndClipping(env);
}
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_Win32Display_getGammaRampLength(JNIEnv *env, jobject self) {
|