X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fscreenhack.c;h=96d87b71131f63aad53ef89d26cd7c1c8f76c4c5;hb=447db08c956099b3b183886729108bf5b364c4b8;hp=3898a8e360daa8fa1b1c336696ab12566039ea98;hpb=96bdd7cf6ea60c418a76921acaf0e34d6f5be930;p=xscreensaver diff --git a/hacks/screenhack.c b/hacks/screenhack.c index 3898a8e3..96d87b71 100644 --- a/hacks/screenhack.c +++ b/hacks/screenhack.c @@ -1,5 +1,4 @@ -/* xscreensaver, Copyright (c) 1992, 1995, 1997, 1998, 2001, 2002, 2003 - * Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2005 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -57,6 +56,10 @@ #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 +186,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: @@ -385,6 +391,8 @@ main (int argc, char **argv) fix_fds(); + progname = argv[0]; /* reset later */ + #ifdef XLOCKMORE pre_merge_options (); #endif @@ -530,9 +538,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 +555,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 +584,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);