My first try at this was buggy: it was restarting the window manager on
all configure events, whether or not they were on the root window.
The following fixes this misbehavior.
- Jim
jg@skiffcluster1:/home2/jg/blackbox/src$ cvs diff -u -r 1.2 Screen.cc blackbox.cc
Index: Screen.cc
=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d
RCS file: /cvs/blackbox/src/Screen.cc,v
retrieving revision 1.2
diff -u -r1.2 Screen.cc
--- Screen.cc 2001/03/17 08:14:30 1.2
+++ Screen.cc 2001/06/19 18:06:00
@@ -186,7 +186,7 @@
event_mask =3d ColormapChangeMask | EnterWindowMask | PropertyChangeMask |
SubstructureRedirectMask | KeyPressMask | KeyReleaseMask |
- ButtonPressMask | ButtonReleaseMask;
+ ButtonPressMask | ButtonReleaseMask | StructureNotifyMask;
XErrorHandler old =3d XSetErrorHandler((XErrorHandler) anotherWMRunning);
XSelectInput(getBaseDisplay()->getXDisplay(), getRootWindow(), event_mask);
Index: blackbox.cc
=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d=3d
RCS file: /cvs/blackbox/src/blackbox.cc,v
retrieving revision 1.2
retrieving revision 1.4
diff -u -r1.2 -r1.4
--- blackbox.cc 2001/01/25 07:54:20 1.2
+++ blackbox.cc 2001/06/19 17:49:40 1.4
@@ -271,6 +271,19 @@
}
switch (e->type) {
+ case ConfigureNotify:
+ {
+ Window root;
+
+ LinkedListIterator<BScreen> it(screenList);
+
+ for (; it.current(); it++) {
+ BScreen *screen =3d it.current();
+ root =3d screen->getRootWindow();
+ if (root =3d=3d e->xconfigure.event)
+ blackbox->restart();
+ }
+ }
case ButtonPress:
{
last_time =3d e->xbutton.time;
jg@skiffcluster1:/home2/jg/blackbox/src$
--
Jim Gettys
Technology and Corporate Development
Compaq Computer Corporation
[EMAIL PROTECTED]