diff -r 7ed19ada219e code/nel/src/3d/driver/opengl/driver_opengl_window.cpp --- a/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp Tue Oct 05 21:36:58 2010 +0200 +++ b/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp Sat Oct 09 14:40:31 2010 +0200 @@ -184,11 +184,14 @@ // nlinfo("3D: glop %d %d", e.type, e.xmap.window); + // Process the message by the emitter + driver->_EventEmitter.processMessage(e); + // disable menu (default ALT-F4 behavior is disabled) switch(e.type) { case DestroyNotify: - + case ClientMessage: if(driver && driver->ExitFunc) { driver->ExitFunc(); @@ -240,9 +243,8 @@ break; default: - - // Process the message by the emitter - return driver->_EventEmitter.processMessage(e); + break; + } return true; @@ -973,6 +975,8 @@ // XMapRaised (_dpy, _win); // XMapWindow(_dpy, _win); + Atom wmDeleteMessage = XInternAtom(_dpy, "WM_DELETE_WINDOW", False); + XSetWMProtocols(_dpy, _win, &wmDeleteMessage, 1); _EventEmitter.init (_dpy, _win, this); diff -r 7ed19ada219e code/nel/src/3d/driver/opengl/unix_event_emitter.cpp --- a/code/nel/src/3d/driver/opengl/unix_event_emitter.cpp Tue Oct 05 21:36:58 2010 +0200 +++ b/code/nel/src/3d/driver/opengl/unix_event_emitter.cpp Sat Oct 09 14:40:31 2010 +0200 @@ -16,6 +16,7 @@ #include "stdopengl.h" #include "unix_event_emitter.h" +#include "driver_opengl.h" #if defined(NL_OS_UNIX) && !defined(NL_OS_MAC) @@ -590,6 +591,11 @@ // XIM server has crashed createIM(); break; + case ClientMessage: + { + server->postEvent (new CEventDestroyWindow (this)); + break; + } default: // nlinfo("UnknownEvent"); // XtDispatchEvent(&event);