ftp://ftp.linux.ncsu.edu/mirror/ftp.redhat.com/pub/redhat/linux/enterprise/4/en/os...
[xscreensaver] / hacks / screenhack.c
index 3898a8e360daa8fa1b1c336696ab12566039ea98..728d18edabbb7b6b4ed25f0899faa8055b2a4a56 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1992, 1995, 1997, 1998, 2001, 2002, 2003
+/* xscreensaver, Copyright (c) 1992, 1995, 1997, 1998, 2001, 2002, 2003, 2004
  *  Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
 #include "version.h"
 #include "vroot.h"
 
+#ifndef _XSCREENSAVER_VROOT_H_
+# error Error!  You have an old version of vroot.h!  Check -I args.
+#endif /* _XSCREENSAVER_VROOT_H_ */
+
 #ifndef isupper
 # define isupper(c)  ((c) >= 'A' && (c) <= 'Z')
 #endif
@@ -183,6 +187,9 @@ static Atom XA_WM_PROTOCOLS, XA_WM_DELETE_WINDOW;
 void
 screenhack_handle_event (Display *dpy, XEvent *event)
 {
+  if (XtAppPending (app) & (XtIMTimer|XtIMAlternateInput))
+    XtAppProcessEvent (app, XtIMTimer|XtIMAlternateInput);
+
   switch (event->xany.type)
     {
     case KeyPress:
@@ -530,9 +537,9 @@ main (int argc, char **argv)
       screen = xgwa.screen;
       visual_warning (screen, window, visual, cmap, True);
 
-      /* Select KeyPress events on the external window.
+      /* Select KeyPress and resize events on the external window.
        */
-      xgwa.your_event_mask |= KeyPressMask;
+      xgwa.your_event_mask |= KeyPressMask | StructureNotifyMask;
       XSelectInput (dpy, window, xgwa.your_event_mask);
 
       /* Select ButtonPress and ButtonRelease events on the external window,
@@ -547,7 +554,7 @@ main (int argc, char **argv)
   else if (root_p)
     {
       XWindowAttributes xgwa;
-      window = RootWindowOfScreen (XtScreen (toplevel));
+      window = VirtualRootWindowOfScreen (XtScreen (toplevel));
       XtDestroyWidget (toplevel);
       XGetWindowAttributes (dpy, window, &xgwa);
       cmap = xgwa.colormap;
@@ -576,7 +583,7 @@ main (int argc, char **argv)
          unsigned int bg, bd;
          Widget new;
 
-         cmap = XCreateColormap (dpy, RootWindowOfScreen(screen),
+         cmap = XCreateColormap (dpy, VirtualRootWindowOfScreen(screen),
                                  visual, AllocNone);
          bg = get_pixel_resource ("background", "Background", dpy, cmap);
          bd = get_pixel_resource ("borderColor", "Foreground", dpy, cmap);