Skip to content

Commit 249c376

Browse files
committed
make management of override_redirect windows configurable from ruby
1 parent 9e894d0 commit 249c376

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

xlib_ruby/ext/x11.c

+6-2
Original file line numberDiff line numberDiff line change
@@ -376,8 +376,12 @@ int manageable_p(WM* wm, Window w) {
376376
XWindowAttributes wa;
377377

378378
if (XGetWindowAttributes(wm->dpy, w, &wa)) {
379-
return !wa.override_redirect &&
380-
(wa.map_state == IsViewable || getstate(wm,w) == IconicState);
379+
if (wm->manage_override_redirect_windows) {
380+
return (wa.map_state == IsViewable || getstate(wm,w) == IconicState);
381+
} else {
382+
return !wa.override_redirect &&
383+
(wa.map_state == IsViewable || getstate(wm,w) == IconicState);
384+
}
381385
} else {
382386
return 0;
383387
}

xlib_ruby/ext/x11.h

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ struct WM_t {
4747
Window root;
4848
Bool running;
4949
Bool otherwm;
50+
Bool manage_override_redirect_windows;
5051
int (*xerrorxlib)(Display *, XErrorEvent *);
5152
Atom wmatom[WMLast];
5253
Atom netatom[NetLast];

xlib_ruby/ext/x11_wrap.c

+15-1
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,19 @@ static VALUE wm_wax_set(VALUE self, VALUE newval) {
106106
return Qnil;
107107
}
108108

109+
static VALUE wm_manage_override_redirect_windows(VALUE self) {
110+
WM *newwm;
111+
Data_Get_Struct(self, WM, newwm);
112+
return newwm->manage_override_redirect_windows ? Qtrue : Qfalse;
113+
}
114+
115+
static VALUE wm_manage_override_redirect_windows_set(VALUE self, VALUE flag) {
116+
WM *newwm;
117+
Data_Get_Struct(self, WM, newwm);
118+
newwm->manage_override_redirect_windows = (flag == Qtrue ? 1 : 0);
119+
return newwm->manage_override_redirect_windows ? Qtrue : Qfalse;
120+
}
121+
109122
static VALUE wm_way(VALUE self) {
110123
WM *newwm;
111124
Data_Get_Struct(self, WM, newwm);
@@ -626,7 +639,8 @@ void Init_x11() {
626639
rb_define_method(cWM, "get_grab_key", wm_grab_key, 2);
627640
rb_define_method(cWM, "get_ungrab_key", wm_ungrab_key, 2);
628641
rb_define_method(cWM, "manage", wm_manage, 5);
629-
642+
rb_define_method(cWM, "manage_override_redirect_windows", wm_manage_override_redirect_windows, 0);
643+
rb_define_method(cWM, "manage_override_redirect_windows=", wm_manage_override_redirect_windows_set, 1);
630644

631645
// Client
632646

0 commit comments

Comments
 (0)