home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sources.misc
- X-UNIX-From: rburridge@Sun.COM
- subject: v14i093: Official patch #8 for faces v1.4; please apply it.
- from: rburridge@Sun.COM (Rich Burridge)
- Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
-
- Posting-number: Volume 14, Issue 93
- Submitted-by: rburridge@Sun.COM (Rich Burridge)
- Archive-name: faces-1.4.5/patch04
-
- [Brandon, could you post this to comp.sources.misc when you get a chance
- please?]
-
- Faces is a visual monitor for mail, jobs on a printer or users on a machine.
- There are graphical interfaces for X11, XView, NeWS and SunView.
-
- This is official patch #8 for faces v1.4.
-
- It makes the following changes:
-
- * From Mike Khaw <khaw@parcplace.com>
- From Rod Whitby <rwhitby@austek.oz.au>
- From John Pritchard <john@latcs1.lat.oz.au>
- faces v1.4.7 dumps core in make_iconname(). It's doing an strlen
- on facepath[i] when it could be NULL. This is probably caused
- when your FACEDIR directory doesn't have a misc./unknown subtree.
-
- * From Ian Darwin <ian@sq.com>
- The x11 driver does not set XA_WM_CLASS, so things that depend
- on CLASS to operate won't operate properly.
-
- * From Greg Rose <greg@softway.sw.oz.au>
- From Ken Wood <adl.austek.oz.au>
- faces with both the -MH and -a options together didn't work
- correctly.
-
- * The -v command line option now displays the usage message and exit.
- The new -? command line option is similar. The usage message is now
- upto date and also lists the keyboard accelerators.
-
- * From John Pritchard <john@latcs1.lat.oz.au>
- The file netdb.h was included twice if DNSLOOKUP is defined.
-
- * From Chris Maltby <chris@softway.sw.oz.au>
- The window attributes structure with the X11 driver is now zeroised
- before being used.
-
- * From Chris Maltby <chris@softway.sw.oz.au>
- With the X11 driver, if the icon position hasn't been specified
- with the -WP option, then the position defaults to the where the
- right end of the open window would appear.
-
- * From Steven M. Miller <miller@SCTC.COM>
- Under X, when faces is started up in iconic mode nothing is displayed
- in the icon until the icon is clicked on and opened and then closed
- again.
-
- * From Michael Schmidt <michael@uni-paderborn.de>
- Perhaps my configuration (SparcStation, SunOS4.0.3, X11R4, twm with
- ForceIcons, IconManager and IconRegion) is wierd, but... The icon is
- not placed in the IconRegion, but just at 0x0 (or 1x1, or so). Then I
- cannot deiconify the icon by a mouse click (all other icons deiconify
- on a left button click).
-
- * From Steven M. Miller <miller@SCTC.COM>
- faces now recognises -iconic (as well as -Wi) to specify iconic mode.
- Inverse mode is still -i. The manual page has been updated.
-
- * From Ian Darwin <ian@sq.com>
- faces uses -s <spoolfile> to indicate a different spool file to
- monitor. How about a -S <spooldir> to indicate a different spool
- directory? The manual page has been updated.
-
- * From Lindsay F. Marshall <Lindsay.Marshall%newcastle.ac.uk@munnari.oz>
- faces works incorrectly when either the -h <height> or the -w <width>
- options are given. The image area is not being cleared first.
-
-
- Apply this patch with Larry Walls' patch program, recompile and reinstall.
- See the README file for more details on how to install faces.
-
- faces v1.4 was posted to comp.sources.misc on 29th June 1990 at patchlevel 5.
- Patch 6 and 7 have been posted to comp.sources.[bugs,misc], but if you missed
- them then they can be obtained from the automatic mail archive server, by
- sending a message to rb-archive-server@Aus.Sun.COM containing the line:
-
- send faces patchn
-
- where n is the patch number you want.
-
- You can also include a path line in these requests to indicate the mail
- path that the archive server should use to send the files to you. Such a
- path line could be:
-
- path uunet.uu.net!hostname!user
-
- Note that this is uunet.uu.net and not just uunet. Sun.COM doesn't recognise
- just uunet.
-
- *IMPORTANT NOTE* I've received several more bug reports and enhancements. If
- I didn't include a fix in this patch or add it to the TODO
- file, it's simply because I ran out of time. Hopefully the
- fix or the enhancement will be included in the next patch.
-
- Rich Burridge, DOMAIN: richb@Aus.Sun.COM
- Sun Microsystems. ACSNET: richb@sunaus.sun.oz
- PHONE: +61 2 413 2666 UUCP: {uunet,mcvax,ukc}!munnari!sunaus.oz!richb
-
- ------CUT HERE------patch.8------CUT HERE------
-
- ------- get.c -------
- *** /tmp/da15167 Thu Sep 13 17:10:30 1990
- --- get.c Thu Sep 13 14:28:57 1990
- ***************
- *** 166,171 ****
- --- 166,175 ----
- INC ;
- getparam(printer, argv, "-P needs printer name") ;
- break ;
- + case 'S' : INC ; /* Alternative spoolfile. */
- + getparam(next, argv, "-s needs spool directory") ;
- + SPRINTF(spoolfile, "%s/%s", next, username) ;
- + break ;
- case 'U' : update++ ; /* Update faces database. */
- break ;
- case 'a' : mtype = MONALL ; /* Monitor all of the spoolfile. */
- ***************
- *** 173,179 ****
- case 'b' : if (argv[0][2] == 'g')
- {
- INC ; /* Background color. */
- ! getparam(bgcolor, argv, "-bg specifies background color") ;
- break ;
- }
- INC ; /* Alternate background pattern. */
- --- 177,184 ----
- case 'b' : if (argv[0][2] == 'g')
- {
- INC ; /* Background color. */
- ! getparam(bgcolor, argv,
- ! "-bg specifies background color") ;
- break ;
- }
- INC ; /* Alternate background pattern. */
- ***************
- *** 217,223 ****
- imageheight = ICONHEIGHT ;
- }
- break ;
- ! case 'i' : invert = 1 ; /* Reverse video. */
- break ;
- case 'n' : dontshowno = 1 ; /* Don't show number of messages. */
- break ;
- --- 222,229 ----
- imageheight = ICONHEIGHT ;
- }
- break ;
- ! case 'i' : if (!strncmp(&argv[0][1], "iconic", 6)) iconic = 1 ;
- ! else if (argv[0][2] == '\0') invert = 1 ;
- break ;
- case 'n' : dontshowno = 1 ; /* Don't show number of messages. */
- break ;
- ***************
- *** 226,240 ****
- period = atoi(next) ;
- break ;
- case 's' : INC ; /* Alternative spoolfile. */
- ! getparam(spoolfile, argv, "-s needs spool directory") ;
- break ;
- case 't' : dontshowtime = 1 ; /* Do not show timestamps. */
- break ;
- case 'u' : dontshowuser = 1 ; /* Do not show usernames. */
- break ;
- ! case 'v' : FPRINTF(stderr, "%s version 1.4.%1d\n",
- ! progname, PATCHLEVEL) ;
- ! exit(1) ;
- case 'w' : INC ; /* Face image width. */
- getparam(next, argv, "-w needs width value") ;
- imagewidth = atoi(next) ;
- --- 232,245 ----
- period = atoi(next) ;
- break ;
- case 's' : INC ; /* Alternative spoolfile. */
- ! getparam(spoolfile, argv, "-s needs spool file") ;
- break ;
- case 't' : dontshowtime = 1 ; /* Do not show timestamps. */
- break ;
- case 'u' : dontshowuser = 1 ; /* Do not show usernames. */
- break ;
- ! case '?' :
- ! case 'v' : usage() ;
- case 'w' : INC ; /* Face image width. */
- getparam(next, argv, "-w needs width value") ;
- imagewidth = atoi(next) ;
- ***************
- *** 282,287 ****
- --- 287,293 ----
- getparam(next, argv,
- "-WP needs y coordinate") ;
- iy = atoi(next) ;
- + iconpos = 1 ;
- break ;
- case 's' : INC ; INC ; /* -Ws xnum ynum */
- break ;
- ***************
- *** 534,542 ****
-
- usage() /* Print faces usage message. */
- {
- ! FPRINTF(stderr, "Usage: %s [-MH] [-P printer] [-Wi] [-Wp x y] ", progname) ;
- ! FPRINTF(stderr, "[-WP x y] [-b background] [-bg background_color] ") ;
- ! FPRINTF(stderr, "[-d display] [-f facepath] [-fg foreground_color] ") ;
- ! FPRINTF(stderr, "[-g geometry] [-i] [-n] [-p period] [-s spoolfile] [-u] ") ;
- ! FPRINTF(stderr, "[-t] [-v]\n") ;
- }
- --- 540,556 ----
-
- usage() /* Print faces usage message. */
- {
- ! FPRINTF(stderr, "%s version 1.4.%1d\n\n", progname, PATCHLEVEL) ;
- ! FPRINTF(stderr, "Usage: %s [-H hostname] [-MH] [-P printer]\n", progname) ;
- ! FPRINTF(stderr, "\t[-S spooldir] [-U] [-Wi] [-Wp x y] [-WP x y] [-a]\n") ;
- ! FPRINTF(stderr, "\t[-b background] [-bg background_color] [-c columns]\n") ;
- ! FPRINTF(stderr, "\t[-d display] [-e progname] [-f facepath]\n") ;
- ! FPRINTF(stderr, "\t[-fg foreground_color] [-g geometry] [-h height]\n") ;
- ! FPRINTF(stderr, "\t[-i] [-iconic] [-n] [-p period] [-s spoolfile] [-t]\n") ;
- ! FPRINTF(stderr, "\t[-u] [-v] [-w width] [-?]\n\n") ;
- ! FPRINTF(stderr, "Keyboard accelerators:\n") ;
- ! FPRINTF(stderr, "\t^L - clear faces display.\n") ;
- ! FPRINTF(stderr, "\tdel - refresh faces display.\n") ;
- ! FPRINTF(stderr, "\tq - terminate faces display.\n") ;
- ! exit(1) ;
- }
-
- ------- main.c -------
- *** /tmp/da15170 Thu Sep 13 17:10:31 1990
- --- main.c Thu Sep 13 12:40:11 1990
- ***************
- *** 29,35 ****
-
- #ifdef DNSLOOKUP
- #include <sys/socket.h>
- - #include <netdb.h>
- #endif /*DNSLOOKUP*/
-
- #ifdef NISLOOKUP
- --- 29,34 ----
- ***************
- *** 130,135 ****
- --- 129,135 ----
- int height ; /* Height in pixels of faces display. */
-
- int iconheight = ICONHEIGHT ; /* Height of an individual icon. */
- + int iconpos = 0 ; /* Set if icon position given (-WP option). */
- int iconwidth = ICONWIDTH ; /* Width of an individual icon. */
- int iconic = 0 ; /* Faces window is closed if set. */
- int imageheight = ICONHEIGHT ; /* Height of an individual face image. */
- ***************
- *** 314,320 ****
- int i ;
-
- facepath[0] = FACEDIR ; /* Default path is single built-in directory. */
- ! for (i = 1; i <= MAXPATHS; i++) facepath[i] = (char *) NULL ;
-
- STRCPY(display, "") ; /* X11 display type. */
- STRCPY(geometry, "") ; /* X11 geometry information. */
- --- 314,320 ----
- int i ;
-
- facepath[0] = FACEDIR ; /* Default path is single built-in directory. */
- ! for (i = 1; i <= MAXPATHS; i++) facepath[i] = "" ;
-
- STRCPY(display, "") ; /* X11 display type. */
- STRCPY(geometry, "") ; /* X11 geometry information. */
- ***************
- *** 505,511 ****
-
- IF_DEBUG( FPRINTF(stderr, "make_iconname: %s[%s] ", community, user) ; )
-
- ! for (id = 0; strlen(facepath[id]) != 0; id++)
- for (iu = 0; strlen(iuser[iu]) != 0; iu++)
- for (ic = 0; strlen(icomm[ic]) != 0; ic++)
- for (cptr = icomm[ic]; cptr != NULL; cptr = index(cptr, '.'))
- --- 505,511 ----
-
- IF_DEBUG( FPRINTF(stderr, "make_iconname: %s[%s] ", community, user) ; )
-
- ! for (id = 0; facepath[id] && (strlen(facepath[id]) != 0); id++)
- for (iu = 0; strlen(iuser[iu]) != 0; iu++)
- for (ic = 0; strlen(icomm[ic]) != 0; ic++)
- for (cptr = icomm[ic]; cptr != NULL; cptr = index(cptr, '.'))
-
- ------- mon.c -------
- *** /tmp/da15173 Thu Sep 13 17:10:33 1990
- --- mon.c Thu Sep 13 11:11:06 1990
- ***************
- *** 169,175 ****
- else make_display() ; /* Output icons and tidyup chain of records. */
- return ;
- }
- ! if (buf.st_size > lastsize) newmail = 1 ; /* New mail found. */
- if (!buf.st_size) add_face(DISP_ICON, NOMAIL, "") ;
-
- ubuf[0] = buf.st_atime ; /* Save for possible reset. */
- --- 169,180 ----
- else make_display() ; /* Output icons and tidyup chain of records. */
- return ;
- }
- ! if (buf.st_size > lastsize ||
- ! mhflag && buf.st_size < lastsize && buf.st_size != 0)
- ! {
- ! if (buf.st_size < lastsize) lastsize = 0 ;
- ! newmail = 1 ; /* New mail found. */
- ! }
- if (!buf.st_size) add_face(DISP_ICON, NOMAIL, "") ;
-
- ubuf[0] = buf.st_atime ; /* Save for possible reset. */
- ***************
- *** 177,193 ****
-
- if (mtype == MONNEW)
- if (buf.st_size <= lastsize) /* Is the size of mail folder bigger? */
- ! if (mhflag && (buf.st_size < lastsize) && (buf.st_size != 0))
- ! {
- ! lastsize = 0 ; /* User uses MH. Any shrinkage means new mail. */
- ! newmail = 1 ;
- ! }
- ! else
- ! {
- ! lastsize = buf.st_size ; /* No: save new size and exit. */
- ! show_display() ;
- ! return ;
- ! }
-
- if ((fp = fopen(spoolfile, "r")) == NULL) /* Open spoolfile. */
- {
- --- 182,192 ----
-
- if (mtype == MONNEW)
- if (buf.st_size <= lastsize) /* Is the size of mail folder bigger? */
- ! {
- ! lastsize = buf.st_size ; /* No: save new size and return. */
- ! show_display() ;
- ! return ;
- ! }
-
- if ((fp = fopen(spoolfile, "r")) == NULL) /* Open spoolfile. */
- {
-
- ------- sunview.c -------
- *** /tmp/da15176 Thu Sep 13 17:10:34 1990
- --- sunview.c Thu Sep 13 17:03:11 1990
- ***************
- *** 69,75 ****
- imageheight, PIX_SRC, pr[(int) dtype], 0, 0) ;
-
- PR_ROP(pr[(int) dtype], column*imagewidth, row*imageheight,
- ! imagewidth, imageheight, PIX_SRC, images[(int) itype], 0, 0) ;
- }
-
-
- --- 69,78 ----
- imageheight, PIX_SRC, pr[(int) dtype], 0, 0) ;
-
- PR_ROP(pr[(int) dtype], column*imagewidth, row*imageheight,
- ! imagewidth, imageheight, PIX_CLR,
- ! pr[(int) dtype], column*imagewidth, row*imageheight) ;
- ! PR_ROP(pr[(int) dtype], column*imagewidth, row*imageheight,
- ! iconwidth, iconheight, PIX_SRC, images[(int) itype], 0, 0) ;
- }
-
-
- ***************
- *** 233,238 ****
- --- 236,242 ----
- enum disp_type dtype ;
- {
- pr[(int) dtype] = mem_create(width, height, 1) ;
- + PR_ROP(pr[(int) dtype], 0, 0, width, height, PIX_CLR, pr[(int) dtype], 0, 0) ;
- }
-
-
-
- ------- extern.h -------
- *** /tmp/da15179 Thu Sep 13 17:10:35 1990
- --- extern.h Thu Sep 13 14:26:58 1990
- ***************
- *** 60,65 ****
- --- 60,66 ----
- extern char revtable[] ; /* Table for reversing the bits in a byte. */
- extern char spoolfile[] ; /* Full pathname of users current mail. */
- extern char update_alias[] ; /* Name of mail alias for database updates. */
- + extern char *username ; /* This users name. */
- extern char userprog[] ; /* User supplied program to run. */
-
- extern int beeps ; /* Number of beeps for arrival of new mail. */
- ***************
- *** 76,81 ****
- --- 77,83 ----
- extern int froms_found ; /* Set if "From " line found during processing. */
- extern int height ; /* Height in pixels of faces display. */
- extern int iconheight ; /* Height of an individual icon. */
- + extern int iconpos ; /* Set if icon position given (-WP option). */
- extern int iconwidth ; /* Width of an individual icon. */
- extern int iconic ; /* Start as an icon if set. */
- extern int imageheight ; /* Height of an individual face image. */
-
- ------- patchlevel.h -------
- *** /tmp/da15182 Thu Sep 13 17:10:35 1990
- --- patchlevel.h Thu Sep 13 09:47:49 1990
- ***************
- *** 14,17 ****
- * reported to me then an attempt will be made to fix them.
- */
-
- ! #define PATCHLEVEL 7
- --- 14,17 ----
- * reported to me then an attempt will be made to fix them.
- */
-
- ! #define PATCHLEVEL 8
-
- ------- README -------
- *** /tmp/da15185 Thu Sep 13 17:10:36 1990
- --- README Thu Sep 13 17:00:13 1990
- ***************
- *** 300,307 ****
- Mullender, Cameron Humphries, Rick Gunderson, Rich McAllister, Hakon Lie,
- John Fong, Chris Maltby, Darryl K. Ramm, Steve Piette, Tony Landells, Pat
- Lashley, Dave Glowacki, Chris Steinbroner, Steven M. Miller, Bob Posert,
- ! Hugues Leroy, Graham Dumpleton, Michael Schmidt, Robert Adams and Rod
- ! Whitby for various bug reports, fixes and suggestions for improvement.
-
-
- ----------------------------------------------------------------------------
- --- 300,308 ----
- Mullender, Cameron Humphries, Rick Gunderson, Rich McAllister, Hakon Lie,
- John Fong, Chris Maltby, Darryl K. Ramm, Steve Piette, Tony Landells, Pat
- Lashley, Dave Glowacki, Chris Steinbroner, Steven M. Miller, Bob Posert,
- ! Hugues Leroy, Graham Dumpleton, Michael Schmidt, Robert Adams, Rod Whitby,
- ! Greg Rose, Mike Khaw, Ian Darwin, Ken Wood and Lindsay F. Marshall for
- ! various bug reports, fixes and suggestions for improvement.
-
-
- ----------------------------------------------------------------------------
-
- ------- faces.1 -------
- *** /tmp/da15188 Thu Sep 13 17:10:37 1990
- --- faces.1 Thu Sep 13 14:34:29 1990
- ***************
- *** 17,22 ****
- --- 17,26 ----
- .I printer
- ]
- [
- + .B \-S
- + .I spooldir
- + ]
- + [
- .B \-U
- ]
- [
- ***************
- *** 51,56 ****
- --- 55,63 ----
- .I height
- ]
- [
- + .B \-iconic
- + ]
- + [
- .B \-i
- ]
- [
- ***************
- *** 161,166 ****
- --- 168,181 ----
- .B faces
- will monitor the print queue.
- .TP
- + .BI \-S " spooldir"
- + Specify an alternate mail spool directory. The folder that will be monitored
- + will then be
- + .BI spooldir/ username
- + where
- + .I username
- + is the name of the user currently logged in.
- + .TP
- .B \-U
- Automatically send mail to a special mail alias, to update the
- .I faces
- ***************
- *** 217,222 ****
- --- 232,242 ----
- The height of each face image in pixels. Note that this is the height of
- the area allocated to each image, and not necessarily the height of the
- displayed image inside.
- + .TP
- + .B \-iconic
- + Start the
- + .B faces
- + program up in iconic form.
- .TP
- .B \-i
- Invert the faces images before displaying them. For use by people who
-
- ------- x11.c -------
- *** /tmp/da15194 Thu Sep 13 17:10:39 1990
- --- x11.c Thu Sep 13 16:49:19 1990
- ***************
- *** 31,36 ****
- --- 31,37 ----
- #define FONT "times-roman-10"
- #define FRAME_MASK (ButtonPressMask | ExposureMask | \
- ButtonMotionMask | KeyPressMask)
- + #define ICON_MASK ExposureMask
-
- Atom protocol_atom, kill_atom ;
- Display *dpy ;
- ***************
- *** 47,52 ****
- --- 48,54 ----
- Pixmap old_pr[2] = { NULL, NULL } ; /* Previous memory Pixmaps. */
- Window frame[2] ;
- Window root ;
- + XClassHint class_hint = { "faces", "Faces" } ;
- XFontStruct *sfont ;
- XGCValues gc_val ;
- XSizeHints size ;
- ***************
- *** 76,83 ****
- XCopyArea(dpy, pr[(int) dtype], pr[(int) dtype], gc, 0, 0,
- (maxcols-1)*imagewidth, imageheight, imagewidth, 0) ;
-
- XCopyArea(dpy, images[(int) itype], pr[(int) dtype], gc, 0, 0,
- ! imagewidth, imageheight, column*imagewidth, row*imageheight) ;
- }
-
-
- --- 78,90 ----
- XCopyArea(dpy, pr[(int) dtype], pr[(int) dtype], gc, 0, 0,
- (maxcols-1)*imagewidth, imageheight, imagewidth, 0) ;
-
- + XSetFunction(dpy, gc, GXclear) ;
- + XCopyArea(dpy, pr[(int) dtype], pr[(int) dtype], gc,
- + column*imagewidth, row*imagewidth, imagewidth, imageheight,
- + column*imagewidth, row*imagewidth) ;
- + XSetFunction(dpy, gc, GXcopy) ;
- XCopyArea(dpy, images[(int) itype], pr[(int) dtype], gc, 0, 0,
- ! iconwidth, iconwidth, column*imagewidth, row*imageheight) ;
- }
-
-
- ***************
- *** 158,164 ****
- XCopyArea(dpy, pr[(int) wdtype], frame[F_WINDOW], gc, 0, 0,
- (unsigned int) width, (unsigned int) height, 0, 0) ;
- XCopyArea(dpy, pr[(int) DISP_ICON], frame[F_ICON], gc, 0, 0,
- ! (unsigned int) width, (unsigned int) height, 0, 0) ;
- }
-
-
- --- 165,171 ----
- XCopyArea(dpy, pr[(int) wdtype], frame[F_WINDOW], gc, 0, 0,
- (unsigned int) width, (unsigned int) height, 0, 0) ;
- XCopyArea(dpy, pr[(int) DISP_ICON], frame[F_ICON], gc, 0, 0,
- ! (unsigned int) imagewidth, (unsigned int) imageheight, 0, 0) ;
- }
-
-
- ***************
- *** 225,231 ****
- depth = DefaultDepth(dpy, screen) ;
-
- init_font() ;
- -
- gc_mask = GCFont | GCForeground | GCBackground | GCGraphicsExposures ;
- gc_val.font = sfont->fid ;
- gc_val.foreground = foregnd ;
- --- 232,237 ----
- ***************
- *** 232,238 ****
- gc_val.background = backgnd ;
- gc_val.graphics_exposures = False ;
- gc = XCreateGC(dpy, root, gc_mask, &gc_val) ;
- !
- tilegc = XCreateGC(dpy, root, gc_mask, &gc_val) ;
- if (depth == 1) XSetFillStyle(dpy, tilegc, FillOpaqueStippled) ;
- else XSetFillStyle(dpy, tilegc, FillTiled) ;
- --- 238,244 ----
- gc_val.background = backgnd ;
- gc_val.graphics_exposures = False ;
- gc = XCreateGC(dpy, root, gc_mask, &gc_val) ;
- !
- tilegc = XCreateGC(dpy, root, gc_mask, &gc_val) ;
- if (depth == 1) XSetFillStyle(dpy, tilegc, FillOpaqueStippled) ;
- else XSetFillStyle(dpy, tilegc, FillTiled) ;
- ***************
- *** 260,278 ****
-
-
- /*ARGSUSED*/
- - static Bool
- - is_exposed(dpy, ev, window) /* Return True if window is being exposed */
- - Display *dpy ;
- - XEvent *ev ;
- - char *window ;
- - {
- - if (ev->type == Expose && *((Window *) window) == ev->xkey.window)
- - return True ;
- - return False ;
- - }
- -
- -
- - /*ARGSUSED*/
- load_icon(itype, sbuf, not_flipped)
- enum icon_type itype ;
- unsigned short sbuf[256] ;
- --- 266,271 ----
- ***************
- *** 298,305 ****
- {
- pr[(int) dtype] = XCreatePixmap(dpy, root,
- (unsigned int) width, (unsigned int) height, depth) ;
- ! XSetFunction(dpy, gc, GXandInverted) ;
- ! XFillRectangle(dpy, pr[(int) dtype], gc, 0, 0, width, height) ;
- XSetFunction(dpy, gc, GXcopy) ;
- }
-
- --- 291,300 ----
- {
- pr[(int) dtype] = XCreatePixmap(dpy, root,
- (unsigned int) width, (unsigned int) height, depth) ;
- ! XSetFunction(dpy, gc, GXclear) ;
- ! XCopyArea(dpy, pr[(int) dtype], pr[(int) dtype], gc,
- ! column*imagewidth, row*imagewidth, imagewidth, imageheight,
- ! column*imagewidth, row*imagewidth) ;
- XSetFunction(dpy, gc, GXcopy) ;
- }
-
- ***************
- *** 346,361 ****
- }
- }
-
- ! #ifdef WANTED
- ! frame[F_WINDOW] = XCreateSimpleWindow(dpy, root,
- ! size.x, size.y, size.width, size.height,
- ! FACES_BORDER_WIDTH, foregnd, backgnd) ;
-
- ! frame[F_ICON] = XCreateSimpleWindow(dpy, root,
- ! ix, iy, imagewidth, imageheight,
- ! FACES_BORDER_WIDTH, foregnd, backgnd) ;
- ! #endif /*WANTED*/
- !
- winattrs.background_pixel = backgnd ;
- winattrs.border_pixel = foregnd ;
- winattrs.event_mask = FRAME_MASK ;
- --- 341,353 ----
- }
- }
-
- ! if (!iconpos)
- ! {
- ! ix = size.x + size.width - imagewidth ;
- ! iy = size.y ;
- ! }
-
- ! bzero((char *) &winattrs, sizeof(winattrs)) ;
- winattrs.background_pixel = backgnd ;
- winattrs.border_pixel = foregnd ;
- winattrs.event_mask = FRAME_MASK ;
- ***************
- *** 365,370 ****
- --- 357,364 ----
- CopyFromParent, InputOutput, CopyFromParent,
- CWBackPixel | CWBorderPixel | CWEventMask, &winattrs) ;
-
- + winattrs.event_mask = ICON_MASK ;
- +
- frame[F_ICON] = XCreateWindow(dpy, root,
- ix, iy, imagewidth, imageheight, FACES_BORDER_WIDTH,
- CopyFromParent, InputOutput, CopyFromParent,
- ***************
- *** 388,395 ****
- wm_hints.flags |= StateHint ;
- }
- XSetWMHints(dpy, frame[F_WINDOW], &wm_hints) ;
- - /** XSetWMHints(dpy, frame[F_ICON], &wm_hints) ; **/
-
- /* Equivalent of make_icon. */
-
- if (mtype == MONPRINTER) adjust_image(DISP_ICON, NOPRINT, 0, 0) ;
- --- 382,392 ----
- wm_hints.flags |= StateHint ;
- }
- XSetWMHints(dpy, frame[F_WINDOW], &wm_hints) ;
-
- + /* Set XA_WM_CLASS so things that depend on NAME work. */
- +
- + XSetClassHint(dpy, frame[F_WINDOW], &class_hint) ;
- +
- /* Equivalent of make_icon. */
-
- if (mtype == MONPRINTER) adjust_image(DISP_ICON, NOPRINT, 0, 0) ;
- ***************
- *** 401,406 ****
- --- 398,424 ----
- {}
-
-
- + process_expose(event)
- + XExposeEvent *event ;
- + {
- + int doframe, doicon ;
- +
- + doframe = doicon = 0 ;
- + do
- + {
- + if (event->count == 0)
- + {
- + if (event->window == frame[F_WINDOW]) doframe++ ;
- + else if (event->window == frame[F_ICON]) doicon++ ;
- + }
- + }
- + while (XCheckMaskEvent(dpy, ExposureMask, event)) ;
- +
- + if (doframe) draw_screen(wdtype) ;
- + if (doicon) draw_screen(wdtype) ;
- + }
- +
- +
- repl_image(dtype, dest, width, height)
- enum disp_type dtype ;
- enum image_type dest ;
- ***************
- *** 433,440 ****
- {
- XSelectInput(dpy, frame[F_WINDOW], FRAME_MASK) ;
- XMapWindow(dpy, frame[F_WINDOW]) ;
- - XSync(dpy, 0) ;
- - XPeekIfEvent(dpy, &ev, is_exposed, (char *) &frame[F_WINDOW]) ;
- first_time = 0 ;
- }
-
- --- 451,456 ----
- ***************
- *** 488,494 ****
- #endif /*SYSV32*/
- do
- {
- ! XNextEvent(dpy, &event) ;
-
- /* ClientMessage: (catch ICCCM kill from WM). */
-
- --- 504,511 ----
- #endif /*SYSV32*/
- do
- {
- ! if (!XCheckMaskEvent(dpy, ExposureMask, &event))
- ! XNextEvent(dpy, &event) ;
-
- /* ClientMessage: (catch ICCCM kill from WM). */
-
- ***************
- *** 502,512 ****
-
- /* Expose. */
-
- ! else if (event.type == Expose && event.xexpose.count == 0)
- ! {
- ! while (XCheckTypedEvent(dpy, Expose, &event)) /* do nothing. */ ;
- ! draw_screen(wdtype) ;
- ! }
-
- /* ButtonPress. */
-
- --- 519,525 ----
-
- /* Expose. */
-
- ! else if (event.type == Expose) process_expose(&event) ;
-
- /* ButtonPress. */
-
-
- ------- TODO -------
- *** /tmp/da15197 Thu Sep 13 17:10:40 1990
- --- TODO Thu Sep 13 17:09:39 1990
- ***************
- *** 106,146 ****
- determine at run-time whether the NeWS operations are available, or
- whether to stick to XView/X11 mechanisms.
-
- ! 21/ From Steven M. Miller <miller@SCTC.COM>
- ! I would like to use -iconic to specify iconic mode for X. This would
- ! require change -i to -I for inverse in get.c and having -i to set iconic=1.
- !
- ! 22/ From Steven M. Miller <miller@SCTC.COM>
- ! Under X, when faces is started up in iconic mode nothing is displayed in
- ! the icon until the icon is clicked on and opened and then closed again.
- !
- ! 23/ From Kee Hinckley <nazgul@alphalpha.com>
- Any possibility of changing that header to an RFC1154 (I think that's
- the number) conformant form? Namely an encoding field in the
- header (presumbably with a new name for the faces format, or using
- one of the existing ones (G3Fax uuencode would probably be good)).
-
- ! 24/ From Michael Schmidt <michael@uni-paderborn.de>
- ! Perhaps my configuration (SparcStation, SunOS4.0.3, X11R4, twm with
- ! ForceIcons, IconManager and IconRegion) is wierd, but... The icon is
- ! not placed in the IconRegion, but just at 0x0 (or 1x1, or so). Then I
- ! cannot deiconify the icon by a mouse click (all other icons deiconify
- ! on a left button click).
- !
- ! 25/ Get the SunView, XView and NeWS drivers to use the -bg and -fg color
- options.
-
- ! 26/ From Ken Wood <kwood@adl.austek.oz.au>
- ! Sometimes the display gets stuck while changing from "No mail" to a
- ! single face or vice-versa. xfaces just displays a plain grey window.
- !
- ! 27/ From Ken Wood <kwood@adl.austek.oz.au>
- ! Quite often, users who don't have a face file are shown as "unknown"
- ! with the unknown face, rather than putting the username with the unknown
- ! face.
- !
- ! 28/ From Ken Wood <kwood@adl.austek.oz.au>
- Do you have any plans to get xfaces to read geometry etc from the
- database ?
-
- ! 29/ Optimise.
- --- 106,125 ----
- determine at run-time whether the NeWS operations are available, or
- whether to stick to XView/X11 mechanisms.
-
- ! 21/ From Kee Hinckley <nazgul@alphalpha.com>
- Any possibility of changing that header to an RFC1154 (I think that's
- the number) conformant form? Namely an encoding field in the
- header (presumbably with a new name for the faces format, or using
- one of the existing ones (G3Fax uuencode would probably be good)).
-
- ! 22/ Get the SunView, XView and NeWS drivers to use the -bg and -fg color
- options.
-
- ! 23/ From Ken Wood <kwood@adl.austek.oz.au>
- Do you have any plans to get xfaces to read geometry etc from the
- database ?
-
- ! 24/ When the -w and/or -h options are used with the SunView version, the
- ! size of the icon created is incorrect.
- !
- ! 25/ Optimise.
-
- ------- xview.c -------
- *** /tmp/da15200 Thu Sep 13 17:10:40 1990
- --- xview.c Thu Sep 13 16:31:27 1990
- ***************
- *** 73,78 ****
- --- 73,83 ----
- XCopyArea(dpy, pr[(int) dtype], pr[(int) dtype], gc, 0, 0,
- (maxcols-1)*imagewidth, imageheight, imagewidth, 0) ;
-
- + XSetFunction(dpy, gc, GXclear) ;
- + XCopyArea(dpy, pr[(int) dtype], pr[(int) dtype], gc,
- + column*imagewidth, row*imagewidth, imagewidth, imageheight,
- + column*imagewidth, row*imagewidth) ;
- + XSetFunction(dpy, gc, GXcopy) ;
- XCopyArea(dpy, images[(int) itype], pr[(int) dtype], gc, 0, 0,
- imagewidth, imageheight, column*imagewidth, row*imageheight) ;
- }
- ***************
- *** 276,283 ****
- {
- pr[(int) dtype] = XCreatePixmap(dpy, root, (unsigned int) width,
- (unsigned int) height, depth) ;
- ! XSetFunction(dpy, gc, GXandInverted) ;
- ! XFillRectangle(dpy, pr[(int) dtype], gc, 0, 0, width, height) ;
- XSetFunction(dpy, gc, GXcopy) ;
- }
-
- --- 281,290 ----
- {
- pr[(int) dtype] = XCreatePixmap(dpy, root, (unsigned int) width,
- (unsigned int) height, depth) ;
- ! XSetFunction(dpy, gc, GXclear) ;
- ! XCopyArea(dpy, pr[(int) dtype], pr[(int) dtype], gc,
- ! column*imagewidth, row*imagewidth, imagewidth, imageheight,
- ! column*imagewidth, row*imagewidth) ;
- XSetFunction(dpy, gc, GXcopy) ;
- }
-
-
- ------- CHANGES -------
- *** /tmp/da15203 Thu Sep 13 17:10:41 1990
- --- CHANGES Thu Sep 13 14:41:35 1990
- ***************
- *** 288,290 ****
- --- 288,349 ----
- being followed by a line starting with the word "X-Face ". Faces now
- searches for "X-Face:" rather than "X-Face". This really needs to be
- tightened up some more.
- +
- + v1.4 - patchlevel 8 - 13th September 1990.
- +
- + * From Mike Khaw <khaw@parcplace.com>
- + From Rod Whitby <rwhitby@austek.oz.au>
- + From John Pritchard <john@latcs1.lat.oz.au>
- + faces v1.4.7 dumps core in make_iconname(). It's doing an strlen
- + on facepath[i] when it could be NULL. This is probably caused
- + when your FACEDIR directory doesn't have a misc./unknown subtree.
- +
- + * From Ian Darwin <ian@sq.com>
- + The x11 driver does not set XA_WM_CLASS, so things that depend
- + on CLASS to operate won't operate properly.
- +
- + * From Greg Rose <greg@softway.sw.oz.au>
- + From Ken Wood <adl.austek.oz.au>
- + faces with both the -MH and -a options together didn't work
- + correctly.
- +
- + * The -v command line option now displays the usage message and exit.
- + The new -? command line option is similar. The usage message is now
- + upto date and also lists the keyboard accelerators.
- +
- + * From John Pritchard <john@latcs1.lat.oz.au>
- + The file netdb.h was included twice if DNSLOOKUP is defined.
- +
- + * From Chris Maltby <chris@softway.sw.oz.au>
- + The window attributes structure with the X11 driver is now zeroised
- + before being used.
- +
- + * From Chris Maltby <chris@softway.sw.oz.au>
- + With the X11 driver, if the icon position hasn't been specified
- + with the -WP option, then the position defaults to the where the
- + right end of the open window would appear.
- +
- + * From Steven M. Miller <miller@SCTC.COM>
- + Under X, when faces is started up in iconic mode nothing is displayed
- + in the icon until the icon is clicked on and opened and then closed
- + again.
- +
- + * From Michael Schmidt <michael@uni-paderborn.de>
- + Perhaps my configuration (SparcStation, SunOS4.0.3, X11R4, twm with
- + ForceIcons, IconManager and IconRegion) is wierd, but... The icon is
- + not placed in the IconRegion, but just at 0x0 (or 1x1, or so). Then I
- + cannot deiconify the icon by a mouse click (all other icons deiconify
- + on a left button click).
- +
- + * From Steven M. Miller <miller@SCTC.COM>
- + faces now recognises -iconic (as well as -Wi) to specify iconic mode.
- + Inverse mode is still -i. The manual page has been updated.
- +
- + * From Ian Darwin <ian@sq.com>
- + faces uses -s <spoolfile> to indicate a different spool file to
- + monitor. How about a -S <spooldir> to indicate a different spool
- + directory? The manual page has been updated.
- +
- + * From Lindsay F. Marshall <Lindsay.Marshall%newcastle.ac.uk@munnari.oz>
- + faces works incorrectly when either the -h <height> or the -w <width>
- + options are given. The image area is not being cleared first.
-
-