glazier

the original window manipulator
Log | Files | Refs | Submodules | README | LICENSE

commit 1a4aed801eee308cf67522115e8cedfb3d9e0172
parent 6c124a8138ad6a671c8f65cec5e4ea1bc419ac2d
Author: Willy Goiffon <dev@z3bra.org>
Date:   Fri, 18 Oct 2019 22:41:34 +0200

Add default event handler for mouse buttons

Diffstat:
glazier.c | 26+++++++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)

diff --git a/glazier.c b/glazier.c @@ -11,19 +11,33 @@ struct ev_callback_t { int (*handle)(xcb_generic_event_t *); }; -static int cb_create(xcb_generic_event_t *); static int ev_callback(xcb_generic_event_t *); +/* XCB events callbacks */ +static int cb_default(xcb_generic_event_t *); +static int cb_create(xcb_generic_event_t *); + int verbose = 1; xcb_connection_t *conn; xcb_screen_t *scrn; static const struct ev_callback_t cb[] = { - /* event, function */ - { XCB_CREATE_NOTIFY, cb_create }, + /* event, function */ + { XCB_CREATE_NOTIFY, cb_create }, + { XCB_BUTTON_PRESS, cb_default }, + { XCB_BUTTON_RELEASE, cb_default }, }; static int +cb_default(xcb_generic_event_t *ev) +{ + if (verbose) + fprintf(stderr, "event not handled: %d\n", ev->response_type); + + return 0; +} + +static int cb_create(xcb_generic_event_t *ev) { uint32_t val[2]; @@ -59,6 +73,12 @@ main (int argc, char *argv[]) wm_init_xcb(); wm_get_screen(); + /* grab mouse clicks for window movement */ + xcb_grab_button(conn, 1, scrn->root, + XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE, + XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC, XCB_NONE, XCB_NONE, + XCB_BUTTON_INDEX_ANY, MODMASK); + /* needed to get notified of windows creation */ wm_reg_event(scrn->root, XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY); xcb_flush(conn);