Skip to content

Commit

Permalink
Bug fix: Issue #23, notify-osd not rendered
Browse files Browse the repository at this point in the history
More details in the issue report.

- Add ClientMessage detection to ev_name() and ev_window(), although we
  don't actually handle the event.
  • Loading branch information
richardgv committed Sep 18, 2012
1 parent 1437e40 commit e7da888
Showing 1 changed file with 22 additions and 19 deletions.
41 changes: 22 additions & 19 deletions src/compton.c
Original file line number Diff line number Diff line change
Expand Up @@ -1055,6 +1055,10 @@ paint_all(Display *dpy, XserverRegion region) {
continue;
}

#ifdef DEBUG_REPAINT
printf(" %#010lx", w->id);
#endif

if (!w->picture) {
XRenderPictureAttributes pa;
XRenderPictFormat *format;
Expand All @@ -1074,10 +1078,6 @@ paint_all(Display *dpy, XserverRegion region) {
dpy, draw, format, CPSubwindowMode, &pa);
}

#ifdef DEBUG_REPAINT
printf(" %#010lx", w->id);
#endif

if (!w->border_size) {
w->border_size = border_size(dpy, w);
}
Expand Down Expand Up @@ -1433,22 +1433,21 @@ map_win(Display *dpy, Window id,
w->id, wintype_name(w->window_type));
#endif

/* select before reading the property
so that no property changes are lost */
if (!override_redirect) {
// Detect client window here instead of in add_win() as the client
// window should have been prepared at this point
if (!(w->client_win)) {
Window cw = find_client_win(dpy, w->id);
if (cw) {
mark_client_win(dpy, w, cw);
}
}
// Call XSelectInput() before reading properties so that no property
// changes are lost
XSelectInput(dpy, id, determine_evmask(dpy, id, WIN_EVMODE_FRAME));

// Notify compton when the shape of a window changes
if (shape_exists) {
XShapeSelectInput(dpy, id, ShapeNotifyMask);
}

XSelectInput(dpy, id, determine_evmask(dpy, id, WIN_EVMODE_FRAME));
// Notify compton when the shape of a window changes
if (shape_exists) {
XShapeSelectInput(dpy, id, ShapeNotifyMask);
// Detect client window here instead of in add_win() as the client
// window should have been prepared at this point
if (!(w->client_win)) {
Window cw = find_client_win(dpy, w->id);
if (cw) {
mark_client_win(dpy, w, cw);
}
}

Expand Down Expand Up @@ -2247,6 +2246,8 @@ ev_name(XEvent *ev) {
return "Expose";
case PropertyNotify:
return "PropertyNotify";
case ClientMessage:
return "ClientMessage";
default:
if (ev->type == damage_event + XDamageNotify) {
return "Damage";
Expand Down Expand Up @@ -2284,6 +2285,8 @@ ev_window(XEvent *ev) {
return ev->xexpose.window;
case PropertyNotify:
return ev->xproperty.window;
case ClientMessage:
return ev->xclient.window;
default:
if (ev->type == damage_event + XDamageNotify) {
return ((XDamageNotifyEvent *)ev)->drawable;
Expand Down

0 comments on commit e7da888

Please sign in to comment.