diff --git a/libs/event.c b/libs/event.c new file mode 100644 index 0000000..dc8ea51 --- /dev/null +++ b/libs/event.c @@ -0,0 +1,44 @@ +void +eventloop(void) +{ + XEvent ev; + + while (!XNextEvent(dpy, &ev)) { + if (XFilterEvent(&ev, win)) + continue; + switch(ev.type) { + case DestroyNotify: + if (ev.xdestroywindow.window != win) + break; + cleanup(); + exit(1); + case ButtonPress: + buttonpress(&ev); + break; + case Expose: + if (ev.xexpose.count == 0) + drw_map(drw, win, 0, 0, mw, mh); + break; + case FocusIn: + /* regrab focus from parent window */ + if (ev.xfocus.window != win) + grabfocus(); + break; + case KeyPress: + keypress(&ev); + break; + case SelectionNotify: + if (ev.xselection.property == utf8) + pastesel(); + break; + case VisibilityNotify: + if (ev.xvisibility.state != VisibilityUnobscured) + XRaiseWindow(dpy, win); + break; + } + + #if USEIMAGE + drawimage(); + #endif + } +} diff --git a/libs/event.h b/libs/event.h new file mode 100644 index 0000000..8b65a3e --- /dev/null +++ b/libs/event.h @@ -0,0 +1 @@ +static void eventloop(void);