Event loop
This commit is contained in:
parent
d3371da3fc
commit
05eac82d7e
27
main.c
27
main.c
@ -1,6 +1,7 @@
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
@ -10,7 +11,31 @@ int main()
|
||||
XMapWindow(display, window);
|
||||
XFlush(display);
|
||||
|
||||
for(;;) { sleep(1); }
|
||||
Atom WM_DELETE_WINDOW = XInternAtom(display, "WM_DELETE_WINDOW", False);
|
||||
if(!XSetWMProtocols(display, window, &WM_DELETE_WINDOW, 1))
|
||||
{
|
||||
printf("Couldn't register WM_DELETE_WINDOW property \n");
|
||||
}
|
||||
|
||||
int is_open = 1;
|
||||
while(is_open)
|
||||
{
|
||||
XEvent general_event = {};
|
||||
XNextEvent(display, &general_event);
|
||||
|
||||
switch(general_event.type)
|
||||
{
|
||||
case ClientMessage:
|
||||
{
|
||||
XClientMessageEvent *event = (XClientMessageEvent *) &general_event;
|
||||
if((Atom)event->data.l[0] == WM_DELETE_WINDOW) {
|
||||
XDestroyWindow(display, window);
|
||||
is_open = 0;
|
||||
printf("Window destroyed \n");
|
||||
}
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user