Catch window close event

This commit is contained in:
josh committed 2017-10-31 20:40:46 -04:00
1 parent 54bbfefcf4
commit 911eda3e37
4 files changed
+28 -4

No files matched your search

+1 -3
View File
@@ -167,11 +167,9 @@ void Window::handle_event(Jtk_Event & event)
{
switch (event.type)
{
#if 0
case SDL_QUIT:
case JTK_EVENT_WINDOW_CLOSE:
m_exit_requested = true;
break;
#endif
case JTK_EVENT_KEY_PRESS:
#if 0
+22
View File
@@ -329,6 +329,25 @@ static bool ProcessConfigureEvent(XEvent * x_event, Jtk_Event * event)
return true;
}
/**
* Process an X ClientMessage event.
*
* @param x_event
* Pointer to the X event.
* @param event
* Pointer to the Jtk event.
*/
static bool ProcessXClientMessageEvent(XEvent * x_event, Jtk_Event * event)
{
Atom wm_delete_window_atom = XInternAtom(g_display, "WM_DELETE_WINDOW", False);
if (x_event->xclient.data.l[0] == (long)wm_delete_window_atom)
{
event->type = JTK_EVENT_WINDOW_CLOSE;
return true;
}
return false;
}
/**
* Process an X event.
*
@@ -373,6 +392,9 @@ static bool ProcessXEvent(XEvent * x_event, Jtk_Event * event)
case ConfigureNotify:
return ProcessConfigureEvent(x_event, event);
case ClientMessage:
return ProcessXClientMessageEvent(x_event, event);
case MappingNotify:
XRefreshKeyboardMapping(&x_event->xmapping);
return false;
+1 -1
View File
@@ -4,7 +4,7 @@
#include <stdint.h>
#include <stdlib.h>
#define JTK_EVENT_CLOSE_WINDOW 1u
#define JTK_EVENT_WINDOW_CLOSE 1u
#define JTK_EVENT_WINDOW_EXPOSE 2u
#define JTK_EVENT_KEY_PRESS 3u
#define JTK_EVENT_KEY_RELEASE 4u
+4
View File
@@ -29,6 +29,10 @@ void * Jtk_CreateWindow()
return nullptr;
}
/* Disable the window close button. */
Atom wm_delete_window_atom = XInternAtom(g_display, "WM_DELETE_WINDOW", False);
XSetWMProtocols(g_display, window, &wm_delete_window_atom, 1);
return (void *)window;
}