X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fscreenhack.c;h=96d87b71131f63aad53ef89d26cd7c1c8f76c4c5;hb=447db08c956099b3b183886729108bf5b364c4b8;hp=1a6cd69f879f8dbcd68accfe65730e4336f8da0c;hpb=c28aecf9fc41e3a03494bacf7279745425e2fa18;p=xscreensaver diff --git a/hacks/screenhack.c b/hacks/screenhack.c index 1a6cd69f..96d87b71 100644 --- a/hacks/screenhack.c +++ b/hacks/screenhack.c @@ -1,5 +1,4 @@ -/* xscreensaver, Copyright (c) 1992, 1995, 1997, 1998, 2001, 2002 - * 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); @@ -592,7 +600,7 @@ main (int argc, char **argv) XtNbackground, (Pixel) bg, XtNborderColor, (Pixel) bd, XtNinput, True, /* for WM_HINTS */ - 0); + NULL); XtDestroyWidget (toplevel); toplevel = new; XtRealizeWidget (toplevel); @@ -603,7 +611,7 @@ main (int argc, char **argv) XtVaSetValues (toplevel, XtNmappedWhenManaged, False, XtNinput, True, /* for WM_HINTS */ - 0); + NULL); XtRealizeWidget (toplevel); window = XtWindow (toplevel); @@ -623,7 +631,7 @@ main (int argc, char **argv) /* if (dont_map) { - XtVaSetValues (toplevel, XtNmappedWhenManaged, False, 0); + XtVaSetValues (toplevel, XtNmappedWhenManaged, False, NULL); XtRealizeWidget (toplevel); } else @@ -632,7 +640,7 @@ main (int argc, char **argv) XtPopup (toplevel, XtGrabNone); } - XtVaSetValues(toplevel, XtNtitle, version, 0); + XtVaSetValues(toplevel, XtNtitle, version, NULL); /* For screenhack_handle_events(): select KeyPress, and announce that we accept WM_DELETE_WINDOW. */