Linux: Ignore events from old windows
This commit is contained in:
parent
d6ae5e2d45
commit
3c83a92a64
|
@ -184,6 +184,7 @@ void handleWarpEvent(XClientMessageEvent *event) {
|
||||||
static void doWarpPointer(int center_x, int center_y) {
|
static void doWarpPointer(int center_x, int center_y) {
|
||||||
XEvent warp_event;
|
XEvent warp_event;
|
||||||
warp_event.type = ClientMessage;
|
warp_event.type = ClientMessage;
|
||||||
|
warp_event.xclient.window = getCurrentWindow();
|
||||||
warp_event.xclient.message_type = getWarpAtom();
|
warp_event.xclient.message_type = getWarpAtom();
|
||||||
warp_event.xclient.format = 32;
|
warp_event.xclient.format = 32;
|
||||||
warp_event.xclient.data.l[0] = center_x;
|
warp_event.xclient.data.l[0] = center_x;
|
||||||
|
@ -316,7 +317,7 @@ static void doHandlePointerMotion(Window root_window, Window window, int root_x,
|
||||||
}
|
}
|
||||||
|
|
||||||
void handlePointerMotion(XMotionEvent *event) {
|
void handlePointerMotion(XMotionEvent *event) {
|
||||||
doHandlePointerMotion(event->root, event->window, event->x_root, event->y_root, event->x, event->y);
|
doHandlePointerMotion(event->root, getCurrentWindow(), event->x_root, event->y_root, event->x, event->y);
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_nPollMouse(JNIEnv * env, jclass clazz, jobject coord_buffer_obj, jobject button_buffer_obj) {
|
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_nPollMouse(JNIEnv * env, jclass clazz, jobject coord_buffer_obj, jobject button_buffer_obj) {
|
||||||
|
|
|
@ -246,12 +246,13 @@ static void checkInput(JNIEnv *env, jint extension, jint window_mode, jobject sa
|
||||||
|
|
||||||
void handleMessages(JNIEnv *env, jint extension, jint window_mode, jobject saved_gamma, jobject current_gamma, jobject saved_mode, jobject current_mode) {
|
void handleMessages(JNIEnv *env, jint extension, jint window_mode, jobject saved_gamma, jobject current_gamma, jobject saved_mode, jobject current_mode) {
|
||||||
XEvent event;
|
XEvent event;
|
||||||
/* Window win;
|
|
||||||
int revert_mode;*/
|
|
||||||
while (XPending(getDisplay()) > 0) {
|
while (XPending(getDisplay()) > 0) {
|
||||||
XNextEvent(getDisplay(), &event);
|
XNextEvent(getDisplay(), &event);
|
||||||
if (XFilterEvent(&event, None) == True)
|
if (XFilterEvent(&event, None) == True)
|
||||||
continue;
|
continue;
|
||||||
|
// Ignore events from old windows
|
||||||
|
if (event.xany.window != getCurrentWindow())
|
||||||
|
continue;
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
case ClientMessage:
|
case ClientMessage:
|
||||||
if (event.xclient.message_type == warp_atom) {
|
if (event.xclient.message_type == warp_atom) {
|
||||||
|
@ -259,16 +260,6 @@ void handleMessages(JNIEnv *env, jint extension, jint window_mode, jobject saved
|
||||||
} else if ((event.xclient.format == 32) && ((Atom)event.xclient.data.l[0] == delete_atom))
|
} else if ((event.xclient.format == 32) && ((Atom)event.xclient.data.l[0] == delete_atom))
|
||||||
closerequested = true;
|
closerequested = true;
|
||||||
break;
|
break;
|
||||||
/* case FocusOut:
|
|
||||||
XGetInputFocus(getDisplay(), &win, &revert_mode);
|
|
||||||
if (win != current_win) {
|
|
||||||
releaseInput();
|
|
||||||
focused = false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case FocusIn:
|
|
||||||
checkInput();
|
|
||||||
break;*/
|
|
||||||
case MapNotify:
|
case MapNotify:
|
||||||
dirty = true;
|
dirty = true;
|
||||||
minimized = false;
|
minimized = false;
|
||||||
|
|
Loading…
Reference in New Issue