diff --git a/src/java/org/lwjgl/opengl/WindowsDisplay.java b/src/java/org/lwjgl/opengl/WindowsDisplay.java index 246b50c9..d99885fd 100644 --- a/src/java/org/lwjgl/opengl/WindowsDisplay.java +++ b/src/java/org/lwjgl/opengl/WindowsDisplay.java @@ -511,7 +511,11 @@ final class WindowsDisplay implements DisplayImplementation { private static native long getDC(long hwnd); private static native long getDesktopWindow(); + private static native long getForegroundWindow(); + static void centerCursor(long hwnd) { + if (getForegroundWindow() != hwnd) + return; getGlobalClientRect(hwnd, rect); int local_offset_x = rect.left; int local_offset_y = rect.top; @@ -721,7 +725,7 @@ final class WindowsDisplay implements DisplayImplementation { } private void updateClipping() { - if ((isFullscreen || (mouse != null && mouse.isGrabbed())) && !isMinimized && isFocused) { + if ((isFullscreen || (mouse != null && mouse.isGrabbed())) && !isMinimized && isFocused && getForegroundWindow() == getHwnd()) { try { setupCursorClipping(getHwnd()); } catch (LWJGLException e) { diff --git a/src/native/windows/org_lwjgl_opengl_Display.c b/src/native/windows/org_lwjgl_opengl_Display.c index 3f7e8501..7e9a0797 100644 --- a/src/native/windows/org_lwjgl_opengl_Display.c +++ b/src/native/windows/org_lwjgl_opengl_Display.c @@ -198,6 +198,10 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsDisplay_clientToScreen(JNIEn buffer[1] = point.y; } +JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_WindowsDisplay_getForegroundWindow(JNIEnv *env, jclass unused) { + return (INT_PTR)GetForegroundWindow(); +} + JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_WindowsDisplay_getDesktopWindow(JNIEnv *env, jclass unused) { return (INT_PTR)GetDesktopWindow(); }