diff options
Diffstat (limited to 'src/main/ui/x11/ui.c')
-rw-r--r-- | src/main/ui/x11/ui.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/main/ui/x11/ui.c b/src/main/ui/x11/ui.c index fc59e4e..69bd5be 100644 --- a/src/main/ui/x11/ui.c +++ b/src/main/ui/x11/ui.c @@ -33,6 +33,7 @@ static int close_window = 0; void (*on_loop_event)(); void (*on_mouse_press_event)(); +void (*on_generic_event)(int); void cleanup(void); @@ -143,6 +144,14 @@ ui_on_mouse_release(XEvent event) if (event.type != ButtonRelease) return; } +static void +ui_on_generic_event(XEvent event) +{ + if (on_generic_event != NULL) { + on_generic_event(event.type); + } +} + void ui_set_loop_listener(void (*loop_event)()) { @@ -156,12 +165,19 @@ ui_set_mouse_press_listener(void (*mouse_press_event)()) } void +ui_set_generic_listener(void (*generic_event)(int type)) +{ + on_generic_event = generic_event; +} + +void ui_loop(void) { XEvent event; while (!close_window) { while (XPending(display)) { XNextEvent(display, &event); + ui_on_generic_event(event); ui_on_expose(event); ui_on_resize(event); ui_on_keypress(event); |