jkh@ardent.UUCP (Jordan K. Hubbard) (06/06/88)
#! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 4 (of 8)." # Contents: Makefile.rtl RubberBand.c Titlebar.c globals.c # Wrapped by jkh@ardent on Sun Jun 5 18:56:31 1988 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'Makefile.rtl' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'Makefile.rtl'\" else echo shar: Extracting \"'Makefile.rtl'\" \(10660 characters\) sed "s/^X//" >'Makefile.rtl' <<'END_OF_FILE' X# makefile generated by mkold X XXDIR = /usr/src/X.V11R2 X COM.00 = $(XDIR)/lib DIR.00 = $(COM.00)/oldX DIR.01 = $(COM.00)/X X NEATENOBJS = \ X check_can_mod.o check_grow.o check_shrink.o \ X commit_op.o goal.o gravity.o mem.o state.o \ X tilwin_close.o tilwin_create.o tilwin_desk.o \ X tilwin_dump.o tilwin_init.o tilwin_list.o tilwin_misc.o \ X tilwin_open.o tilwin_resat.o tilwin_resize.o \ X tilwin_set.o tilwin_tmp.o tilwin_undo.o trial_grow.o \ X trial_place.o trial_satisfy.o trial_slide.o \ X tilwin_slide.o trial_edge_sweep.o win.o tilwin_thread.o \ X init_tws.o pieces_enum.o pieces_merge.o pieces_split.o \ X pieces_update.o tile_create.o tile_delete.o \ X tile_enlarge.o tile_find.o tile_nbrs.o tile_panic.o \ X tile_shrink.o tileopts.o userglobals.o neaten.o X neaten.a: $(NEATENOBJS) X ar qcv neaten.a $(NEATENOBJS) X ranlib neaten.a X check_can_mod.o : check_can_mod.c tilwin.extern.h state.extern.h \ X state.h tilwin.intern.h tilwin.h tilwinopts.h basetype.h \ X std_defs.h tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c check_can_mod.c X check_grow.o : check_grow.c win.extern.h tile.extern.h tile.h \ X basetype.h std_defs.h state.extern.h state.h \ X tilwin.intern.h tilwin.h tilwinopts.h tilwin.extern.h \ X tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c check_grow.c X check_shrink.o : check_shrink.c goal.extern.h tilwin.extern.h \ X state.extern.h state.h tilwin.intern.h tilwin.h \ X tilwinopts.h basetype.h std_defs.h tilwin.define.h \ X tileopts.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c check_shrink.c X commit_op.o : commit_op.c win.extern.h tile.extern.h tile.h basetype.h \ X std_defs.h state.extern.h state.h tilwin.intern.h \ X tilwin.h tilwinopts.h tilwin.define.h tileopts.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c commit_op.c X goal.o : goal.c tilwin.define.h tileopts.h tilwin.intern.h tilwin.h \ X tilwinopts.h basetype.h std_defs.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c goal.c X gravity.o : gravity.c tilwin.extern.h state.extern.h state.h \ X tilwin.intern.h tilwin.h tilwinopts.h basetype.h \ X std_defs.h tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c gravity.c X mem.o : mem.c tile.h basetype.h std_defs.h tilwin.intern.h tilwin.h \ X tilwinopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c mem.c X state.o : state.c tilwin.intern.h tilwin.h tilwinopts.h basetype.h \ X std_defs.h state.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c state.c X tilwin_close.o : tilwin_close.c state.extern.h state.h tilwin.intern.h \ X tilwin.h tilwinopts.h basetype.h std_defs.h win.extern.h \ X tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_close.c X tilwin_create.o : tilwin_create.c mem.extern.h state.extern.h state.h \ X tilwin.intern.h tilwin.h tilwinopts.h basetype.h \ X std_defs.h tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_create.c X tilwin_desk.o : tilwin_desk.c gravity.extern.h basetype.h std_defs.h \ X tile.extern.h tile.h tilwin.extern.h state.extern.h \ X state.h tilwin.intern.h tilwin.h tilwinopts.h \ X copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_desk.c X tilwin_dump.o : tilwin_dump.c win.extern.h tilwin.extern.h \ X state.extern.h state.h tilwin.intern.h tilwin.h \ X tilwinopts.h basetype.h std_defs.h tilwin.define.h \ X tileopts.h tile.extern.h tile.h tile.define.h \ X tile.intern.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_dump.c X tilwin_init.o : tilwin_init.c tile.intern.h tile.h basetype.h \ X std_defs.h tilwin.intern.h tilwin.h tilwinopts.h \ X copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_init.c X tilwin_list.o : tilwin_list.c state.extern.h state.h tilwin.intern.h \ X tilwin.h tilwinopts.h basetype.h std_defs.h \ X tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_list.c X tilwin_misc.o : tilwin_misc.c win.extern.h tile.extern.h tile.h \ X basetype.h std_defs.h tile.define.h tile.intern.h \ X state.extern.h state.h tilwin.intern.h tilwin.h \ X tilwinopts.h tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_misc.c X tilwin_open.o : tilwin_open.c win.extern.h gravity.extern.h basetype.h \ X std_defs.h commit.extern.h trial.extern.h trial.h \ X state.extern.h state.h tilwin.intern.h tilwin.h \ X tilwinopts.h tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_open.c X tilwin_resat.o : tilwin_resat.c win.extern.h commit.extern.h \ X trial.extern.h trial.h state.extern.h state.h \ X tilwin.intern.h tilwin.h tilwinopts.h basetype.h \ X std_defs.h tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_resat.c X tilwin_resize.o : tilwin_resize.c gravity.extern.h basetype.h \ X std_defs.h win.extern.h commit.extern.h trial.extern.h \ X trial.h state.extern.h state.h tilwin.intern.h tilwin.h \ X tilwinopts.h tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_resize.c X tilwin_set.o : tilwin_set.c trial.extern.h trial.h state.extern.h \ X state.h tilwin.intern.h tilwin.h tilwinopts.h basetype.h \ X std_defs.h tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_set.c X tilwin_tmp.o : tilwin_tmp.c trial.h state.extern.h state.h \ X tilwin.intern.h tilwin.h tilwinopts.h basetype.h \ X std_defs.h trial.extern.h tilwin.define.h tileopts.h \ X copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_tmp.c X tilwin_undo.o : tilwin_undo.c win.extern.h state.extern.h state.h \ X tilwin.intern.h tilwin.h tilwinopts.h basetype.h \ X std_defs.h tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_undo.c X trial_grow.o : trial_grow.c check.extern.h gravity.extern.h basetype.h \ X std_defs.h tilwin.extern.h state.extern.h state.h \ X tilwin.intern.h tilwin.h tilwinopts.h tilwin.define.h \ X tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c trial_grow.c X trial_place.o : trial_place.c check.extern.h gravity.extern.h \ X basetype.h std_defs.h tilwin.extern.h state.extern.h \ X state.h tilwin.intern.h tilwin.h tilwinopts.h \ X tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c trial_place.c X trial_satisfy.o : trial_satisfy.c check.extern.h gravity.extern.h \ X basetype.h std_defs.h tilwin.extern.h state.extern.h \ X state.h tilwin.intern.h tilwin.h tilwinopts.h \ X tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c trial_satisfy.c X trial_slide.o : trial_slide.c trial.extern.h trial.h tilwin.extern.h \ X state.extern.h state.h tilwin.intern.h tilwin.h \ X tilwinopts.h basetype.h std_defs.h tilwin.define.h \ X tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c trial_slide.c X tilwin_slide.o : tilwin_slide.c trial.extern.h trial.h tilwin.extern.h \ X state.extern.h state.h tilwin.intern.h tilwin.h \ X tilwinopts.h basetype.h std_defs.h tilwin.define.h \ X tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_slide.c X trial_edge_sweep.o : trial_edge_sweep.c tilwin.extern.h state.extern.h \ X state.h tilwin.intern.h tilwin.h tilwinopts.h basetype.h \ X std_defs.h tile.extern.h tile.h tile.define.h \ X tile.intern.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c trial_edge_sweep.c X win.o : win.c gravity.extern.h basetype.h std_defs.h state.extern.h \ X state.h tilwin.intern.h tilwin.h tilwinopts.h \ X tile.define.h tile.intern.h tile.h tile.extern.h \ X tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c win.c X tilwin_thread.o : tilwin_thread.c state.extern.h state.h \ X tilwin.intern.h tilwin.h tilwinopts.h basetype.h \ X std_defs.h tilwin.define.h tileopts.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tilwin_thread.c X init_tws.o : init_tws.c tile-list.h tile.define.h tile.intern.h tile.h \ X basetype.h std_defs.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c init_tws.c X pieces_enum.o : pieces_enum.c tile.extern.h tile.h basetype.h \ X std_defs.h tile-list.h tile.define.h tile.intern.h \ X copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c pieces_enum.c X pieces_merge.o : pieces_merge.c tile-list.h tile.define.h tile.intern.h \ X tile.h basetype.h std_defs.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c pieces_merge.c X pieces_split.o : pieces_split.c tile.extern.h tile.h basetype.h \ X std_defs.h tile-list.h tile.define.h tile.intern.h \ X copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c pieces_split.c X pieces_update.o : pieces_update.c tile-list.h tile.define.h \ X tile.intern.h tile.h basetype.h std_defs.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c pieces_update.c X tile_create.o : tile_create.c tile.extern.h tile.h basetype.h \ X std_defs.h tile.define.h tile.intern.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tile_create.c X tile_delete.o : tile_delete.c tile.extern.h tile.h basetype.h \ X std_defs.h tile-list.h tile.define.h tile.intern.h \ X copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tile_delete.c X tile_enlarge.o : tile_enlarge.c tile.extern.h tile.h basetype.h \ X std_defs.h tile.define.h tile.intern.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tile_enlarge.c X tile_find.o : tile_find.c tilwin.extern.h state.extern.h state.h \ X tilwin.intern.h tilwin.h tilwinopts.h basetype.h \ X std_defs.h tile.define.h tile.intern.h tile.h \ X copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tile_find.c X tile_nbrs.o : tile_nbrs.c tile-list.h tile.extern.h tile.h basetype.h \ X std_defs.h tile.define.h tile.intern.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tile_nbrs.c X tile_panic.o : tile_panic.c copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tile_panic.c X tile_shrink.o : tile_shrink.c tile.define.h tile.intern.h tile.h \ X basetype.h std_defs.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tile_shrink.c X tileopts.o : tileopts.c tileopts.h basetype.h std_defs.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c tileopts.c X userglobals.o : userglobals.c explicitopts.h uservals.h useropts.h \ X basetype.h std_defs.h copyright.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c userglobals.c X neaten.o : neaten.c neaten.define.h tilwin.define.h tileopts.h \ X tilwin.intern.h tilwin.h tilwinopts.h basetype.h \ X std_defs.h userwin.define.h tilwin.extern.h \ X state.extern.h state.h userglobals.define.h userwin.h \ X explicitwinopts.h userwinopts.h X $(CC) $(CFLAGS) -g -DNEATEN -DWM_DEBUG -c neaten.c END_OF_FILE if test 10660 -ne `wc -c <'Makefile.rtl'`; then echo shar: \"'Makefile.rtl'\" unpacked with wrong size! fi # end of 'Makefile.rtl' fi if test -f 'RubberBand.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'RubberBand.c'\" else echo shar: Extracting \"'RubberBand.c'\" \(11218 characters\) sed "s/^X//" >'RubberBand.c' <<'END_OF_FILE' X/* $Header: RubberBand.c,v 1.20 87/09/02 15:28:22 swick Exp $ */ X/* derived from XCreateTerm.c */ X X#include "X11/copyright.h" X X/* X * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. X * X * All Rights Reserved X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, X * provided that the above copyright notice appear in all copies and that X * both that copyright notice and this permission notice appear in X * supporting documentation, and that the name of Digital Equipment X * Corporation not be used in advertising or publicity pertaining to X * distribution of the software without specific, written prior permission. X * X * X * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING X * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL X * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR X * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, X * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, X * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS X * SOFTWARE. X */ X X/* X * MODIFICATION HISTORY X * X * 000 -- Loretta Guarino Reid, DEC Ultrix Engineering Group X * 001 -- Ralph R. Swick, DEC/MIT Project Athena X * tailor to uwm; use global resources created by uwm X */ X X#include "awm.h" X#include "X11/Xutil.h" X#include "X11/cursorfont.h" X X#define max(a,b) ( (a) > (b) ? (a) : (b) ) X#define min(a,b) ( (a) > (b) ? (b) : (a) ) X#define abs(a) ( (a) > 0 ? (a) : -(a)) X#define makemult(a, b) ((b==1) ? (a) : (((int)((a) / (b))) * (b)) ) X X#define DCOUNT 2 X#define PCOUNT 1 + (4 * 2 * DCOUNT) X X#define BW PBorderWidth /* pop-up window border width */ X#define IBW PPadding /* internal border width for pop-up */ X AskUser(dpy, scr, window, x, y, width, height, hints) Display *dpy; int scr; Window window; int *x, *y, *width, *height; XXSizeHints *hints; X{ X Cursor ur, ul, ll, lr; /* cursors for rubber banding */ X int change_cursor = FALSE; X int current_cursor; X char *text; /* text for prompt string */ X int nz; /* count where zeros are */ X int popw, poph; /* width and height of prompt window*/ X#define invertGC DrawGC X int x1, y1; /* location of mouse */ X int x2, y2; /* other corner of box */ X int rootx, rooty, mask; /* for XQueryPointer */ X Window root, subw; /* for XQueryPointer */ X int xa = -1, ya = -1, xb = -1, yb = -1; X int xinc, yinc; X int minwidth, minheight; X int maxwidth, maxheight; X int defwidth, defheight; X int chosen = -1; X int stop = FALSE; X int changed = TRUE; X int doit = FALSE; X int dx, dy; X int delta; X XPoint box[PCOUNT]; X int hsize, vsize; X int zero = '0'; /* zero offset for char conversion */ X XEvent e; /* someplace to put the event */ X int events; /* what events we want. */ X Window pop; /* pop up prompt window */ X int i; X char *name; X int width_offset, height_offset; /* to subtract if resize increments */ X X Entry("AskUser") X X if ((hints->flags & USPosition) && (hints->flags & USSize)) { X *x = hints->x; X *y = hints->y; X *width = hints->width; X *height = hints->height; X Leave_void X } X if (!XFetchName(dpy, window, &name)) X name = "Unnamed Window"; X X ur = XCreateFontCursor(dpy, XC_ur_angle); X ul = XCreateFontCursor(dpy, XC_ul_angle); X ll = XCreateFontCursor(dpy, XC_ll_angle); X lr = XCreateFontCursor(dpy, XC_lr_angle); X current_cursor = ul; X X events = ButtonPressMask | ButtonReleaseMask; X X /* X * go get the mouse as soon as you can X */ X X while (1) { X int res; X if ((res = XGrabPointer (dpy, RootWindow(dpy, scr), FALSE, events, X GrabModeAsync, GrabModeAsync, None, ul, X CurrentTime )) == GrabSuccess) X break; X sleep (1); X } X nz = strlen(name); /* compute number of characters */ X text = (char *)malloc( nz + 11 ); X (void) strcpy(text, name); X (void) strcat(text, ": 000x000"); X nz += 9; X popw = XTextWidth (PFontInfo, text, nz) + 2 * IBW; X poph = PFontInfo->ascent+PFontInfo->descent + 2 * IBW; X X pop = XCreateSimpleWindow(dpy, RootWindow(dpy, scr), X 0, 0, popw, poph, BW, PBorder, PBackground); X XMapWindow (dpy, pop); X X if (hints->flags & PMinSize) { X minwidth = hints->min_width; X minheight = hints->min_height; X } else { X minwidth = 0; X minheight = 0; X } X if (hints->flags & PMaxSize) { X maxwidth = max(hints->max_width, minwidth); X maxheight = max(hints->max_height, minheight); X } else { X maxwidth = DisplayWidth(dpy, scr); X maxheight = DisplayHeight(dpy, scr); X } X if (hints->flags & PResizeInc) { X xinc = hints->width_inc; X yinc = hints->height_inc; X } else { X xinc = 1; X yinc = 1; X } X if (hints->flags & PSize || hints->flags & USSize) { X defwidth = hints->width; X defheight = hints->height; X } else if (hints->flags&PMinSize) { X defwidth = hints->min_width; X defheight = hints->min_height; X } else if (hints->flags&PMaxSize) { X defwidth = hints->max_width; X defheight = hints->max_height; X } else { X long dummy; X XGetGeometry(dpy, window, &dummy, &dummy, &dummy, X &defwidth, &defheight, &dummy, &dummy); X } X X /* until there are better WM_HINTS, we'll assume that the client's X * minimum width and height are the appropriate offsets to subtract X * when resizing with an explicit resize increment. X */ X if (hints->flags & PMinSize && hints->flags & PResizeInc) { X width_offset = hints->min_width; X height_offset = hints->min_height; X } else X width_offset = height_offset = 0; X X X XQueryPointer (dpy, RootWindow(dpy, scr), &root, &subw, X &rootx, &rooty, &x1, &y1, &mask); X hsize = minwidth; X vsize = minheight; X x2 = x1+hsize; X y2 = y1+vsize; X X while (stop == FALSE) { X if ( (xb != max (x1, x2)) || (yb != max (y1, y2)) X ||(xa != min (x1, x2)) || (ya != min (y1, y2)) ) { X xa = min (x1, x2); X ya = min (y1, y2); X xb = max (x1, x2); X yb = max (y1, y2); X for ( i = 0; i < PCOUNT; i += 4) { X box[i].x = xa; box[i].y = ya; X if (i+1 == PCOUNT) break; X box[i+1].x = xb; box[i+1].y = ya; X box[i+2].x = xb; box[i+2].y = yb; X box[i+3].x = xa; box[i+3].y = yb; X } X doit = TRUE; X } X if (changed) { X int Hsize = (hsize - width_offset) / xinc; X int Vsize = (vsize - height_offset) / yinc; X int pos = 3; X X changed = FALSE; X text[nz - 7] = (Hsize>99) ? (Hsize / 100 + zero) : ' '; X text[nz - 6] = (Hsize>9) ? ((Hsize / 10) % 10 + zero) : ' '; X text[nz - 5] = Hsize % 10 + zero; X if (Vsize>99) text[nz - pos--] = Vsize / 100 + zero; X if (Vsize>9) text[nz - pos--] = (Vsize / 10) % 10 + zero; X text[nz - pos--] = Vsize % 10 + zero; X while (pos>0) text[nz - pos--] = ' '; X XDrawImageString(dpy, pop, PopGC, IBW, IBW+PFontInfo->ascent, X text, nz); X } X if (doit) { X XDrawLines(dpy, RootWindow(dpy, scr), invertGC, box, PCOUNT, X CoordModeOrigin); X } X if (XPending(dpy) && X XCheckMaskEvent(dpy, ButtonPressMask|ButtonReleaseMask, &e)) { X if ((chosen < 0) && (e.type == ButtonPress)) { X x1 = x2 = ((XButtonEvent *)&e)->x; X y1 = y2 = ((XButtonEvent *)&e)->y; X chosen = ((XButtonEvent *)&e)->button; X if (chosen == Button2) X change_cursor = TRUE; X } X else if ((e.type == ButtonRelease) && X ((((XButtonEvent *)&e)->button) == chosen)) { X x2 = ((XButtonEvent *)&e)->x; X y2 = ((XButtonEvent *)&e)->y; X stop = TRUE; X } X else X XQueryPointer (dpy, RootWindow(dpy, scr), &root, X &subw, &rootx, &rooty, &x2, &y2, &mask); X } X else XQueryPointer (dpy, RootWindow(dpy, scr), &root, X &subw, &rootx, &rooty, &x2, &y2, &mask); X if (change_cursor) { X if ((x2 >= x1) && (y2 >= y1) && X current_cursor != lr) { X XChangeActivePointerGrab (dpy, events, lr, CurrentTime ); X current_cursor = lr; X } X else if ((x2 >= x1) && (y2 < y1) && X current_cursor != ur) { X XChangeActivePointerGrab (dpy, events, ur, CurrentTime ); X current_cursor = ur; X } X else if ((x2 < x1) && (y2 >= y1) && X current_cursor != ll) { X XChangeActivePointerGrab (dpy, events, ll, CurrentTime ); X current_cursor = ll; X } X else if ((x2 < x1) && (y2 < y1) && X (current_cursor != ul)) { X XChangeActivePointerGrab (dpy, events, ul, CurrentTime ); X current_cursor = ul; X } X } X if (chosen != Button2) { X x1 = x2; X y1 = y2; X if (chosen >= 0) { X x2 = defwidth; X if (chosen == Button1) X y2 = defheight; X else X y2 = (DisplayHeight(dpy, scr) - y1); X x2 = x1 + x2; X y2 = y1 + y2; X } X } X X dx = max(min(abs (x2 - x1), maxwidth), minwidth); X dx = makemult(dx-minwidth, xinc)+minwidth; X dy = max(min(abs(y2 - y1), maxheight), minheight); X dy = makemult(dy-minheight, yinc)+minheight; X X if (hints->flags & PAspect) { X if ((dx * hints->max_aspect.y > dy * hints->max_aspect.x)) { X delta = makemult((dx * hints->max_aspect.y / X hints->max_aspect.x) - dy, yinc); X if ((dy + delta) <= maxheight) X dy += delta; X else { X delta = makemult(dx - hints->max_aspect.x X * dy/hints->max_aspect.y, xinc); X if ((dx - delta) >= minwidth) X dx -= delta; X } X } X if (dx * hints->min_aspect.y < dy * hints->min_aspect.x) { X delta = makemult((hints->min_aspect.x * X dy/hints->min_aspect.y) - dx, xinc); X if (dx + delta <= maxwidth) X dx += delta; X else { X delta = makemult(dy - (dx * hints->min_aspect.y / X hints->min_aspect.x), yinc); X if ((dy - delta) >= minheight) X dy -= delta; X } X } X X } X X if (dx != hsize) { X hsize = dx; X changed = TRUE; X } X if (dy != vsize) { X vsize = dy; X changed = TRUE; X } X if (x2 < x1) X x2 = x1 - dx; X else X x2 = x1 + dx; X X if (y2 < y1) X y2 = y1 - dy; X else X y2 = y1 + dy; X } X XUngrabPointer(dpy, CurrentTime); X X XDestroyWindow (dpy, pop); X XFreeCursor (dpy, ur); X XFreeCursor (dpy, ul); X XFreeCursor (dpy, lr); X XFreeCursor (dpy, ll); X free(name); X free(text); X *x = min(x1, x2); X *y = min(y1, y2); X *width = hsize; X *height = vsize; X XSync(dpy, FALSE); X Leave_void X} END_OF_FILE if test 11218 -ne `wc -c <'RubberBand.c'`; then echo shar: \"'RubberBand.c'\" unpacked with wrong size! fi # end of 'RubberBand.c' fi if test -f 'Titlebar.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'Titlebar.c'\" else echo shar: Extracting \"'Titlebar.c'\" \(12143 characters\) sed "s/^X//" >'Titlebar.c' <<'END_OF_FILE' X#ifndef lint static char *rcsid_TitleBar_c = "$Header: TitleBar.c,v 1.0 87/12/02 03:26:00 jkh Exp $"; X#endif lint X X/* X * MODIFICATION HISTORY X * X * 002 -- Jordan Hubbard, U.C. Berkeley. X Title bar support routines. X */ X X#include "awm.h" X#include "X11/Xutil.h" X int Pad; int Fheight; static Boolean init_done = False; Cursor TitleCursor, FrameCursor; int TB_wide, TB_high, TBB_wide, TBB_high, BC_wide, BC_high; int BCB_wide, BCB_high; X extern XContext AwmContext; X X#define BLANK_WIDE 16 X#define BLANK_HIGH 16 static char blank_bits[] = { X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; X void Init_Titles() X{ X int t_wide, t_high, junk; X register char *cp; X X Entry("Init_Titles") X X TFontInfo = GetFontRes("title.font", DEF_TITLE_FONT); X TFontBoldInfo = GetFontRes("title.boldFont", NULL); X TBackPixmapData = GetPixmapDataRes("title.pixmap", &TB_wide, &TB_high); X TBoldPixmapData = GetPixmapDataRes("title.boldPixmap", &TBB_wide, X &TBB_high); X BBackPixmapData = GetPixmapDataRes("BC.pixmap", &BC_wide, &BC_high); X BBoldPixmapData = GetPixmapDataRes("BC.boldPixmap", &BCB_wide, &BCB_high); X TForeground = GetColorRes("title.foreground", ForeColor); X TBackground = GetColorRes("title.background", BackColor); X TTextForeground = GetColorRes("title.text.foreground", TForeground); X TTextBackground = GetColorRes("title.text.background", TBackground); X Pad = GetIntRes("title.pad", 2); X Fheight = TFontInfo->max_bounds.ascent + X TFontInfo->max_bounds.descent + (Pad * 2); X /* we've specified a bold pixmap, but no back pixmap. Use blank. */ X if (TBoldPixmapData && !TBackPixmapData) { X TBackPixmapData = blank_bits; X TB_wide = BLANK_WIDE; X TB_high = BLANK_HIGH; X } X /* we've specified a bold BC pixmap, but no back pixmap. Use blank. */ X if (BBoldPixmapData && !BBackPixmapData) { X BBackPixmapData = blank_bits; X BC_wide = BLANK_WIDE; X BC_high = BLANK_HIGH; X } X if (TFontBoldInfo) { X int foo; X X foo = TFontBoldInfo->max_bounds.ascent + X TFontBoldInfo->max_bounds.descent + (Pad * 2); X if (foo > Fheight) X Fheight = foo; X } X TitleCursor = XCreateFontCursor(dpy, TCursor); X if (BContext) { X FrameCursor = XCreateFontCursor(dpy, BCursor); X if (!FrameCursor) X Error("Init_Titles: Can't get border cursor #%d!\n", BCursor); X } X if (!TitleCursor) X Error("Init_Titles: Can't get title cursor #%d!\n", TCursor); X init_done = True; X Leave_void X} X char *GetTitleName(w) Window w; X{ X char *cp = 0, *tmp; X X Entry("GetTitleName") X X if (!XFetchName(dpy, w, &cp) || !cp) X cp = "Untitled Window"; X tmp = (char *)malloc(strlen(cp) + 3); X X /* X * We add a space on both ends for asthetic effect X * (only apparent if we're using inverse video). X */ X tmp[0] = ' '; X strcpy(tmp + 1, cp); X strcat(tmp, " "); X free(cp); X Leave(tmp) X} X X/* Function for f.title */ Boolean FAddTitle(w, mask, button, x, y) Window w; int mask, button, x, y; X{ X Entry("FAddTitle") X X if (w == RootWindow(dpy, scr)) X Leave(FALSE) X XMapWindow(dpy, AddTitle(w)); X XSync(dpy, FALSE); X Leave(TRUE) X} X Window AddTitle(w) Window w; X{ X Window root; X int x, y, width, height, bw, depth, status, bch, bcv; X Window foster, title; X AwmInfoPtr awi; X char *icon_name, *cp = 0; X char *class_string = 0; X char *name = 0, *class; X XWMHints *wm_hints; X XSizeHints sz_hints; X XClassHint class_hints; X Binding *bptr; X unsigned long valuemask; X XWindowAttributes xwa; X XSetWindowAttributes swa; X XWindowChanges wc; X unsigned long form, len, after; X Atom a_type; X X Entry("AddTitle") X X /* X * First we see if this window even wants a title. X */ X if (IsTitled(w)) X Leave((Window)NULL) X awi = GetAwmInfo(w); X status = XGetWindowProperty(dpy, w, XA_WM_CLASS, 0, 256, False, X XA_STRING, &a_type, &form, &len, &after, X &class_string); X if (status == Success && form == 8 && len && class_string && !after) { X class_string[len] = '\0'; X class = class_string; X if (len > strlen(class_string)) X name = class_string + strlen(class_string) + 1; X if (name) { X if (cp = XGetDefault(dpy, name, "showTitle")) X if (*cp == 'n' || *cp == 'N' || !strcmp(cp, "off") || X !strcmp(cp, "Off")) X Leave((Window)NULL) X } X if (cp = XGetDefault(dpy, class, "showTitle")) X if (*cp == 'n' || *cp == 'N' || !strcmp(cp, "off") || X !strcmp(cp, "Off")) X Leave((Window)NULL) X } X if (!awi) { X fprintf(stderr, "AddTitle: Window %x is not registered!\n", w); X Leave((Window)NULL) X } X XAddToSaveSet(dpy, awi->client); X if (!init_done) X Init_Titles(); X XGetGeometry(dpy, (Drawable)awi->client, &root, &x, &y, &width, &height, X &bw, &depth); X XGetWindowAttributes(dpy, awi->client, &xwa); X valuemask = CWEventMask | CWBorderPixel | CWBackPixel; X swa.event_mask = (SubstructureRedirectMask | SubstructureNotifyMask); X if (BContext) { X swa.event_mask |= (ButtonPressMask | ButtonReleaseMask); X bch = (BContext * 2) + 2; X bcv = BContext + 1; X { X XSetWindowAttributes cswa; X X cswa.do_not_propagate_mask = X (ButtonPressMask | ButtonReleaseMask); X XChangeWindowAttributes(dpy, awi->client, CWDontPropagate, X &cswa); X } X X } X else X bch = bcv = 0; X swa.background_pixel = TBackground; X swa.border_pixel = TForeground; X if (TitlePush == FALSE) X x -= (Fheight + 2); /* put title above, don't push window down */ X foster = XCreateWindow(dpy, RootWindow(dpy, scr), x, y, width + bch, X height + Fheight + 2 + bcv, X (bw ? bw : 1), xwa.depth, xwa.class, xwa.visual, X valuemask, &swa); X if (!foster) X Error("AddTitle: Can't create foster parent!"); X if (BBackPixmapData) { /* we have a border context tile */ X awi->BC_back = XCreatePixmapFromBitmapData(dpy, foster, X BBackPixmapData, X BC_wide, BC_high, X BForeground, X BBackground, xwa.depth); X if (!awi->BC_back) X Error("AddTitle: Can't create pixmap for border context background"); X else X XSetWindowBackgroundPixmap(dpy, foster, awi->BC_back); X } X if (BBoldPixmapData) { /* we have a bold border context tile */ X awi->BC_bold = XCreatePixmapFromBitmapData(dpy, foster, X BBoldPixmapData, X BCB_wide, BCB_high, X BForeground, X BBackground, xwa.depth); X if (!awi->BC_bold) X Error("AddTitle: Can't create bold pixmap for border context background"); X } X X swa.bit_gravity = CenterGravity; X swa.event_mask = (ExposureMask | ButtonPressMask | ButtonReleaseMask); X valuemask |= CWBitGravity; X title = XCreateWindow(dpy, foster, 0, 0, (width - 2) + bch, Fheight, X 1, 0, CopyFromParent, CopyFromParent, X valuemask, &swa); X if (!title) X Error("AddTitle: Can't create title bar!"); X if (TBackPixmapData) { X awi->back = XCreatePixmapFromBitmapData(dpy, title, TBackPixmapData, X TB_wide, TB_high, X TForeground, X TBackground, xwa.depth); X if (!awi->back) X Error("AddTitle: Can't create pixmap for title background"); X else X XSetWindowBackgroundPixmap(dpy, title, awi->back); X } X if (TBoldPixmapData) { X awi->bold = XCreatePixmapFromBitmapData(dpy, title, TBoldPixmapData, X TBB_wide, TBB_high, X TForeground, X TBackground, xwa.depth); X if (!awi->bold) X Error("AddTitle: Can't create pixmap for bold background"); X } X XSetWindowBorderWidth(dpy, awi->client, (BContext) ? 1 : 0); X wc.sibling = awi->client; X wc.stack_mode = Above; X XConfigureWindow(dpy, foster, CWSibling|CWStackMode, &wc); X swa.bit_gravity = CenterGravity; X XChangeWindowAttributes(dpy, title, CWBitGravity, &swa); X XDefineCursor(dpy, title, TitleCursor); X XDefineCursor(dpy, foster, FrameCursor); X XSelectInput(dpy, title, (ExposureMask | ButtonPressMask | X ButtonReleaseMask)); X XMapWindow(dpy, title); X if (!BContext) X XReparentWindow(dpy, awi->client, foster, 0, Fheight + 2); X else X XReparentWindow(dpy, awi->client, foster, BContext, Fheight + 2); X XMapWindow(dpy, awi->client); X awi->title = title; X awi->frame = foster; X awi->border_width = bw; X awi->name = GetTitleName(awi->client); X /* Make titlebar "frame" inherit characteristics of victim */ X XStoreName(dpy, foster, awi->name); X if (XGetIconName(dpy, w, &icon_name)) { X XSetIconName(dpy, foster, icon_name); X free(icon_name); X } X if (wm_hints = XGetWMHints(dpy, awi->client)) { X XSetWMHints(dpy, foster, wm_hints); X XFree(wm_hints); X } X XGetNormalHints(dpy, awi->client, &sz_hints); X XSetNormalHints(dpy, foster, &sz_hints); X XGetZoomHints(dpy, awi->client, &sz_hints); X XSetZoomHints(dpy, foster, &sz_hints); X XGetClassHint(dpy, awi->client, &class_hints); X XSetClassHint(dpy, foster, &class_hints); X X XSaveContext(dpy, title, AwmContext, awi); X XSaveContext(dpy, foster, AwmContext, awi); X Leave(foster) X} X Boolean FDestroyTitle(w, mask, button, x, y) Window w; int mask, button, x, y; X{ X Entry("FDestroyTitle") X X if (w == RootWindow(dpy, scr)) X Leave(FALSE) X DestroyTitle(w, FALSE); X Leave(TRUE) X} X void DestroyTitle(w) Window w; X{ X XWindowAttributes xwa; X AwmInfoPtr awi; X X Entry("DestroyTitle") X X if (!(awi = IsTitled(w))) X Leave_void X XGetWindowAttributes(dpy, awi->frame, &xwa); X /* put away our toys when we're done playing with them */ X if (TitlePush == FALSE) X xwa.y += (Fheight + 2); X XReparentWindow(dpy, awi->client, RootWindow(dpy, scr), xwa.x, X xwa.y); X XSetWindowBorderWidth(dpy, awi->client, awi->border_width); X DestroyGadgets(w); X XDeleteContext(dpy, awi->frame, AwmContext); X XDeleteContext(dpy, awi->title, AwmContext); X XDestroyWindow(dpy, awi->title); X XDestroyWindow(dpy, awi->frame); X XSync(dpy, FALSE); X if (awi->state != ICON) X XRemoveFromSaveSet(dpy, awi->client); X if (awi->back) X XFreePixmap(dpy, awi->back); X if (awi->bold) X XFreePixmap(dpy, awi->bold); X free(awi->name); X awi->frame = awi->title = awi->back = awi->bold = 0; X awi->name = (char *)NULL; X Leave_void X} X void PaintTitle(w) Window w; X{ X static GC gc, rgc; X int x, y, ijunk; X XWindowAttributes xwa; X Window junk, chld; X Boolean reversed; X XFontStruct *f_info; X AwmInfoPtr awi; X XGCValues gcv; X X Entry("PaintTitle") X X if (!(awi = IsTitled(w))) X Leave_void X XGetWindowAttributes(dpy, awi->title, &xwa); X XQueryPointer(dpy, awi->frame, &junk, &chld, &ijunk, &ijunk, X &ijunk, &ijunk, &ijunk); X reversed = (chld == awi->client && Hilite); X if (reversed && TFontBoldInfo) X f_info = TFontBoldInfo; X else X f_info = TFontInfo; X gcv.font = f_info->fid; X gcv.foreground = (reversed && !TFontBoldInfo) ? X TTextBackground : TTextForeground; X gcv.background = (reversed && !TFontBoldInfo) ? X TTextForeground : TTextBackground; X XChangeGC(dpy, awi->winGC, (GCFont | GCForeground | GCBackground), &gcv); X XClearWindow(dpy, awi->title); X if (ShowName) { /* print window names? */ X x = (xwa.width - XTextWidth(f_info, awi->name, X strlen(awi->name))) / 2; X y = ((f_info->max_bounds.ascent + f_info->max_bounds.descent + X xwa.height - 1) / 2) - (Pad * 2); X XDrawImageString(dpy, awi->title, awi->winGC, x, y, awi->name, X strlen(awi->name)); X } X Leave_void X} X AwmInfoPtr IsTitled(w) Window w; X{ X AwmInfoPtr tmp; X X Entry("IsTitled") X X if (!XFindContext(dpy, w, AwmContext, &tmp)) { X if (tmp->title) X Leave(tmp) X } X Leave((AwmInfoPtr)NULL) X} END_OF_FILE if test 12143 -ne `wc -c <'Titlebar.c'`; then echo shar: \"'Titlebar.c'\" unpacked with wrong size! fi # end of 'Titlebar.c' fi if test -f 'globals.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'globals.c'\" else echo shar: Extracting \"'globals.c'\" \(11599 characters\) sed "s/^X//" >'globals.c' <<'END_OF_FILE' X/* $Header: globals.c,v 1.4 87/08/21 13:29:42 swick Exp $ */ X X#include "X11/copyright.h" X X/* X * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. X * X * All Rights Reserved X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, X * provided that the above copyright notice appear in all copies and that X * both that copyright notice and this permission notice appear in X * supporting documentation, and that the name of Digital Equipment X * Corporation not be used in advertising or publicity pertaining to X * distribution of the software without specific, written prior permission. X * X * X * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING X * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL X * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR X * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, X * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, X * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS X * SOFTWARE. X */ X X X/* X * MODIFICATION HISTORY X * X * 000 -- M. Gancarz, DEC Ultrix Engineering Group X * 001 -- R. Kittell, DEC Storage A/D May 19, 1986 X * Added global vars for warp options. X * 002 -- Loretta Guarino Reid, DEC Ultrix Engineering Group X * Western Software Lab. April 17, 1987 X * Convert to X11 X * 003 -- Jordan Hubbard, U.C. Berkeley. Misc new vars. X */ X X#ifndef lint static char *sccsid = "%W% %G%"; X#endif X/* X * globals.c - window manager global data X * X */ X X#include "awm.h" X#include "X11/Xutil.h" X Window Pop; /* Pop up dimension display window. */ Window Frozen; /* Contains window id of "gridded" window. */ XXFontStruct *IFontInfo; /* Icon text font information. */ XXFontStruct *PFontInfo; /* Pop-up text font information. */ XXFontStruct *TFontInfo; /* Title text font information. */ XXFontStruct *TFontBoldInfo; /* Title text (bold) font information. */ XXFontStruct *GFontInfo; /* Gadget box text font */ Pixmap GrayPixmap; /* Gray pixmap. */ Pixmap IBackPixmap; /* Icon window background pixmap. */ Pixel IBorder; /* Icon window border color. */ Pixel PBorder; /* Pop-Up Window border color. */ Pixel BBackground; /* Border context background color */ Pixel BForeground; /* Border context foreground color */ Pixel PBackground; /* Pop-up Window background color. */ Pixel PForeground; /* Pop-up Window foregrould color */ Pixel TBackground; /* Titlebar background color */ Pixel TForeground; /* Titlebar foreground color */ Pixel TTextBackground; /* Titlebar text background color */ Pixel TTextForeground; /* Titlebar text foreground color */ Pixel IBackground; /* Icon background (for pixmap) color */ Pixel IForeground; /* Icon foreground (for pixmap) color */ Pixel ITextForeground; /* Icon text foreground color */ Pixel ITextBackground; /* Icon text background color */ Cursor ArrowCrossCursor; /* Arrow cross cursor. */ Cursor TextCursor; /* Text cursor used in icon windows. */ Cursor IconCursor; /* Icon Cursor. */ Cursor LeftButtonCursor; /* Left button main cursor. */ Cursor MiddleButtonCursor; /* Middle button main cursor. */ Cursor RightButtonCursor; /* Right button main cursor. */ Cursor TargetCursor; /* Target (select-a-window) cursor. */ int ScreenWidth; /* Display screen width. */ int ScreenHeight; /* Display screen height. */ int IBorderWidth; /* Icon window border width. */ int PWidth; /* Pop-up window width. */ int PHeight; /* Pop-up window height. */ int PBorderWidth; /* Pop-up window border width. */ int PPadding; /* Pop-up window padding. */ int Delta; /* Mouse movement slop. */ int HIconPad; /* Icon horizontal padding. */ int VIconPad; /* Icon vertical padding. */ int MaxColors; /* Maximum number of colors to use. */ int Pushval; /* Number of pixels to push window by. */ int BContext; /* Border context area width (in pixels) */ int RaiseDelay; /* Number of milliseconds delay before autoraise */ int NumGadgets; /* Number of gadgets we're using */ int GadgetPad; /* Amount of padding for gadgets */ int Volume; /* Audible alarm volume. */ int status; /* Routine return status. */ int Maxfd; /* Maximum file descriptors for select(2). */ int BCursor; /* Border context cursor */ int TCursor; /* Title context cursor */ MenuLink *Menus; /* Linked list of menus. */ GC IconGC; /* graphics context for icon */ GC PopGC; /* graphics context for pop */ GC DrawGC; /* graphics context for drawing */ Binding *Blist; /* Button/key binding list. */ X XXContext AwmContext; /* Main context for awm */ X Boolean Autoselect; /* Warp mouse to default menu selection? */ Boolean Autoraise; /* Raise window on input focus? */ Boolean Freeze; /* Freeze server during move/resize? */ Boolean Grid; /* Should the m/r box contain a 9 seg. grid. */ Boolean ShowName; /* If True, print window names in titlebars */ Boolean Hilite; /* Should we highlight window borders on focus? */ Boolean NWindow; /* Normalize windows? */ Boolean NIcon; /* Normalize icons? */ Boolean Push; /* Relative=TRUE, Absolute=FALSE. */ Boolean RootResizeBox; /* Resize window is placed over sized window? */ Boolean ResizeRelative; /* resizes should be relative to window edge */ Boolean Titles; /* Title bar frob on windows? */ Boolean UseGadgets; /* Gadget bars on titles? */ Boolean Reverse; /* Reverse video? */ Boolean SaveUnder; /* Save unders? */ Boolean TitlePush; /* Down=TRUE, Up=FALSE */ Boolean Wall; /* restrict to root window boundries? */ Boolean WarpOnRaise; /* Warp to upper right corner on raise. */ Boolean WarpOnIconify; /* Warp to icon center on iconify. */ Boolean WarpOnDeIconify; /* Warp to upper right corner on de-iconify. */ Boolean FocusSetByUser; /* True if f.focus called */ Boolean Zap; /* Should the the zap effect be used. */ X char PText[7] = INIT_PTEXT; /* Pop-up window dummy text. */ int PTextSize = sizeof(PText); /* Pop-up window dummy text size. */ X int Lineno = 1; /* Line count for parser. */ Boolean Startup_File_Error = FALSE;/* Startup file error flag. */ char Startup_File[NAME_LEN] = "";/* Startup file name. */ char *TBackPixmapData; /* Bitmap data file title background */ char *TBoldPixmapData; /* ditto, except highlighted */ char *BBackPixmapData; /* Border context background pixmap data */ char *BBoldPixmapData; /* Border context bold pixmap data */ char *awmPath; /* Optional pathlist to search for pixmaps */ char **Argv; /* Pointer to command line parameters. */ char **Environ; /* Pointer to environment. */ X int scr; Display *dpy; X X#ifdef NEATEN int AbsMinWidth; int AbsMinHeight; Boolean RetainSize; Boolean KeepOpen; Boolean Fill; Boolean UsePriorities; Boolean FixTopOfStack; char *PrimaryIconPlacement; char *SecondaryIconPlacement; X#endif X X/* X * Keyword lookup table for parser. X */ Keyword KeywordTable[] = X{ X { "autoselect", IsBoolean, &Autoselect, 0 }, X { "autoraise", IsBoolean, &Autoraise, 0 }, X { "freeze", IsBoolean, &Freeze, 0 }, X { "hilite", IsBoolean, &Hilite, 0 }, X { "rootResizeBox", IsBoolean, &RootResizeBox, 0 }, X { "titles", IsBoolean, &Titles, 0 }, X { "gadgets", IsBoolean, &UseGadgets, 0 }, X { "grid", IsBoolean, &Grid, 0 }, X { "showName", IsBoolean, &ShowName, 0,}, X { "normali", IsBoolean, &NIcon, 0 }, X { "normalw", IsBoolean, &NWindow, 0 }, X { "pushRelative", IsBoolean, &Push, 0 }, X { "reverse", IsBoolean, &Reverse, 0 }, X { "wall", IsBoolean, &Wall, 0 }, X { "warpOnIconify", IsBoolean, &WarpOnIconify, 0 }, X { "warpOnDeIconify",IsBoolean, &WarpOnDeIconify, 0 }, X { "warpOnRaise", IsBoolean, &WarpOnRaise, 0 }, X#ifdef NEATEN X { "retainSize", IsBoolean, &RetainSize, 0 }, X { "keepOpen", IsBoolean, &KeepOpen, 0 }, X { "fill", IsBoolean, &Fill, 0 }, X { "usePriorities", IsBoolean, &UsePriorities }, X { "fixTopOfStack", IsBoolean, &FixTopOfStack }, X#endif X { "zap", IsBoolean, &Zap, 0 }, X { "gadget", IsGadget, 0, 0 }, X { "f.beep", IsImmFunction, 0, Beep }, X { "f.circledown", IsImmFunction, 0, CircleDown }, X { "f.circleup", IsImmFunction, 0, CircleUp }, X { "f.continue", IsImmFunction, 0, Continue }, X { "f.exit", IsQuitFunction, 0, Quit }, X { "f.focus", IsFunction, 0, Focus }, X { "f.iconify", IsFunction, 0, Iconify }, X { "f.lower", IsFunction, 0, Lower }, X { "f.menu", IsMenuMap, 0, DoMenu }, X { "f.action", IsAction, 0, DoAction }, X { "f.move", IsDownFunction, 0, Move }, X { "f.moveopaque", IsDownFunction, 0, MoveOpaque }, X { "f.newiconify", IsDownFunction, 0, NewIconify }, X { "f.neaten", IsImmFunction, 0, Neaten }, X { "f.pause", IsImmFunction, 0, Pause }, X { "f.pushdown", IsFunction, 0, PushDown }, X { "f.pushleft", IsFunction, 0, PushLeft }, X { "f.pushright", IsFunction, 0, PushRight }, X { "f.pushup", IsFunction, 0, PushUp }, X { "f.raise", IsFunction, 0, Raise }, X { "f.redraw", IsDownFunction, 0, Redraw }, X { "f.refresh", IsImmFunction, 0, Refresh }, X { "f.resize", IsDownFunction, 0, Resize }, X { "f.restart", IsQuitFunction, 0, Restart }, X { "f.destroy", IsDownFunction, 0, DestroyClient }, X { "f.title", IsFunction, 0, FAddTitle }, X { "f.gadgets", IsFunction, 0, FPutGadgets }, X { "f.notitle", IsFunction, 0, FDestroyTitle }, X { "f.nogadgets", IsFunction, 0, FDestroyGadgets }, X { "menu", IsMenu, 0, 0 }, X { "resetbindings", IsParser, 0, ResetBindings }, X { "resetmenus", IsParser, 0, ResetMenus }, X { "resetgadgets", IsParser, 0, ResetGadgets }, X { NULL, NULL, NULL, NULL } X}; X X/* X * Key expression table for parser. X */ KeyExpr KeyExprTbl[] = { X { "ctrl", ControlMask }, X { "c", ControlMask }, X { "lock", LockMask }, X { "l", LockMask }, X { "meta", Mod1Mask }, X { "m", Mod1Mask }, X { "shift", ShiftMask }, X { "s", ShiftMask }, X { "mod1", Mod1Mask }, X { "mod2", Mod2Mask }, X { "mod3", Mod3Mask }, X { "mod4", Mod4Mask }, X { "mod5", Mod5Mask }, X { NULL, NULL } X}; X X/* X * Context expression table for parser. X */ ContExpr ContExprTbl[] = { X { "icon", ICON }, X { "i", ICON }, X { "root", ROOT }, X { "r", ROOT }, X { "window", WINDOW }, X { "w", WINDOW }, X { "t", TITLE }, X { "title", TITLE }, X { "g", GADGET }, X { "gadget", GADGET }, X { "border", BORDER }, X { "b", BORDER }, X { NULL, NULL } X}; X X/* X * Gravity expressions for parser. X */ GravityExpr GravityExprTbl[] = { X { "noGravity", NoGadgetGravity }, X { "nogravity", NoGadgetGravity }, X { "NoGravity", NoGadgetGravity }, X { "leftGravity", LeftGadgetGravity }, X { "leftgravity", LeftGadgetGravity }, X { "LeftGravity", LeftGadgetGravity }, X { "rightGravity", RightGadgetGravity }, X { "rightgravity", RightGadgetGravity }, X { "RightGravity", RightGadgetGravity } X}; X X/* X * Button expression table for parser. X */ ButtonModifier ButtModTbl[] = { X { "left", LeftMask }, X { "leftbutton", LeftMask }, X { "l", LeftMask }, X { "middle", MiddleMask }, X { "middlebutton", MiddleMask }, X { "m", MiddleMask }, X { "right", RightMask }, X { "rightbutton", RightMask }, X { "r", RightMask }, X { "move", DeltaMotion }, X { "motion", DeltaMotion }, X { "delta", DeltaMotion }, X { "boogie", DeltaMotion }, X { "truckin", DeltaMotion }, /* it's been a silly day... */ X { "down", ButtonDown }, X { "d", ButtonDown }, X { "up", ButtonUp }, X { "u", ButtonUp }, X { NULL, NULL } X}; X END_OF_FILE if test 11599 -ne `wc -c <'globals.c'`; then echo shar: \"'globals.c'\" unpacked with wrong size! fi # end of 'globals.c' fi echo shar: End of archive 4 \(of 8\). cp /dev/null ark4isdone MISSING="" for I in 1 2 3 4 5 6 7 8 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 8 archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0