From: <eli...@us...> - 2008-04-09 18:09:34
|
Revision: 2997 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=2997&view=rev Author: elias_naur Date: 2008-04-09 11:09:15 -0700 (Wed, 09 Apr 2008) Log Message: ----------- Linux: When parented, take focus on click Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxMouse.java trunk/LWJGL/src/native/linux/org_lwjgl_opengl_Display.c Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2008-04-08 18:03:20 UTC (rev 2996) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2008-04-09 18:09:15 UTC (rev 2997) @@ -50,6 +50,7 @@ final class LinuxDisplay implements DisplayImplementation { /* X11 constants */ + public final static int CurrentTime = 0; public final static int GrabSuccess = 0; public final static int AutoRepeatModeOff = 0; public final static int AutoRepeatModeOn = 1; @@ -620,7 +621,7 @@ return peer_info; } - private native static void setInputFocus(long display, long window); + static native void setInputFocus(long display, long window, long time); private void processEvents() { while (LinuxEvent.getPending(getDisplay()) > 0) { @@ -754,7 +755,7 @@ grabServer(getDisplay()); try { if (nGetInputFocus(getDisplay()) == current_focus) - setInputFocus(getDisplay(), getWindow()); + setInputFocus(getDisplay(), getWindow(), CurrentTime); } finally { ungrabServer(getDisplay()); } Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxMouse.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxMouse.java 2008-04-08 18:03:20 UTC (rev 2996) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxMouse.java 2008-04-09 18:09:15 UTC (rev 2997) @@ -280,6 +280,8 @@ case LinuxEvent.ButtonPress: /* Fall through */ case LinuxEvent.ButtonRelease: handleButtonEvent(grab, event.getButtonTime(), event.getButtonType(), (byte)event.getButtonButton()); + if (Display.getParent() != null) + LinuxDisplay.setInputFocus(display, window, event.getButtonTime()); return true; case LinuxEvent.MotionNotify: handlePointerMotion(grab, warp_pointer, event.getButtonTime(), event.getButtonRoot(), event.getButtonXRoot(), event.getButtonYRoot(), event.getButtonX(), event.getButtonY()); Modified: trunk/LWJGL/src/native/linux/org_lwjgl_opengl_Display.c =================================================================== --- trunk/LWJGL/src/native/linux/org_lwjgl_opengl_Display.c 2008-04-08 18:03:20 UTC (rev 2996) +++ trunk/LWJGL/src/native/linux/org_lwjgl_opengl_Display.c 2008-04-09 18:09:15 UTC (rev 2997) @@ -338,10 +338,10 @@ XUngrabServer(disp); } -JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_setInputFocus(JNIEnv *env, jclass clazz, jlong display, jlong window_ptr) { +JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_setInputFocus(JNIEnv *env, jclass clazz, jlong display, jlong window_ptr, jlong time) { Display *disp = (Display *)(intptr_t)display; Window window = (Window)window_ptr; - XSetInputFocus(disp, window, RevertToParent, CurrentTime); + XSetInputFocus(disp, window, RevertToParent, time); } JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_LinuxDisplay_nCreateWindow(JNIEnv *env, jclass clazz, jlong display, jint screen, jobject peer_info_handle, jobject mode, jint window_mode, jint x, jint y, jboolean undecorated, jlong parent_handle) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |