fix cwm's current XShape support from Edd Barrett -thanks.

XShape events should be handled at some point.

ok oga@
This commit is contained in:
okan 2008-05-17 03:59:54 +00:00
parent 5034a77849
commit 9a58e74401
3 changed files with 25 additions and 15 deletions

View File

@ -355,6 +355,7 @@ struct client_ctx *client_mrunext(struct client_ctx *cc);
struct client_ctx *client_mruprev(struct client_ctx *cc);
void client_gethints(struct client_ctx *cc);
void client_freehints(struct client_ctx *cc);
void client_do_shape(struct client_ctx *);
void xev_handle_maprequest(struct xevent *, XEvent *);
void xev_handle_unmapnotify(struct xevent *, XEvent *);

View File

@ -139,21 +139,6 @@ client_new(Window win, struct screen_ctx *sc, int mapped)
DefaultVisual(X_Dpy, sc->which),
CWOverrideRedirect | CWBackPixel | CWEventMask, &pxattr);
if (Doshape) {
XRectangle *r;
int n, tmp;
XShapeSelectInput(X_Dpy, cc->win, ShapeNotifyMask);
r = XShapeGetRectangles(X_Dpy, cc->win, ShapeBounding,
&n, &tmp);
if (n > 1)
XShapeCombineShape(X_Dpy, cc->pwin, ShapeBounding,
0, 0, /* XXX border */
cc->win, ShapeBounding, ShapeSet);
XFree(r);
}
cc->active = 0;
client_draw_border(cc);
@ -188,6 +173,27 @@ client_new(Window win, struct screen_ctx *sc, int mapped)
return (cc);
}
void
client_do_shape(struct client_ctx *cc)
{
/* Windows not rectangular require more effort */
XRectangle *r;
int n, tmp;
if (Doshape) {
XShapeSelectInput(X_Dpy, cc->win, ShapeNotifyMask);
r = XShapeGetRectangles(X_Dpy, cc->win, ShapeBounding,
&n, &tmp);
if (n > 1)
XShapeCombineShape(X_Dpy, cc->pwin, ShapeBounding,
cc->bwidth, cc->bwidth, cc->win, ShapeBounding,
ShapeSet);
XFree(r);
}
}
int
client_delete(struct client_ctx *cc, int sendevent, int ignorewindow)
{
@ -458,6 +464,8 @@ client_draw_border(struct client_ctx *cc)
XClearWindow(X_Dpy, cc->pwin);
}
client_do_shape(cc);
}
u_long

1
grab.c
View File

@ -101,6 +101,7 @@ grab_sweep(struct client_ctx *cc)
XReparentWindow(X_Dpy, sc->menuwin, sc->rootwin, 0, 0);
xu_ptr_ungrab();
client_ptrwarp(cc);
client_do_shape(cc);
return;
}
}