From 473cb1f4ed86ec7337f40eea4bdd55298524d9e2 Mon Sep 17 00:00:00 2001 From: Richard Grenville Date: Sat, 10 Nov 2012 11:41:01 +0800 Subject: [PATCH] Bug fix: Client window event mask not restored in map_win() - Fix a bug that client window event masks are not restored in map_win(), causing further property changes to be ignored, for example. - Misc changes. --- compton.c | 7 +++---- compton.h | 7 ++++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/compton.c b/compton.c index 69aeddd36..079f87154 100644 --- a/compton.c +++ b/compton.c @@ -1979,10 +1979,9 @@ map_win(Display *dpy, Window id, mark_client_win(dpy, w, cw); } } - else if (opts.frame_opacity) { - // Refetch frame extents just in case it changes when the window is - // unmapped - get_frame_extents(dpy, w, w->client_win); + else { + // Re-mark client window here + mark_client_win(dpy, w, w->client_win); } // Workaround for _NET_WM_WINDOW_TYPE for Openbox menus, which is diff --git a/compton.h b/compton.h index b66e77303..5d3ad2611 100644 --- a/compton.h +++ b/compton.h @@ -343,6 +343,7 @@ typedef struct _win { struct _win *prev_trans; } win; +/// VSync modes. typedef enum { VSYNC_NONE, VSYNC_DRM, @@ -354,7 +355,7 @@ typedef int (*f_WaitVideoSync) (int, int, unsigned *); typedef int (*f_GetVideoSync) (unsigned *); #endif -typedef struct _options { +typedef struct { // General char *display; /// Whether to try to detect WM windows and mark them as focused. @@ -958,6 +959,10 @@ wid_bounding_shaped(Display *dpy, Window wid) { return False; } +/** + * Determine if a window change affects reg_ignore and set + * reg_ignore_expire accordingly. + */ static inline void update_reg_ignore_expire(const win *w) { if (w->to_paint && WINDOW_SOLID == w->mode)