Compositor detection

This commit is contained in:
Nikita Zlobin 2020-05-08 06:23:10 +05:00
parent 0e35c6acb0
commit 296cea499c

View File

@ -135,6 +135,8 @@ static void x_win_round_corners(struct window_x11 *win, const int rad)
void x_display_surface(cairo_surface_t *srf, struct window_x11 *win, const struct dimensions *dim)
{
char astr[sizeof("_NET_WM_CM_S") / sizeof(char) + 8];
x_win_move(win, dim->x, dim->y, dim->w, dim->h);
cairo_xlib_surface_set_size(win->root_surface, dim->w, dim->h);
@ -145,8 +147,21 @@ void x_display_surface(cairo_surface_t *srf, struct window_x11 *win, const struc
cairo_paint(win->c_ctx);
cairo_show_page(win->c_ctx);
if (settings.corner_radius != 0)
sprintf (astr, "_NET_WM_CM_S%i", win->cur_screen);
Atom cm_sel = XInternAtom (xctx.dpy, astr, true);
if (settings.corner_radius != 0 && XGetSelectionOwner(xctx.dpy, cm_sel) == None)
x_win_round_corners(win, dim->corner_radius);
else
{
XRectangle rect = {
.x = 0,
.y = 0,
.width = dim->w,
.height = dim->h };
XShapeCombineRectangles(xctx.dpy, win->xwin, ShapeBounding, 0, 0, &rect, 1, ShapeSet, 1);
XShapeSelectInput(xctx.dpy,
win->xwin, ShapeNotifyMask);
}
XFlush(xctx.dpy);