glazier

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

commit 36c240625c4a17887b121140d42ea0ca98d1a106
parent 6b54c5c976df75c6e6522e090dfc0df970b03ec2
Author: Willy Goiffon <dev@z3bra.org>
Date:   Sat, 19 Oct 2019 00:32:40 +0200

Ungrab pointer and change cursor on mouse release

Diffstat:
config.def.h | 1+
glazier.c | 14++++++++++++--
2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/config.def.h b/config.def.h @@ -3,6 +3,7 @@ #define XHAIR_MOVE "hand1" #define XHAIR_SIZE "tcross" +#define XHAIR_DFLT "left_ptr" /* window borders */ int border = 8; diff --git a/glazier.c b/glazier.c @@ -105,6 +105,7 @@ cb_mouse_press(xcb_generic_event_t *ev) } xcb_flush(conn); + xcb_cursor_context_free(cx); return 0; } @@ -114,15 +115,24 @@ cb_mouse_release(xcb_generic_event_t *ev) { xcb_cursor_t p; xcb_cursor_context_t *cx; - xcb_grab_pointer_cookie_t c; - xcb_grab_pointer_reply_t *r; xcb_button_release_event_t *e; e = (xcb_button_release_event_t *)ev; if (verbose) fprintf(stderr, "mouse_release: 0x%08x\n", e->child); + if (xcb_cursor_context_new(conn, scrn, &cx) < 0) { + fprintf(stderr, "cannot instantiate cursor\n"); + exit(1); + } + + p = xcb_cursor_load_cursor(cx, XHAIR_DFLT); + xcb_change_window_attributes(conn, e->child, XCB_CW_CURSOR, &p); xcb_ungrab_pointer(conn, XCB_CURRENT_TIME); + + xcb_flush(conn); + xcb_cursor_context_free(cx); + return 0; }