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.
This commit is contained in:
Richard Grenville 2012-11-10 11:41:01 +08:00
parent 59e54b0665
commit aaeafbd19d
2 changed files with 9 additions and 5 deletions

View File

@ -1979,10 +1979,9 @@ map_win(Display *dpy, Window id,
mark_client_win(dpy, w, cw); mark_client_win(dpy, w, cw);
} }
} }
else if (opts.frame_opacity) { else {
// Refetch frame extents just in case it changes when the window is // Re-mark client window here
// unmapped mark_client_win(dpy, w, w->client_win);
get_frame_extents(dpy, w, w->client_win);
} }
// Workaround for _NET_WM_WINDOW_TYPE for Openbox menus, which is // Workaround for _NET_WM_WINDOW_TYPE for Openbox menus, which is

View File

@ -343,6 +343,7 @@ typedef struct _win {
struct _win *prev_trans; struct _win *prev_trans;
} win; } win;
/// VSync modes.
typedef enum { typedef enum {
VSYNC_NONE, VSYNC_NONE,
VSYNC_DRM, VSYNC_DRM,
@ -354,7 +355,7 @@ typedef int (*f_WaitVideoSync) (int, int, unsigned *);
typedef int (*f_GetVideoSync) (unsigned *); typedef int (*f_GetVideoSync) (unsigned *);
#endif #endif
typedef struct _options { typedef struct {
// General // General
char *display; char *display;
/// Whether to try to detect WM windows and mark them as focused. /// 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; return False;
} }
/**
* Determine if a window change affects reg_ignore and set
* reg_ignore_expire accordingly.
*/
static inline void static inline void
update_reg_ignore_expire(const win *w) { update_reg_ignore_expire(const win *w) {
if (w->to_paint && WINDOW_SOLID == w->mode) if (w->to_paint && WINDOW_SOLID == w->mode)