|
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.
|