From 96d7310b4a224d50aeb2e5e94031d14b9bd6daf5 Mon Sep 17 00:00:00 2001 From: okan Date: Sat, 14 Jun 2008 22:04:11 +0000 Subject: (mostly) proper xshape event support ok oga@ --- xevents.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'xevents.c') diff --git a/xevents.c b/xevents.c index fed91e6..e70d218 100644 --- a/xevents.c +++ b/xevents.c @@ -260,7 +260,6 @@ xev_handle_buttonrelease(struct xevent *xev, XEvent *ee) group_sticky_toggle_exit(cc); xev_register(xev); - } void @@ -354,6 +353,16 @@ out: xev_register(xev); } +void +xev_handle_shape(struct xevent *xev, XEvent *ee) +{ + XShapeEvent *sev = (XShapeEvent *) ee; + struct client_ctx *cc; + + if ((cc = client_find(sev->window)) != NULL) + client_do_shape(cc); +} + /* * X Event handling */ @@ -411,8 +420,10 @@ xev_handle_expose(struct xevent *xev, XEvent *ee) XExposeEvent *e = &ee->xexpose; struct client_ctx *cc; - if ((cc = client_find(e->window)) != NULL && e->count == 0) + if ((cc = client_find(e->window)) != NULL && e->count == 0) { client_draw_border(cc); + client_do_shape(cc); + } xev_register(xev); } @@ -478,7 +489,9 @@ xev_loop(void) case ClientMessage: ASSIGN1(xclient); break; - default: /* XXX - still need shape event support. */ + default: + if (e.type == Shape_ev) + xev_handle_shape(xev, &e); break; } -- cgit 1.4.1