[comp.windows.x] twm patches

jkh@ardent.UUCP (Jordan Hubbard) (05/10/88)

>exist in the X11R1 xterm and may be related to the fact that I
>explicitly set input focus to windows.  At one point, Ed Swick was
>looking into the problem, Ed are you listening?

Who's Ed Swick? Ralph, you have a brother you've been hiding?

						Jordan

tlastran@esunix.UUCP (Tom LaStrange) (06/17/88)

#! /bin/sh
# This is a shell archive, meaning:
# 1.  Remove everything above the #! /bin/sh line.
# 2.  Save the resulting test in a file
# 3.  Execute the file with /bin/sh (not csh) to create the files:
#
#README
#Imakefile
#twm.patches
#
# Created by tlastran (Tom LaStrange) on Fri Jun 17 07:30:02 MDT 1988
#
if test -f 'README'
then
    echo shar: will not over-write existing file "README"
else
echo extracting "README"
sed 's/^X//' >README <<'SHAR_EOF'
XThe following things have been fixed/added since Revision 3.0
X
X1.  I now use XParseColor in GetColor so you can specify colors like "#ff007f".
X
X2.  "sequence lost!" should not happen anymore.
X
X3.  A NoTitleFocus variable has been added.  If you specify this variable
X    you won't have input focus in the title bar but you also will not
X    have the typing, moving the mouse, characters appear in previous
X    window problem.  Your xterm cursors should also "hollow out" when
X    the cursor leaves the xterm windows.
X
X4.  I have included an Imakefile that was sent to me.
X
X5.  General cleanup.
X
X
XThings must be getting better, the number of bug reports has decreased
Xsignificantly.  There still appear to be some problems in running with
Xmultiple displays from the same server.
X
XThanks again for your patience and testing.
X
X--
XTom LaStrange
XEvans & Sutherland Computer Corporation
X
XUUCP Address:  {ihnp4,seismo}!utah-cs!utah-gr!uplherc!esunix!tlastran
XAlternate:     {ihnp4,decvax}!decwrl!esunix!tlastran
SHAR_EOF
if test 1005 -ne "`wc -c < README`"
then
    echo shar: error transmitting "README" '(should have been 1005 characters)'
fi
fi
if test -f 'Imakefile'
then
    echo shar: will not over-write existing file "Imakefile"
else
echo extracting "Imakefile"
sed 's/^X//' >Imakefile <<'SHAR_EOF'
X#
X#Here is an Imakefile for twm.  It depends on having TWMDIR defined
X#in Imake.tmpl.  I like to use Imakefiles for everything, and I am sure
X#other people do also, so perhaps you could do us all a favor and
X#distribute this one.
X#
X
X       PROGRAMS = twm mytitle
XLOCAL_LIBRARIES = $(XLIB)
X      OTHERSRCS = gram.y lex.l
X         YFLAGS = -d
X
XSRCS1=	add_window.c gc.c list.c twm.c parse.c\
X        menus.c events.c resize.c util.c version.c
X
XOBJS1=	gram.o lex.o add_window.o gc.o list.o twm.o parse.o\
X        menus.o events.o resize.o util.o version.o
X
XSRCS2=	mytitle.c
XOBJS2=	mytitle.o
X
XComplexProgramTarget_1(twm,$(LOCAL_LIBRARIES),)
XComplexProgramTarget_2(mytitle,$(LOCAL_LIBRARIES),)
X
XInstallNonExec(Sample.twmrc, $(TWMDIR))
XInstallNonExec(xterm.icon, $(TWMDIR))
X
Xgram.h gram.c: gram.y
X	yacc -d gram.y
X	mv y.tab.c gram.c
X	mv y.tab.h gram.h
X
Xclean::
X	$(RM) y.tab.h y.tab.c lex.yy.c gram.h gram.c lex.c
SHAR_EOF
if test 905 -ne "`wc -c < Imakefile`"
then
    echo shar: error transmitting "Imakefile" '(should have been 905 characters)'
fi
fi
if test -f 'twm.patches'
then
    echo shar: will not over-write existing file "twm.patches"
else
echo extracting "twm.patches"
sed 's/^X//' >twm.patches <<'SHAR_EOF'
Xdiff -c old/add_window.c new/add_window.c
X*** old/add_window.c	Fri Jun 17 07:17:19 1988
X--- new/add_window.c	Fri Jun 17 07:19:56 1988
X***************
X*** 25,31 ****
X  
X  /**********************************************************************
X   *
X!  * $Header: add_window.c,v 1.25 88/06/03 10:18:55 tlastran Exp $
X   *
X   * Add a new window, put the titlbar and other stuff around
X   * the window
X--- 25,31 ----
X  
X  /**********************************************************************
X   *
X!  * $Header: add_window.c,v 1.27 88/06/17 06:48:22 tlastran Exp $
X   *
X   * Add a new window, put the titlbar and other stuff around
X   * the window
X***************
X*** 36,42 ****
X  
X  #ifndef lint
X  static char RCSinfo[]=
X! "$Header: add_window.c,v 1.25 88/06/03 10:18:55 tlastran Exp $";
X  #endif lint
X  
X  #include <stdio.h>
X--- 36,42 ----
X  
X  #ifndef lint
X  static char RCSinfo[]=
X! "$Header: add_window.c,v 1.27 88/06/17 06:48:22 tlastran Exp $";
X  #endif lint
X  
X  #include <stdio.h>
X***************
X*** 270,276 ****
X  	strlen(tmp_win->name));
X  
X      if (XGetWindowProperty(dpy, tmp_win->w, XA_WM_ICON_NAME, 0, 200, False,
X! 	AnyPropertyType, &junk1, &junk2, &junk3, &len, &tmp_win->icon_name))
X  	tmp_win->icon_name = tmp_win->name;
X  
X      if (tmp_win->icon_name == NULL)
X--- 270,276 ----
X  	strlen(tmp_win->name));
X  
X      if (XGetWindowProperty(dpy, tmp_win->w, XA_WM_ICON_NAME, 0, 200, False,
X! 	XA_STRING, &junk1, &junk2, &junk3, &len, &tmp_win->icon_name))
X  	tmp_win->icon_name = tmp_win->name;
X  
X      if (tmp_win->icon_name == NULL)
X***************
X*** 326,333 ****
X      tmp_win->iconify_w = XCreateWindow(dpy, tmp_win->title_w,
X  	TITLE_BAR_SPACE, TITLE_BAR_SPACE,
X  	iconify_width, iconify_height,
X! 	0, DefaultDepth(dpy, 0), CopyFromParent, DefaultVisual(dpy,0),
X! 	valuemask, &attributes);
X  
X  #ifndef NOFOCUS
X      attributes.background_pixmap = MakePixmap(tmp_win->title_w, TitleNormalGC,
X--- 326,333 ----
X      tmp_win->iconify_w = XCreateWindow(dpy, tmp_win->title_w,
X  	TITLE_BAR_SPACE, TITLE_BAR_SPACE,
X  	iconify_width, iconify_height,
X! 	0, d_depth, CopyFromParent,
X! 	d_visual, valuemask, &attributes);
X  
X  #ifndef NOFOCUS
X      attributes.background_pixmap = MakePixmap(tmp_win->title_w, TitleNormalGC,
X***************
X*** 336,343 ****
X      tmp_win->focus_w = XCreateWindow(dpy, tmp_win->title_w,
X  	tmp_win->attr.width - resize_width -3 - focus_width, TITLE_BAR_SPACE,
X  	iconify_width, iconify_height,
X! 	0, DefaultDepth(dpy, 0), CopyFromParent, DefaultVisual(dpy,0),
X! 	valuemask, &attributes);
X  #endif
X  
X      attributes.background_pixmap = MakePixmap(tmp_win->title_w, TitleNormalGC,
X--- 336,343 ----
X      tmp_win->focus_w = XCreateWindow(dpy, tmp_win->title_w,
X  	tmp_win->attr.width - resize_width -3 - focus_width, TITLE_BAR_SPACE,
X  	iconify_width, iconify_height,
X! 	0, d_depth, CopyFromParent,
X! 	d_visual, valuemask, &attributes);
X  #endif
X  
X      attributes.background_pixmap = MakePixmap(tmp_win->title_w, TitleNormalGC,
X***************
X*** 347,354 ****
X  	tmp_win->attr.width - resize_width - 1,
X  	TITLE_BAR_SPACE,
X  	resize_width, resize_height,
X! 	0, DefaultDepth(dpy, 0), CopyFromParent, DefaultVisual(dpy,0),
X! 	valuemask, &attributes);
X  	
X      valuemask = CWBackPixmap;
X      attributes.background_pixmap = MakePixmap(tmp_win->title_w, TitleNormalGC,
X--- 347,354 ----
X  	tmp_win->attr.width - resize_width - 1,
X  	TITLE_BAR_SPACE,
X  	resize_width, resize_height,
X! 	0, d_depth, CopyFromParent,
X! 	d_visual, valuemask, &attributes);
X  	
X      valuemask = CWBackPixmap;
X      attributes.background_pixmap = MakePixmap(tmp_win->title_w, TitleNormalGC,
X***************
X*** 357,364 ****
X      tmp_win->hilite_w = XCreateWindow(dpy, tmp_win->title_w,
X  	TitleBarX, 1,
X  	10, hilite_height,
X! 	0, DefaultDepth(dpy, 0), CopyFromParent, DefaultVisual(dpy,0),
X! 	valuemask, &attributes);
X  	
X      XDefineCursor(dpy, tmp_win->title_w, ArrowCursor);
X      XDefineCursor(dpy, tmp_win->iconify_w, ButtonCursor);
X--- 357,364 ----
X      tmp_win->hilite_w = XCreateWindow(dpy, tmp_win->title_w,
X  	TitleBarX, 1,
X  	10, hilite_height,
X! 	0, d_depth, CopyFromParent,
X! 	d_visual, valuemask, &attributes);
X  	
X      XDefineCursor(dpy, tmp_win->title_w, ArrowCursor);
X      XDefineCursor(dpy, tmp_win->iconify_w, ButtonCursor);
X***************
X*** 418,424 ****
X  	    */
X  
X  	    pm = XCreatePixmap(dpy, Root, tmp_win->icon_width,
X! 		tmp_win->icon_height, DefaultDepth(dpy, 0));
X  
X  	    /* the copy plane works on color ! */
X  	    XCopyPlane(dpy, bm, pm, IconNormalGC,
X--- 418,424 ----
X  	    */
X  
X  	    pm = XCreatePixmap(dpy, Root, tmp_win->icon_width,
X! 		tmp_win->icon_height, d_depth);
X  
X  	    /* the copy plane works on color ! */
X  	    XCopyPlane(dpy, bm, pm, IconNormalGC,
X***************
X*** 447,453 ****
X  	     &tmp_win->icon_width, &tmp_win->icon_height, &JunkBW, &JunkDepth);
X  
X  	pm = XCreatePixmap(dpy, Root, tmp_win->icon_width, tmp_win->icon_height,
X! 	    DefaultDepth(dpy, 0));
X  
X  	XCopyPlane(dpy, tmp_win->wmhints->icon_pixmap, pm, IconNormalGC,
X  	    0,0, tmp_win->icon_width, tmp_win->icon_height, 0, 0, 1 );
X--- 447,453 ----
X  	     &tmp_win->icon_width, &tmp_win->icon_height, &JunkBW, &JunkDepth);
X  
X  	pm = XCreatePixmap(dpy, Root, tmp_win->icon_width, tmp_win->icon_height,
X! 	    d_depth);
X  
X  	XCopyPlane(dpy, tmp_win->wmhints->icon_pixmap, pm, IconNormalGC,
X  	    0,0, tmp_win->icon_width, tmp_win->icon_height, 0, 0, 1 );
X***************
X*** 476,482 ****
X  	    */
X  
X  	    pm = XCreatePixmap(dpy, Root, tmp_win->icon_width,
X! 		tmp_win->icon_height, DefaultDepth(dpy, 0));
X  
X  	    /* the copy plane works on color ! */
X  	    XCopyPlane(dpy, bm, pm, IconNormalGC,
X--- 476,482 ----
X  	    */
X  
X  	    pm = XCreatePixmap(dpy, Root, tmp_win->icon_width,
X! 		tmp_win->icon_height, d_depth);
X  
X  	    /* the copy plane works on color ! */
X  	    XCopyPlane(dpy, bm, pm, IconNormalGC,
X***************
X*** 505,511 ****
X  	    tmp_win->icon_height, AllPlanes, XYPixmap);
X  
X  	pm = XCreatePixmap(dpy, Root, tmp_win->icon_width,
X! 	    tmp_win->icon_height, DefaultDepth(dpy, 0));
X  
X  	/* the copy plane works on color ! */
X  	XCopyPlane(dpy, UnknownPm, pm, IconNormalGC,
X--- 505,511 ----
X  	    tmp_win->icon_height, AllPlanes, XYPixmap);
X  
X  	pm = XCreatePixmap(dpy, Root, tmp_win->icon_width,
X! 	    tmp_win->icon_height, d_depth);
X  
X  	/* the copy plane works on color ! */
X  	XCopyPlane(dpy, UnknownPm, pm, IconNormalGC,
X***************
X*** 573,581 ****
X  
X  	tmp_win->icon_bm_w = XCreateWindow(dpy, tmp_win->icon_w,
X  	    x, 0, tmp_win->icon_width, tmp_win->icon_height,
X! 	    0, DefaultDepth(dpy, 0), CopyFromParent,
X! 	    DefaultVisual(dpy,0),
X! 	    valuemask, &attributes);
X      }
X  
X      XDefineCursor(dpy, tmp_win->icon_w, ArrowCursor);
X--- 573,580 ----
X  
X  	tmp_win->icon_bm_w = XCreateWindow(dpy, tmp_win->icon_w,
X  	    x, 0, tmp_win->icon_width, tmp_win->icon_height,
X! 	    0, d_depth, CopyFromParent,
X! 	    d_visual, valuemask, &attributes);
X      }
X  
X      XDefineCursor(dpy, tmp_win->icon_w, ArrowCursor);
Xdiff -c old/events.c new/events.c
X*** old/events.c	Fri Jun 17 07:17:23 1988
X--- new/events.c	Fri Jun 17 07:20:00 1988
X***************
X*** 25,31 ****
X  
X  /***********************************************************************
X   *
X!  * $Header: events.c,v 1.56 88/06/02 14:37:24 tlastran Exp $
X   *
X   * twm event handling
X   *
X--- 25,31 ----
X  
X  /***********************************************************************
X   *
X!  * $Header: events.c,v 1.59 88/06/17 06:48:15 tlastran Exp $
X   *
X   * twm event handling
X   *
X***************
X*** 35,41 ****
X  
X  #ifndef lint
X  static char RCSinfo[]=
X! "$Header: events.c,v 1.56 88/06/02 14:37:24 tlastran Exp $";
X  #endif
X  
X  #include <stdio.h>
X--- 35,41 ----
X  
X  #ifndef lint
X  static char RCSinfo[]=
X! "$Header: events.c,v 1.59 88/06/17 06:48:15 tlastran Exp $";
X  #endif
X  
X  #include <stdio.h>
X***************
X*** 250,256 ****
X  		 &JunkBW, &JunkDepth);
X  
X  	    pm = XCreatePixmap(dpy, Root, tmp_win->icon_width,
X! 		tmp_win->icon_height, DefaultDepth(dpy, screen));
X  
X  	    XCopyPlane(dpy, wmhints->icon_pixmap, pm, IconNormalGC,
X  		0,0, tmp_win->icon_width, tmp_win->icon_height, 0, 0, 1 );
X--- 250,256 ----
X  		 &JunkBW, &JunkDepth);
X  
X  	    pm = XCreatePixmap(dpy, Root, tmp_win->icon_width,
X! 		tmp_win->icon_height, d_depth);
X  
X  	    XCopyPlane(dpy, wmhints->icon_pixmap, pm, IconNormalGC,
X  		0,0, tmp_win->icon_width, tmp_win->icon_height, 0, 0, 1 );
X***************
X*** 263,270 ****
X  
X  	    tmp_win->icon_bm_w = XCreateWindow(dpy, tmp_win->icon_w,
X  		0, 0, tmp_win->icon_width, tmp_win->icon_height,
X! 		0, DefaultDepth(dpy, 0), CopyFromParent,
X! 		DefaultVisual(dpy,0),
X  		valuemask, &attributes);
X  
X  	    RedoIconName();
X--- 263,269 ----
X  
X  	    tmp_win->icon_bm_w = XCreateWindow(dpy, tmp_win->icon_w,
X  		0, 0, tmp_win->icon_width, tmp_win->icon_height,
X! 		0, d_depth, CopyFromParent, d_visual,
X  		valuemask, &attributes);
X  
X  	    RedoIconName();
X***************
X*** 472,481 ****
X      fprintf(stderr, "MapRequest\n");
X  #endif
X  
X-     /*
X-     XBell(dpy, 0);
X-     */
X- 
X      stat = XFindContext(dpy, event.xmaprequest.window, TwmContext, &tmp_win);
X      if (stat == XCNOENT)
X  	tmp_win = NULL;
X--- 471,476 ----
X***************
X*** 905,911 ****
X  	if (w == Root)
X  	{
X  	    RootFunction = NULL;
X! 	    XBell(dpy, 0);
X  	    return;
X  	}
X  
X--- 900,906 ----
X  	if (w == Root)
X  	{
X  	    RootFunction = NULL;
X! 	    XBell(dpy, screen);
X  	    return;
X  	}
X  
X***************
X*** 978,985 ****
X  	    XSetWindowBorder(dpy, tmp_win->frame, Foreground);
X  	    XSetWindowBorder(dpy, tmp_win->title_w, Foreground);
X  	    */
X! 	    XSetInputFocus(dpy, tmp_win->w, RevertToPointerRoot,
X! 		    CurrentTime);
X  	    XUngrabKeyboard(dpy, CurrentTime);
X  	    Focus = tmp_win;
X  	}
X--- 973,981 ----
X  	    XSetWindowBorder(dpy, tmp_win->frame, Foreground);
X  	    XSetWindowBorder(dpy, tmp_win->title_w, Foreground);
X  	    */
X! 	    if (TitleFocus)
X! 		XSetInputFocus(dpy, tmp_win->w, RevertToPointerRoot,
X! 			CurrentTime);
X  	    XUngrabKeyboard(dpy, CurrentTime);
X  	    Focus = tmp_win;
X  	}
X***************
X*** 1068,1075 ****
X  		*/
X  		XGrabKeyboard(dpy, Root, True, GrabModeAsync,
X  		    GrabModeAsync, CurrentTime);
X! 		XSetInputFocus(dpy, Root, RevertToPointerRoot,
X! 			CurrentTime);
X  		Focus = NULL;
X  	    }
X  	}
X--- 1064,1072 ----
X  		*/
X  		XGrabKeyboard(dpy, Root, True, GrabModeAsync,
X  		    GrabModeAsync, CurrentTime);
X! 		if (TitleFocus)
X! 		    XSetInputFocus(dpy, Root, RevertToPointerRoot,
X! 			    CurrentTime);
X  		Focus = NULL;
X  	    }
X  	}
Xdiff -c old/gc.c new/gc.c
X*** old/gc.c	Fri Jun 17 07:17:20 1988
X--- new/gc.c	Fri Jun 17 07:19:57 1988
X***************
X*** 25,31 ****
X  
X  /**********************************************************************
X   *
X!  * $Header: gc.c,v 1.8 88/06/03 10:31:55 tlastran Exp $
X   *
X   * Open the fonts and create the GCs
X   *
X--- 25,31 ----
X  
X  /**********************************************************************
X   *
X!  * $Header: gc.c,v 1.9 88/06/13 08:05:15 tlastran Exp $
X   *
X   * Open the fonts and create the GCs
X   *
X***************
X*** 35,41 ****
X  
X  #ifndef lint
X  static char RCSinfo[]=
X! "$Header: gc.c,v 1.8 88/06/03 10:31:55 tlastran Exp $";
X  #endif lint
X  
X  #include <stdio.h>
X--- 35,41 ----
X  
X  #ifndef lint
X  static char RCSinfo[]=
X! "$Header: gc.c,v 1.9 88/06/13 08:05:15 tlastran Exp $";
X  #endif lint
X  
X  #include <stdio.h>
X***************
X*** 98,105 ****
X  	Background = White;
X      }
X  
X-     mask = Foreground ^ Background;
X- 
X      gcm = 0;
X      gcm |= GCFont;	    gcv.font = TitleBarFont->fid;
X      gcm |= GCPlaneMask;	    gcv.plane_mask = AllPlanes;
X--- 98,103 ----
X***************
X*** 158,167 ****
X  
X      IconNormalGC = XCreateGC(dpy, Root, gcm, &gcv);
X  
X-     mask = Foreground ^ Background;
X      gcm = 0;
X      gcm |= GCFont;	    gcv.font = VersionFont->fid;
X!     gcm |= GCPlaneMask;	    gcv.plane_mask = mask;
X      gcm |= GCForeground;    gcv.foreground = Foreground;
X      gcm |= GCBackground;    gcv.background = Background;
X  
X--- 156,164 ----
X  
X      IconNormalGC = XCreateGC(dpy, Root, gcm, &gcv);
X  
X      gcm = 0;
X      gcm |= GCFont;	    gcv.font = VersionFont->fid;
X!     gcm |= GCPlaneMask;	    gcv.plane_mask = AllPlanes;
X      gcm |= GCForeground;    gcv.foreground = Foreground;
X      gcm |= GCBackground;    gcv.background = Background;
X  
X***************
X*** 169,175 ****
X  
X      gcm = 0;
X      gcm |= GCFont;	    gcv.font = SizeFont->fid;
X!     gcm |= GCPlaneMask;	    gcv.plane_mask = mask;
X      gcm |= GCForeground;    gcv.foreground = Foreground;
X      gcm |= GCBackground;    gcv.background = Background;
X  
X--- 166,172 ----
X  
X      gcm = 0;
X      gcm |= GCFont;	    gcv.font = SizeFont->fid;
X!     gcm |= GCPlaneMask;	    gcv.plane_mask = AllPlanes;
X      gcm |= GCForeground;    gcv.foreground = Foreground;
X      gcm |= GCBackground;    gcv.background = Background;
X  
X***************
X*** 177,183 ****
X  
X      gcm = 0;
X      gcm |= GCFont;	    gcv.font = InitialFont->fid;
X!     gcm |= GCPlaneMask;	    gcv.plane_mask = mask;
X      gcm |= GCForeground;    gcv.foreground = Foreground;
X      gcm |= GCBackground;    gcv.background = Background;
X  
X--- 174,180 ----
X  
X      gcm = 0;
X      gcm |= GCFont;	    gcv.font = InitialFont->fid;
X!     gcm |= GCPlaneMask;	    gcv.plane_mask = AllPlanes;
X      gcm |= GCForeground;    gcv.foreground = Foreground;
X      gcm |= GCBackground;    gcv.background = Background;
X  
Xdiff -c old/gram.h new/gram.h
X*** old/gram.h	Fri Jun 17 07:17:29 1988
X--- new/gram.h	Fri Jun 17 07:20:06 1988
X***************
X*** 75,78 ****
X  # define NO_RAISE_ON_RESIZE 324
X  # define COLOR 325
X  # define MONOCHROME 326
X! # define STRING 327
X--- 75,79 ----
X  # define NO_RAISE_ON_RESIZE 324
X  # define COLOR 325
X  # define MONOCHROME 326
X! # define NO_TITLE_FOCUS 327
X! # define STRING 328
Xdiff -c old/gram.y new/gram.y
X*** old/gram.y	Fri Jun 17 07:17:18 1988
X--- new/gram.y	Fri Jun 17 07:19:54 1988
X***************
X*** 25,31 ****
X  
X  /***********************************************************************
X   *
X!  * $Header: gram.y,v 1.26 88/06/03 10:45:44 tlastran Exp $
X   *
X   * .twmrc command grammer
X   *
X--- 25,31 ----
X  
X  /***********************************************************************
X   *
X!  * $Header: gram.y,v 1.27 88/06/09 07:51:49 tlastran Exp $
X   *
X   * .twmrc command grammer
X   *
X***************
X*** 35,41 ****
X  
X  %{
X  static char RCSinfo[]=
X! "$Header: gram.y,v 1.26 88/06/03 10:45:44 tlastran Exp $";
X  
X  #include <stdio.h>
X  #include "twm.h"
X--- 35,41 ----
X  
X  %{
X  static char RCSinfo[]=
X! "$Header: gram.y,v 1.27 88/06/09 07:51:49 tlastran Exp $";
X  
X  #include <stdio.h>
X  #include "twm.h"
X***************
X*** 78,84 ****
X  %token <num> MENU_TITLE_FOREGROUND MENU_TITLE_BACKGROUND
X  %token <num> ICON_FOREGROUND ICON_BACKGROUND ICON_BORDER_COLOR
X  %token <num> NO_RAISE_ON_MOVE NO_RAISE_ON_DEICONIFY NO_RAISE_ON_RESIZE
X! %token <num> COLOR MONOCHROME
X  %token <ptr> STRING
X  
X  %type <ptr> string
X--- 78,84 ----
X  %token <num> MENU_TITLE_FOREGROUND MENU_TITLE_BACKGROUND
X  %token <num> ICON_FOREGROUND ICON_BACKGROUND ICON_BORDER_COLOR
X  %token <num> NO_RAISE_ON_MOVE NO_RAISE_ON_DEICONIFY NO_RAISE_ON_RESIZE
X! %token <num> COLOR MONOCHROME NO_TITLE_FOCUS
X  %token <ptr> STRING
X  
X  %type <ptr> string
X***************
X*** 112,117 ****
X--- 112,118 ----
X  		| DONT_MOVE_OFF		{ if (FirstTime) DontMoveOff = TRUE; }
X  		| ZOOM			{ if (FirstTime) DoZoom = TRUE; }
X  		| BORDERWIDTH number	{ if (FirstTime) BorderWidth = $2; }
X+ 		| NO_TITLE_FOCUS	{ if (FirstTime) TitleFocus = FALSE; }
X  		| button string		{ root = GetRoot($2);
X  					  Mouse[$1][C_ROOT][0].func = F_MENU;
X  					  Mouse[$1][C_ROOT][0].menu = root;
Xdiff -c old/lex.l new/lex.l
X*** old/lex.l	Fri Jun 17 07:17:17 1988
X--- new/lex.l	Fri Jun 17 07:19:53 1988
X***************
X*** 26,32 ****
X  
X  /***********************************************************************
X   *
X!  * $Header: lex.l,v 1.29 88/06/03 10:45:41 tlastran Exp $
X   *
X   * .twmrc lex file
X   *
X--- 26,32 ----
X  
X  /***********************************************************************
X   *
X!  * $Header: lex.l,v 1.30 88/06/09 07:51:42 tlastran Exp $
X   *
X   * .twmrc lex file
X   *
X***************
X*** 35,41 ****
X   ***********************************************************************/
X  
X  static char RCSinfo[]=
X! "$Header: lex.l,v 1.29 88/06/03 10:45:41 tlastran Exp $";
X  
X  #include <stdio.h>
X  #include "gram.h"
X--- 35,41 ----
X   ***********************************************************************/
X  
X  static char RCSinfo[]=
X! "$Header: lex.l,v 1.30 88/06/09 07:51:42 tlastran Exp $";
X  
X  #include <stdio.h>
X  #include "gram.h"
X***************
X*** 110,115 ****
X--- 110,116 ----
X  {noraise}[Rr][Ee][Ss][Ii][Zz][Ee] { return NO_RAISE_ON_RESIZE; }
X  [Cc][Oo][Ll][Oo][Rr]		{ return (COLOR); }
X  [Mm][Oo][Nn][Oo][Cc][Hh][Rr][Oo][Mm][Ee] { return (MONOCHROME); }
X+ [Nn][Oo][Tt][Ii][Tt][Ll][Ee][Ff][Oo][Cc][Uu][Ss] { return (NO_TITLE_FOCUS); }
X  [Zz][Oo][Oo][Mm]		{ return (ZOOM); }
X  [Uu][Nn][Kk][Nn][Oo][Ww][Nn][Ii][Cc][Oo][Nn] { return UNKNOWN_ICON; }
X  [Ww][Aa][Rr][Pp][Cc][Uu][Rr][Ss][Oo][Rr] { return WARPCURSOR; }
Xdiff -c old/menus.c new/menus.c
X*** old/menus.c	Fri Jun 17 07:17:37 1988
X--- new/menus.c	Fri Jun 17 07:20:15 1988
X***************
X*** 25,31 ****
X  
X  /***********************************************************************
X   *
X!  * $Header: menus.c,v 1.34 88/06/03 10:45:54 tlastran Exp $
X   *
X   * twm menu code
X   *
X--- 25,31 ----
X  
X  /***********************************************************************
X   *
X!  * $Header: menus.c,v 1.36 88/06/17 06:48:19 tlastran Exp $
X   *
X   * twm menu code
X   *
X***************
X*** 35,41 ****
X  
X  #ifndef lint
X  static char RCSinfo[] =
X! "$Header: menus.c,v 1.34 88/06/03 10:45:54 tlastran Exp $";
X  #endif
X  
X  #include <stdio.h>
X--- 35,41 ----
X  
X  #ifndef lint
X  static char RCSinfo[] =
X! "$Header: menus.c,v 1.36 88/06/17 06:48:19 tlastran Exp $";
X  #endif
X  
X  #include <stdio.h>
X***************
X*** 242,249 ****
X  	tmp->pull = XCreateWindow(dpy, tmp->w,
X  	    0, 0,
X  	    pull_width, MenuFontHeight + 4,
X! 	    0, DefaultDepth(dpy, 0), CopyFromParent, DefaultVisual(dpy, 0),
X! 	    valuemask, &attributes);
X  
X  	XMapWindow(dpy, tmp->pull);
X  
X--- 242,249 ----
X  	tmp->pull = XCreateWindow(dpy, tmp->w,
X  	    0, 0,
X  	    pull_width, MenuFontHeight + 4,
X! 	    0, d_depth, CopyFromParent,
X! 	    d_visual, valuemask, &attributes);
X  
X  	XMapWindow(dpy, tmp->pull);
X  
X***************
X*** 278,284 ****
X      MenuRoot *menu;
X      int x, y;
X  {
X!     int d_width, d_height, m_height;
X      XWindowChanges xwc, pwc;
X      unsigned int xwcm, pwcm;
X      MenuItem *tmp;
X--- 278,284 ----
X      MenuRoot *menu;
X      int x, y;
X  {
X!     int m_height;
X      XWindowChanges xwc, pwc;
X      unsigned int xwcm, pwcm;
X      MenuItem *tmp;
X***************
X*** 325,339 ****
X      }
X      menu->mapped = TRUE;
X  
X-     d_width = DisplayWidth(dpy, DefaultScreen(dpy));
X-     d_height = DisplayHeight(dpy, DefaultScreen(dpy));
X      m_height = menu->items * (MenuFontHeight + 4);
X  
X!     if ((x + menu->width + 10) > d_width)
X! 	x = (d_width - menu->width - 20);
X  
X!     if ((y + m_height + 10) > d_height)
X! 	y = (d_height - m_height - 20);
X  
X      xwcm = 0;
X      xwcm |= CWX;
X--- 325,337 ----
X      }
X      menu->mapped = TRUE;
X  
X      m_height = menu->items * (MenuFontHeight + 4);
X  
X!     if ((x + menu->width + 10) > MyDisplayWidth)
X! 	x = (MyDisplayWidth - menu->width - 20);
X  
X!     if ((y + m_height + 10) > MyDisplayHeight)
X! 	y = (MyDisplayHeight - m_height - 20);
X  
X      xwcm = 0;
X      xwcm |= CWX;
Xdiff -c old/twm.c new/twm.c
X*** old/twm.c	Fri Jun 17 07:17:21 1988
X--- new/twm.c	Fri Jun 17 07:19:58 1988
X***************
X*** 25,31 ****
X  
X  /***********************************************************************
X   *
X!  * $Header: twm.c,v 1.38 88/06/03 10:45:37 tlastran Exp $
X   *
X   * twm - "Tom's Window Manager"
X   *
X--- 25,31 ----
X  
X  /***********************************************************************
X   *
X!  * $Header: twm.c,v 1.42 88/06/17 06:48:01 tlastran Exp $
X   *
X   * twm - "Tom's Window Manager"
X   *
X***************
X*** 35,41 ****
X  
X  #ifndef lint
X  static char RCSinfo[] =
X! "$Header: twm.c,v 1.38 88/06/03 10:45:37 tlastran Exp $";
X  #endif
X  
X  #include <stdio.h>
X--- 35,41 ----
X  
X  #ifndef lint
X  static char RCSinfo[] =
X! "$Header: twm.c,v 1.42 88/06/17 06:48:01 tlastran Exp $";
X  #endif
X  
X  #include <stdio.h>
X***************
X*** 58,63 ****
X--- 58,65 ----
X  
X  Display *dpy;			/* which display are we talking to */
X  int screen;			/* the default screen */
X+ int d_depth;			/* copy of DefaultDepth(dpy, screen) */
X+ Visual *d_visual;		/* copy of DefaultVisual(dpy, screen) */
X  
X  Window Root;			/* the root window */
X  Window VersionWindow;		/* the twm version window */
X***************
X*** 148,153 ****
X--- 150,156 ----
X  int DontMoveOff = FALSE;	/* don't allow windows to be moved off */
X  int DoZoom = FALSE;		/* zoom in and out of icons */
X  int Monochrome = COLOR;		/* is the display monochrome ? */
X+ int TitleFocus = TRUE;		/* focus on window in title bar ? */
X  char *Home;			/* the HOME environment variable */
X  int HomeLen;			/* length of Home */
X  int ParseError;			/* error parsing the .twmrc file */
X***************
X*** 242,247 ****
X--- 245,252 ----
X      }
X  
X      screen = DefaultScreen(dpy);
X+     d_depth = DefaultDepth(dpy, screen);
X+     d_visual = DefaultVisual(dpy, screen);
X      Root = RootWindow(dpy, screen);
X      CMap = DefaultColormap(dpy, screen);
X      MyDisplayWidth = DisplayWidth(dpy, screen);
X***************
X*** 251,257 ****
X      XSelectInput(dpy, Root,
X  	SubstructureRedirectMask |
X  	ButtonPressMask | ButtonReleaseMask | ExposureMask);
X!     XSync(dpy, 0);
X  
X      XSetErrorHandler(Error);
X      XSetInputFocus(dpy, Root, RevertToPointerRoot, CurrentTime);
X--- 256,262 ----
X      XSelectInput(dpy, Root,
X  	SubstructureRedirectMask |
X  	ButtonPressMask | ButtonReleaseMask | ExposureMask);
X!     XSync(dpy, screen);
X  
X      XSetErrorHandler(Error);
X      XSetInputFocus(dpy, Root, RevertToPointerRoot, CurrentTime);
X***************
X*** 271,277 ****
X      SkullCursor = XCreateFontCursor(dpy, XC_pirate);
X  
X      XGrabServer(dpy);
X!     XSync(dpy, 0);
X      XQueryTree(dpy, Root, &root, &parent, &children, &nchildren);
X  
X      /* setup default colors */
X--- 276,282 ----
X      SkullCursor = XCreateFontCursor(dpy, XC_pirate);
X  
X      XGrabServer(dpy);
X!     XSync(dpy, screen);
X      XQueryTree(dpy, Root, &root, &parent, &children, &nchildren);
X  
X      /* setup default colors */
X***************
X*** 291,297 ****
X      IconBackground = White;
X      IconBorderColor = Black;
X  
X!     if (DefaultDepth(dpy, screen) == 1)
X  	Monochrome = MONOCHROME;
X  
X      ParseTwmrc(NULL);
X--- 296,302 ----
X      IconBackground = White;
X      IconBorderColor = Black;
X  
X!     if (d_depth == 1)
X  	Monochrome = MONOCHROME;
X  
X      ParseTwmrc(NULL);
X***************
X*** 333,340 ****
X      XCreateWindow(dpy, VersionWindow,
X  	4, 1,
X  	twm_width, twm_height,
X! 	0, DefaultDepth(dpy, 0), CopyFromParent, DefaultVisual(dpy, 0),
X! 	valuemask, &attributes);
X  
X      XSelectInput(dpy, VersionWindow, ExposureMask);
X      XMapSubwindows(dpy, VersionWindow);
X--- 338,345 ----
X      XCreateWindow(dpy, VersionWindow,
X  	4, 1,
X  	twm_width, twm_height,
X! 	0, d_depth, CopyFromParent,
X! 	d_visual, valuemask, &attributes);
X  
X      XSelectInput(dpy, VersionWindow, ExposureMask);
X      XMapSubwindows(dpy, VersionWindow);
X***************
X*** 429,435 ****
X      /* Look for the window in the list, if it's there, remove it
X       * from the list, and continue on, else ignore the error.
X       * This is assumes that twm makes no errors. HaHa
X-      */
X      for (tmp = TwmRoot.next; tmp != NULL; tmp = tmp->next)
X      {
X  	if (tmp->w == event->resourceid)
X--- 434,439 ----
X***************
X*** 459,464 ****
X--- 463,469 ----
X  	    return;
X  	}
X      }
X+      */
X  
X      return;
X  
Xdiff -c old/twm.h new/twm.h
X*** old/twm.h	Fri Jun 17 07:17:34 1988
X--- new/twm.h	Fri Jun 17 07:20:11 1988
X***************
X*** 25,31 ****
X  
X  /***********************************************************************
X   *
X!  * $Header: twm.h,v 1.30 88/06/03 10:45:48 tlastran Exp $
X   *
X   * twm include file
X   *
X--- 25,31 ----
X  
X  /***********************************************************************
X   *
X!  * $Header: twm.h,v 1.32 88/06/17 06:48:09 tlastran Exp $
X   *
X   * twm include file
X   *
X***************
X*** 118,123 ****
X--- 118,125 ----
X  
X  extern Display *dpy;
X  extern int screen;
X+ extern int d_depth;
X+ extern Visual *d_visual;
X  
X  extern Window Root;
X  extern Window VersionWindow;
X***************
X*** 208,213 ****
X--- 210,216 ----
X  extern int NoRaiseResize;
X  extern int NoRaiseDeicon;
X  extern int Monochrome;
X+ extern int TitleFocus;
X  extern char *Home;
X  extern int HomeLen;
X  extern int ParseError;
Xdiff -c old/twm.man new/twm.man
X*** old/twm.man	Fri Jun 17 07:17:16 1988
X--- new/twm.man	Fri Jun 17 07:19:52 1988
X***************
X*** 229,234 ****
X--- 229,238 ----
X  .IP "\fBNoRaiseOnResize\fP" 20
X  If this variable is specified, windows will not be raised to the top of
X  the stacking order following a resize.
X+ .IP "\fBNoTitleFocus\fP" 20
X+ If this variable is specified, input focus will not be directed to windows
X+ when the pointer is in the title bar.  The default is to focus input to 
X+ a client when the pointer is in the title bar.
X  .IP "\fBResizeFont\fP \fIstring\fP" 20
X  This variable names the font to be displayed in the dimensions window
X  during window resize operations.
Xdiff -c old/util.c new/util.c
X*** old/util.c	Fri Jun 17 07:17:38 1988
X--- new/util.c	Fri Jun 17 07:20:16 1988
X***************
X*** 25,31 ****
X  
X  /***********************************************************************
X   *
X!  * $Header: util.c,v 1.17 88/06/03 06:39:10 tlastran Exp $
X   *
X   * utility routines for twm
X   *
X--- 25,31 ----
X  
X  /***********************************************************************
X   *
X!  * $Header: util.c,v 1.21 88/06/17 07:15:25 tlastran Exp $
X   *
X   * utility routines for twm
X   *
X***************
X*** 35,41 ****
X  
X  #ifndef lint
X  static char RCSinfo[]=
X! "$Header: util.c,v 1.17 88/06/03 06:39:10 tlastran Exp $";
X  #endif
X  
X  #include <stdio.h>
X--- 35,41 ----
X  
X  #ifndef lint
X  static char RCSinfo[]=
X! "$Header: util.c,v 1.21 88/06/17 07:15:25 tlastran Exp $";
X  #endif
X  
X  #include <stdio.h>
X***************
X*** 334,340 ****
X      Pixmap pid;
X      int dx, dy;
X  
X!     pid = XCreatePixmap(dpy, w, width, height, DefaultDepth(dpy, 0));
X  
X      ximage.height = pheight;
X      ximage.width = pwidth;
X--- 334,340 ----
X      Pixmap pid;
X      int dx, dy;
X  
X!     pid = XCreatePixmap(dpy, w, width, height, d_depth);
X  
X      ximage.height = pheight;
X      ximage.width = pwidth;
X***************
X*** 519,525 ****
X  int *what;
X  char *name;
X  {
X-     int stat;
X      XColor color, junkcolor;
X  
X      if (!FirstTime)
X--- 519,524 ----
X***************
X*** 528,543 ****
X      if (Monochrome != kind)
X  	return;
X  
X!     stat = XAllocNamedColor(dpy, CMap, name, &color, &junkcolor);
X!     switch (stat)
X      {
X!     case BadAlloc:
X!     case BadColor:
X!     case BadName:
X! 	fprintf(stderr, "twm: invalid color \"%s\" %d\n", name, stat);
X! 	break;
X  
X!     default:
X! 	*what = color.pixel;
X      }
X  }
X--- 527,543 ----
X      if (Monochrome != kind)
X  	return;
X  
X!     if (!XParseColor(dpy, CMap, name, &color))
X      {
X! 	fprintf(stderr, "twm: invalid color \"%s\"\n", name);
X! 	return;
X!     }
X  
X!     if (!XAllocColor(dpy, CMap, &color))
X!     {
X! 	fprintf(stderr, "twm: invalid color \"%s\"\n", name);
X! 	return;
X      }
X+ 
X+     *what = color.pixel;
X  }
Xdiff -c old/version.c new/version.c
X*** old/version.c	Fri Jun 17 07:17:39 1988
X--- new/version.c	Fri Jun 17 07:20:16 1988
X***************
X*** 25,31 ****
X  
X  /***********************************************************************
X   *
X!  * $Header: version.c,v 3.0 88/06/03 11:32:05 tlastran Exp $
X   *
X   * twm version number
X   *
X--- 25,31 ----
X  
X  /***********************************************************************
X   *
X!  * $Header: version.c,v 3.1 88/06/17 06:44:19 tlastran Exp $
X   *
X   * twm version number
X   *
X***************
X*** 34,40 ****
X   ***********************************************************************/
X  
X  static char RCSinfo[]=
X! "$Header: version.c,v 3.0 88/06/03 11:32:05 tlastran Exp $";
X  
X! char *Revision = "$Revision: 3.0 $";
X! char *Date = "$Date: 88/06/03 11:32:05 $";
X--- 34,40 ----
X   ***********************************************************************/
X  
X  static char RCSinfo[]=
X! "$Header: version.c,v 3.1 88/06/17 06:44:19 tlastran Exp $";
X  
X! char *Revision = "$Revision: 3.1 $";
X! char *Date = "$Date: 88/06/17 06:44:19 $";
SHAR_EOF
if test 28773 -ne "`wc -c < twm.patches`"
then
    echo shar: error transmitting "twm.patches" '(should have been 28773 characters)'
fi
fi
# end of shell archive
exit 0