mirror of
https://github.com/leahneukirchen/cwm.git
synced 2023-08-10 21:13:12 +03:00
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:
parent
5034a77849
commit
9a58e74401
1
calmwm.h
1
calmwm.h
@ -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 *);
|
||||
|
38
client.c
38
client.c
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user