X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fscreenhack.c;h=728d18edabbb7b6b4ed25f0899faa8055b2a4a56;hp=1a6cd69f879f8dbcd68accfe65730e4336f8da0c;hb=ffd8c0873576a9e3065696a624dce6b766b77062;hpb=c28aecf9fc41e3a03494bacf7279745425e2fa18 diff --git a/hacks/screenhack.c b/hacks/screenhack.c index 1a6cd69f..728d18ed 100644 --- a/hacks/screenhack.c +++ b/hacks/screenhack.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992, 1995, 1997, 1998, 2001, 2002 +/* xscreensaver, Copyright (c) 1992, 1995, 1997, 1998, 2001, 2002, 2003, 2004 * Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its @@ -57,6 +57,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 +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); @@ -592,7 +599,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 +610,7 @@ main (int argc, char **argv) XtVaSetValues (toplevel, XtNmappedWhenManaged, False, XtNinput, True, /* for WM_HINTS */ - 0); + NULL); XtRealizeWidget (toplevel); window = XtWindow (toplevel); @@ -623,7 +630,7 @@ main (int argc, char **argv) /* if (dont_map) { - XtVaSetValues (toplevel, XtNmappedWhenManaged, False, 0); + XtVaSetValues (toplevel, XtNmappedWhenManaged, False, NULL); XtRealizeWidget (toplevel); } else @@ -632,7 +639,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. */