Windows: Only clip mouse to window borders if the lwjgl window is the foreground window

This commit is contained in:
Elias Naur 2008-10-27 14:04:12 +00:00
parent 984c5a4e81
commit d464876fe0
2 changed files with 9 additions and 1 deletions

View File

@ -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) {

View File

@ -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();
}