From 200d91d042a73c5844bccebbd80b5bee4c8cf577 Mon Sep 17 00:00:00 2001 From: Alessandro Iezzi Date: Mon, 22 May 2023 00:17:28 +0200 Subject: Add handlers to mouse and keyboard events --- src/application.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/application.c') diff --git a/src/application.c b/src/application.c index fd99780..8126c5b 100644 --- a/src/application.c +++ b/src/application.c @@ -4,6 +4,8 @@ #include #include #include +#include +#include #include #include #include "application.h" @@ -59,6 +61,8 @@ cherry_application_main_loop(CherryApplication *app) while (finish == 0) { XNextEvent(app->display, &event); + CherryEvent evt; + switch (event.type) { case ClientMessage: atom_name = XGetAtomName(app->display, (Atom) event.xclient.data.l[0]); @@ -67,20 +71,34 @@ cherry_application_main_loop(CherryApplication *app) /* Exit from loop */ finish = 1; } else if (strcmp("WM_DELETE_WINDOW", atom_name) == 0) { - dispatch_event(app, event.xclient.window, DELETE_WINDOW); + evt = cherry_event_create(NULL, + event.xclient.window, + WINDOW_DELETED); } XFree(atom_name); break; case Expose: + evt = cherry_event_create(event.xclient.display, + event.xclient.window, + WINDOW_EXPOSED); break; case MappingNotify: + XRefreshKeyboardMapping(&event.xmapping); break; case ButtonPress: + evt = cherry_event_mouse_create(event.xbutton.display, + event.xbutton.window, + MOUSE_BUTTON_PRESSED, + event.xbutton.x, + event.xbutton.y); break; case KeyPress: + evt = cherry_event_key_create(KEY_PRESSED, event.xkey); break; } + + dispatch_event(app, evt, event); } } -- cgit v1.2.3