toml@uunet.UU.NET (Tom LaStrange) (10/17/90)
Submitted-by: stan!toml@uunet.UU.NET (Tom LaStrange)
Archive-Name: tvtwm/patch3/part01
Patch-To: tvtwm: Volume 9, Issues 2-10 (8/29/90)
Patch-To: tvtwm: Volume 9, Issue 11 (8/30/90: patch 1)
Patch-To: tvtwm: Volume 9, Issue 20 (9/6/90: patch 2)
#! /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:
#
#patch.3
#
# Created by toml () on Mon Oct 1 19:56:11 MDT 1990
#
if test -f 'patch.3'
then
echo shar: will not over-write existing file "patch.3"
else
echo extracting "patch.3"
sed 's/^X//' >patch.3 <<'SHAR_EOF'
Xtvtwm patch 3
X
XThis patch fixes the following problems:
X
X 1. f.scroll documented wrong in man page.
X 2. Icon manager sizing problems.
X 3. Negative offsets added for f.scroll command.
X J Greely <jgreely@cis.ohio-state.edu>
X 4. Border widths were ignored in the *.zoom commands.
X 5. f.forcemove now works if DontMoveOff is specified.
X 6. Couldn't drag out of the panner if DontMoveOff was specified.
X 7. New command called f.scrollback that scrolls the desktop
X 8 back to its previous location.
X 9. New keywords that enable displaying of the window name in
X the small virtual windows inside the panner.
X ShowVirtualNames
X VirtualFont "font" # default font is 5x8
X10. VirtualForeground and VirtualBackground control colors of the
X small virtual windows inside the panner.
X11. NoIconTitle and IconTitle control whether or not a title
X is displayed below the icon.
X
X
Xdiff -c ../old/README.tvtwm ./README.tvtwm
X*** ../old/README.tvtwm Tue Sep 4 23:56:43 1990
X--- ./README.tvtwm Mon Oct 1 19:53:26 1990
X***************
X*** 125,130 ****
X--- 125,143 ----
X VirtualDesktopForeground "color"
X This color is only used if VirtualDesktopBackgroundPixmap is set.
X
X+ VirtualForeground "color" [ { window list } ]
X+ Specifies the foreground color for the small virtual panner windows.
X+
X+ VirtualBackground "color" [ { window list } ]
X+ Specifies the background color for the small virtual panner windows.
X+
X+ VirtualFont "5x8"
X+ The font to use when ShowVirtualNames is specified.
X+
X+ ShowVirtualNames
X+ This causes the window name to be displayed in the small virtual
X+ panner window. The VirtualFont is used to display the name.
X+
X PannerGeometry "+-X+-Y"
X Specifies the geometry at which the panner is to be placed. The
X default is "-0-0".
X***************
X*** 155,160 ****
X--- 168,182 ----
X Sticky { window list }
X A list of windows that will come up in a sticky state.
X
X+ NoIconTitle [ { window list } ]
X+ Specifies that no titles should be displayed below icons. If the
X+ optional window list is present then only those clients will
X+ not have icon titles.
X+
X+ IconTitle { window list }
X+ Specifies a list of clients that will have icon titles. Useful
X+ when NoIconTitle has been specified alone.
X+
X New Commands:
X
X f.panner - toggle making the panner visible
X***************
X*** 164,169 ****
X--- 186,192 ----
X f.scrolldown - scroll the desktop down ScrollDistanceY
X f.scrollleft - scroll the desktop left ScrollDistanceX
X f.scrollright - scroll the desktop right ScrollDistanceX
X+ f.scrollback - scroll back to the previous location
X f.panup - same as f.scrollup
X f.pandown - same as f.scrolldown
X f.panleft - same as f.scrollleft
Xdiff -c ../old/add_window.c ./add_window.c
X*** ../old/add_window.c Tue Sep 4 23:56:43 1990
X--- ./add_window.c Mon Oct 1 19:53:26 1990
X***************
X*** 328,333 ****
X--- 328,339 ----
X if (LookInList(Scr->NoTitle, tmp_win->full_name, &tmp_win->class))
X tmp_win->title_height = 0;
X
X+ tmp_win->icon_title = !Scr->NoIconTitle;
X+ if (LookInList(Scr->NoIconTitleL, tmp_win->full_name, &tmp_win->class))
X+ tmp_win->icon_title = False;
X+ if (LookInList(Scr->IconTitleL, tmp_win->full_name, &tmp_win->class))
X+ tmp_win->icon_title = True;
X+
X /* if it is a transient window, don't put a title on it */
X if (tmp_win->transient && !Scr->DecorateTransients)
X tmp_win->title_height = 0;
X***************
X*** 414,420 ****
X--- 420,448 ----
X tmp_win->title.back = Scr->TitleC.back;
X tmp_win->iconc.fore = Scr->IconC.fore;
X tmp_win->iconc.back = Scr->IconC.back;
X+ /*
X+ * for compatibility reasons, let the virtual colors default
X+ * to the titlebar colors if no virtual colors have been specified.
X+ */
X+ if (Scr->VirtualC.fore != UNKNOWN_PIXEL)
X+ tmp_win->virtual.fore = Scr->VirtualC.fore;
X+ else
X+ tmp_win->virtual.fore = Scr->TitleC.fore;
X+ if (Scr->VirtualC.back != UNKNOWN_PIXEL)
X+ tmp_win->virtual.back = Scr->VirtualC.back;
X+ else
X+ tmp_win->virtual.back = Scr->TitleC.back;
X
X+ if (Scr->VirtualDesktop) {
X+ GetColorFromList(Scr->TitleForegroundL, tmp_win->full_name, &tmp_win->class,
X+ &tmp_win->virtual.fore);
X+ GetColorFromList(Scr->TitleBackgroundL, tmp_win->full_name, &tmp_win->class,
X+ &tmp_win->virtual.back);
X+ GetColorFromList(Scr->VirtualForegroundL, tmp_win->full_name, &tmp_win->class,
X+ &tmp_win->virtual.fore);
X+ GetColorFromList(Scr->VirtualBackgroundL, tmp_win->full_name, &tmp_win->class,
X+ &tmp_win->virtual.back);
X+ }
X GetColorFromList(Scr->BorderColorL, tmp_win->full_name, &tmp_win->class,
X &tmp_win->border);
X GetColorFromList(Scr->IconBorderColorL, tmp_win->full_name, &tmp_win->class,
X***************
X*** 459,465 ****
X tmp_win->virtualWindow = MakeVirtual(tmp_win,
X tmp_win->frame_x, tmp_win->frame_y,
X tmp_win->frame_width, tmp_win->frame_height,
X! tmp_win->title.back, tmp_win->border);
X }
X else
X tmp_win->root = Scr->Root;
X--- 487,493 ----
X tmp_win->virtualWindow = MakeVirtual(tmp_win,
X tmp_win->frame_x, tmp_win->frame_y,
X tmp_win->frame_width, tmp_win->frame_height,
X! tmp_win->virtual.back, tmp_win->border);
X }
X else
X tmp_win->root = Scr->Root;
Xdiff -c ../old/events.c ./events.c
X*** ../old/events.c Tue Sep 4 23:56:44 1990
X--- ./events.c Mon Oct 1 19:53:27 1990
X***************
X*** 722,727 ****
X--- 722,728 ----
X Tmp_win->frame_width, Tmp_win->frame_height, -1);
X
X if (Tmp_win->title_w) XClearArea(dpy, Tmp_win->title_w, 0,0,0,0, True);
X+ if (Tmp_win->virtualWindow) PaintVirtualWindow(Tmp_win);
X
X /*
X * if the icon name is NoName, set the name of the icon to be
X***************
X*** 894,903 ****
X if (Tmp_win->icon_not_ours)
X return;
X
X! Tmp_win->icon_w_width = XTextWidth(Scr->IconFont.font,
X! Tmp_win->icon_name, strlen(Tmp_win->icon_name));
X
X- Tmp_win->icon_w_width += 6;
X if (Tmp_win->icon_w_width < Tmp_win->icon_width)
X {
X Tmp_win->icon_x = (Tmp_win->icon_width - Tmp_win->icon_w_width)/2;
X--- 895,908 ----
X if (Tmp_win->icon_not_ours)
X return;
X
X! if (Tmp_win->icon_title) {
X! Tmp_win->icon_w_width = XTextWidth(Scr->IconFont.font,
X! Tmp_win->icon_name, strlen(Tmp_win->icon_name));
X! Tmp_win->icon_w_width += 6;
X! }
X! else
X! Tmp_win->icon_w_width = 0;
X
X if (Tmp_win->icon_w_width < Tmp_win->icon_width)
X {
X Tmp_win->icon_x = (Tmp_win->icon_width - Tmp_win->icon_w_width)/2;
X***************
X*** 916,922 ****
X
X y = 0;
X
X! Tmp_win->icon_w_height = Tmp_win->icon_height + Scr->IconFont.height + 4;
X Tmp_win->icon_y = Tmp_win->icon_height + Scr->IconFont.height;
X
X XResizeWindow(dpy, Tmp_win->icon_w, Tmp_win->icon_w_width,
X--- 921,929 ----
X
X y = 0;
X
X! Tmp_win->icon_w_height = Tmp_win->icon_height;
X! if (Tmp_win->icon_title)
X! Tmp_win->icon_w_height += Tmp_win->icon_height;
X Tmp_win->icon_y = Tmp_win->icon_height + Scr->IconFont.height;
X
X XResizeWindow(dpy, Tmp_win->icon_w, Tmp_win->icon_w_width,
X***************
X*** 1013,1020 ****
X }
X else if (Tmp_win != NULL)
X {
X! if (Event.xany.window == Tmp_win->title_w)
X {
X FBF(Tmp_win->title.fore, Tmp_win->title.back,
X Scr->TitleBarFont.font->fid);
X
X--- 1020,1032 ----
X }
X else if (Tmp_win != NULL)
X {
X! if (Event.xany.window == Tmp_win->virtualWindow)
X {
X+ PaintVirtualWindow(Tmp_win);
X+ flush_expose (Event.xany.window);
X+ }
X+ else if (Event.xany.window == Tmp_win->title_w)
X+ {
X FBF(Tmp_win->title.fore, Tmp_win->title.back,
X Scr->TitleBarFont.font->fid);
X
X***************
X*** 1025,1037 ****
X }
X else if (Event.xany.window == Tmp_win->icon_w)
X {
X! FBF(Tmp_win->iconc.fore, Tmp_win->iconc.back,
X! Scr->IconFont.font->fid);
X
X! XDrawString (dpy, Tmp_win->icon_w,
X! Scr->NormalGC,
X! Tmp_win->icon_x, Tmp_win->icon_y,
X! Tmp_win->icon_name, strlen(Tmp_win->icon_name));
X flush_expose (Event.xany.window);
X return;
X } else if (Tmp_win->titlebuttons) {
X--- 1037,1051 ----
X }
X else if (Event.xany.window == Tmp_win->icon_w)
X {
X! if (Tmp_win->icon_title) {
X! FBF(Tmp_win->iconc.fore, Tmp_win->iconc.back,
X! Scr->IconFont.font->fid);
X
X! XDrawString (dpy, Tmp_win->icon_w,
X! Scr->NormalGC,
X! Tmp_win->icon_x, Tmp_win->icon_y,
X! Tmp_win->icon_name, strlen(Tmp_win->icon_name));
X! }
X flush_expose (Event.xany.window);
X return;
X } else if (Tmp_win->titlebuttons) {
Xdiff -c ../old/gram.y ./gram.y
X*** ../old/gram.y Tue Sep 4 23:56:45 1990
X--- ./gram.y Mon Oct 1 19:53:28 1990
X***************
X*** 88,94 ****
X %token <num> MOVE RESIZE WAIT SELECT KILL LEFT_TITLEBUTTON RIGHT_TITLEBUTTON
X %token <num> NUMBER KEYWORD NKEYWORD CKEYWORD CLKEYWORD FKEYWORD FSKEYWORD
X %token <num> SKEYWORD DKEYWORD JKEYWORD WINDOW_RING WARP_CURSOR ERRORTOKEN
X! %token <num> NO_STACKMODE
X %token <ptr> STRING
X
X %type <ptr> string
X--- 88,94 ----
X %token <num> MOVE RESIZE WAIT SELECT KILL LEFT_TITLEBUTTON RIGHT_TITLEBUTTON
X %token <num> NUMBER KEYWORD NKEYWORD CKEYWORD CLKEYWORD FKEYWORD FSKEYWORD
X %token <num> SKEYWORD DKEYWORD JKEYWORD WINDOW_RING WARP_CURSOR ERRORTOKEN
X! %token <num> NO_STACKMODE ICON_TITLE NO_ICON_TITLE
X %token <ptr> STRING
X
X %type <ptr> string
X***************
X*** 187,192 ****
X--- 187,198 ----
X win_list
X | NO_TITLE { if (Scr->FirstTime)
X Scr->NoTitlebar = TRUE; }
X+ | NO_ICON_TITLE { list = &Scr->NoIconTitleL; }
X+ win_list
X+ | NO_ICON_TITLE { if (Scr->FirstTime)
X+ Scr->NoIconTitle = TRUE; }
X+ | ICON_TITLE { list = &Scr->IconTitleL; }
X+ win_list
X | MAKE_TITLE { list = &Scr->MakeTitle; }
X win_list
X | START_ICONIFIED { list = &Scr->StartIconified; }
Xdiff -c ../old/icons.c ./icons.c
X*** ../old/icons.c Tue Sep 4 23:56:45 1990
X--- ./icons.c Mon Oct 1 19:53:28 1990
X***************
X*** 128,133 ****
X--- 128,137 ----
X *final_x = ie->x + (ie->w - iconWidth (tmp_win)) / 2;
X *final_y = ie->y + (ie->h - iconHeight (tmp_win)) / 2;
X } else {
X+ if (tmp_win->root == Scr->VirtualDesktop) {
X+ def_x += Scr->vdtPositionX;
X+ def_y += Scr->vdtPositionY;
X+ }
X *final_x = def_x;
X *final_y = def_y;
X }
X***************
X*** 468,473 ****
X--- 472,478 ----
X {
X tmp_win->icon_height = 0;
X tmp_win->icon_width = 0;
X+ tmp_win->icon_title = True;
X valuemask = 0;
X }
X else
X***************
X*** 476,485 ****
X attributes.background_pixmap = pm;
X }
X
X! tmp_win->icon_w_width = XTextWidth(Scr->IconFont.font,
X! tmp_win->icon_name, strlen(tmp_win->icon_name));
X
X! tmp_win->icon_w_width += 6;
X if (tmp_win->icon_w_width < tmp_win->icon_width)
X {
X tmp_win->icon_x = (tmp_win->icon_width - tmp_win->icon_w_width)/2;
X--- 481,492 ----
X attributes.background_pixmap = pm;
X }
X
X! if (tmp_win->icon_title) {
X! tmp_win->icon_w_width = XTextWidth(Scr->IconFont.font,
X! tmp_win->icon_name, strlen(tmp_win->icon_name));
X
X! tmp_win->icon_w_width += 6;
X! }
X if (tmp_win->icon_w_width < tmp_win->icon_width)
X {
X tmp_win->icon_x = (tmp_win->icon_width - tmp_win->icon_w_width)/2;
X***************
X*** 491,497 ****
X tmp_win->icon_x = 3;
X }
X tmp_win->icon_y = tmp_win->icon_height + Scr->IconFont.height;
X! tmp_win->icon_w_height = tmp_win->icon_height + Scr->IconFont.height + 4;
X
X event_mask = 0;
X if (tmp_win->wmhints && tmp_win->wmhints->flags & IconWindowHint)
X--- 498,506 ----
X tmp_win->icon_x = 3;
X }
X tmp_win->icon_y = tmp_win->icon_height + Scr->IconFont.height;
X! tmp_win->icon_w_height = tmp_win->icon_height;
X! if (tmp_win->icon_title)
X! tmp_win->icon_w_height += Scr->IconFont.height + 4;
X
X event_mask = 0;
X if (tmp_win->wmhints && tmp_win->wmhints->flags & IconWindowHint)
X***************
X*** 527,533 ****
X if (Scr->VirtualDesktop) {
X tmp_win->virtualIcon = MakeVirtual(tmp_win,
X 0, 0, tmp_win->icon_w_width, tmp_win->icon_w_height,
X! tmp_win->iconc.back, tmp_win->icon_border);
X }
X XSelectInput (dpy, tmp_win->icon_w,
X KeyPressMask | ButtonPressMask | ButtonReleaseMask |
X--- 536,542 ----
X if (Scr->VirtualDesktop) {
X tmp_win->virtualIcon = MakeVirtual(tmp_win,
X 0, 0, tmp_win->icon_w_width, tmp_win->icon_w_height,
X! tmp_win->virtual.back, tmp_win->icon_border);
X }
X XSelectInput (dpy, tmp_win->icon_w,
X KeyPressMask | ButtonPressMask | ButtonReleaseMask |
X***************
X*** 568,580 ****
X PlaceIcon(tmp_win, def_x, def_y, &final_x, &final_y);
X }
X
X! if (final_x > Scr->MyDisplayWidth)
X! final_x = Scr->MyDisplayWidth - tmp_win->icon_w_width -
X! (2 * Scr->IconBorderWidth);
X
X! if (final_y > Scr->MyDisplayHeight)
X! final_y = Scr->MyDisplayHeight - tmp_win->icon_height -
X! Scr->IconFont.height - 4 - (2 * Scr->IconBorderWidth);
X
X MoveIcon(tmp_win, final_x, final_y);
X tmp_win->iconified = TRUE;
X--- 577,591 ----
X PlaceIcon(tmp_win, def_x, def_y, &final_x, &final_y);
X }
X
X! if (tmp_win->root == Scr->Root) {
X! if (final_x > Scr->MyDisplayWidth)
X! final_x = Scr->MyDisplayWidth - tmp_win->icon_w_width -
X! (2 * Scr->IconBorderWidth);
X
X! if (final_y > Scr->MyDisplayHeight)
X! final_y = Scr->MyDisplayHeight - tmp_win->icon_height -
X! Scr->IconFont.height - 4 - (2 * Scr->IconBorderWidth);
X! }
X
X MoveIcon(tmp_win, final_x, final_y);
X tmp_win->iconified = TRUE;
Xdiff -c ../old/menus.c ./menus.c
X*** ../old/menus.c Tue Sep 4 23:56:46 1990
X--- ./menus.c Mon Oct 1 19:53:30 1990
X***************
X*** 1188,1193 ****
X--- 1188,1194 ----
X case F_SCROLLRIGHT:
X case F_SCROLLUP:
X case F_SCROLLDOWN:
X+ case F_SCROLLBACK:
X ScrollDesktop(func, action);
X break;
X
X***************
X*** 1965,1970 ****
X--- 1966,1972 ----
X
X if (raisewin) {
X RaiseFrame (raiseFrame);
X+ ScrollToQuadrant(raiseFrame);
X XWarpPointer (dpy, None, iconwin, 0,0,0,0, 5, 5);
X } else {
X XBell (dpy, 0);
Xdiff -c ../old/move.c ./move.c
X*** ../old/move.c Tue Sep 4 23:56:46 1990
X--- ./move.c Mon Oct 1 19:53:30 1990
X***************
X*** 47,52 ****
X--- 47,53 ----
X #include "vdt.h"
X #include "move.h"
X #include "events.h"
X+ #include "parse.h"
X
X static int dragX;
X static int dragY;
X***************
X*** 351,358 ****
X deltax = xl - origX/scale;
X deltay = yt - origY/scale;
X
X! if (Scr->DontMoveOff && outlineWindow != Scr->Panner) {
X! if (tmp_win->root == Scr->VirtualDesktop) {
X vdtx = Scr->vdtPositionX;
X vdty = Scr->vdtPositionY;
X }
X--- 352,359 ----
X deltax = xl - origX/scale;
X deltay = yt - origY/scale;
X
X! if (MoveFunction != F_FORCEMOVE && Scr->DontMoveOff && outlineWindow != Scr->Panner) {
X! if (tmp_win->root == Scr->VirtualDesktop || tmp_win->root == Scr->Panner) {
X vdtx = Scr->vdtPositionX;
X vdty = Scr->vdtPositionY;
X }
Xdiff -c ../old/parse.c ./parse.c
X*** ../old/parse.c Tue Sep 4 23:56:47 1990
X--- ./parse.c Mon Oct 1 19:53:30 1990
X***************
X*** 340,345 ****
X--- 340,346 ----
X #define kw0_NoCaseSensitive 23
X #define kw0_NoRaiseOnWarp 24
X #define kw0_WarpUnmapped 25
X+ #define kw0_ShowVirtualNames 26
X
X #define kws_UsePPosition 1
X #define kws_IconFont 2
X***************
X*** 355,360 ****
X--- 356,362 ----
X #define kws_PannerGeometry 12
X #define kws_VirtualDesktopBackgroundPixmap 13
X #define kws_PannerBackgroundPixmap 14
X+ #define kws_VirtualFont 15
X
X #define kwn_ConstrainedMoveTime 1
X #define kwn_MoveDelta 2
X***************
X*** 380,385 ****
X--- 382,389 ----
X #define kwcl_IconBorderColor 9
X #define kwcl_IconManagerForeground 10
X #define kwcl_IconManagerBackground 11
X+ #define kwcl_VirtualForeground 12
X+ #define kwcl_VirtualBackground 13
X
X #define kwc_DefaultForeground 1
X #define kwc_DefaultBackground 2
X***************
X*** 477,482 ****
X--- 481,487 ----
X { "f.rightzoom", FKEYWORD, F_RIGHTZOOM },
X { "f.saveyourself", FKEYWORD, F_SAVEYOURSELF },
X { "f.scroll", FSKEYWORD, F_SCROLL },
X+ { "f.scrollback", FKEYWORD, F_SCROLLBACK },
X { "f.scrolldown", FKEYWORD, F_SCROLLDOWN },
X { "f.scrollhome", FKEYWORD, F_SCROLLHOME },
X { "f.scrollleft", FKEYWORD, F_SCROLLLEFT },
X***************
X*** 524,529 ****
X--- 529,535 ----
X { "iconmgr", ICONMGR, 0 },
X { "iconregion", ICON_REGION, 0 },
X { "icons", ICONS, 0 },
X+ { "icontitle", ICON_TITLE, 0 },
X { "interpolatemenucolors", KEYWORD, kw0_InterpolateMenuColors },
X { "l", LOCK, 0 },
X { "left", JKEYWORD, J_LEFT },
X***************
X*** 550,555 ****
X--- 556,562 ----
X { "nograbserver", KEYWORD, kw0_NoGrabServer },
X { "nohighlight", NO_HILITE, 0 },
X { "noiconmanagers", KEYWORD, kw0_NoIconManagers },
X+ { "noicontitle", NO_ICON_TITLE, 0 },
X { "nomenushadows", KEYWORD, kw0_NoMenuShadows },
X { "noraiseondeiconify", KEYWORD, kw0_NoRaiseOnDeiconify },
X { "noraiseonmove", KEYWORD, kw0_NoRaiseOnMove },
X***************
X*** 584,589 ****
X--- 591,597 ----
X { "select", SELECT, 0 },
X { "shift", SHIFT, 0 },
X { "showiconmanager", KEYWORD, kw0_ShowIconManager },
X+ { "showvirtualnames", KEYWORD, kw0_ShowVirtualNames },
X { "sorticonmanager", KEYWORD, kw0_SortIconManager },
X { "south", DKEYWORD, D_SOUTH },
X { "squeezetitle", SQUEEZE_TITLE, 0 },
X***************
X*** 599,609 ****
X--- 607,620 ----
X { "titlepadding", NKEYWORD, kwn_TitlePadding },
X { "unknownicon", SKEYWORD, kws_UnknownIcon },
X { "usepposition", SKEYWORD, kws_UsePPosition },
X+ { "virtualbackground", CLKEYWORD, kwcl_VirtualBackground },
X { "virtualdesktop", SKEYWORD, kws_VirtualDesktop },
X { "virtualdesktopbackground",CKEYWORD, kwc_VirtualDesktopBackground },
X { "virtualdesktopbackgroundpixmap",SKEYWORD,
X kws_VirtualDesktopBackgroundPixmap },
X { "virtualdesktopforeground",CKEYWORD, kwc_VirtualDesktopForeground },
X+ { "virtualfont", SKEYWORD, kws_VirtualFont },
X+ { "virtualforeground", CLKEYWORD, kwcl_VirtualForeground },
X { "w", WINDOW, 0 },
X { "wait", WAIT, 0 },
X { "warpcursor", WARP_CURSOR, 0 },
X***************
X*** 740,745 ****
X--- 751,760 ----
X Scr->ShowIconManager = TRUE;
X return 1;
X
X+ case kw0_ShowVirtualNames:
X+ Scr->ShowVirtualNames = TRUE;
X+ return 1;
X+
X case kw0_NoCaseSensitive:
X Scr->CaseSensitive = FALSE;
X return 1;
X***************
X*** 830,835 ****
X--- 845,854 ----
X return 1;
X }
X
X+ case kws_VirtualFont:
X+ if (!Scr->HaveFonts) Scr->VirtualFont.name = s;
X+ return 1;
X+
X case kws_IconFont:
X if (!Scr->HaveFonts) Scr->IconFont.name = s;
X return 1;
X***************
X*** 970,975 ****
X--- 989,1002 ----
X case kwcl_TitleBackground:
X GetColor (colormode, &Scr->TitleC.back, s);
X return &Scr->TitleBackgroundL;
X+
X+ case kwcl_VirtualForeground:
X+ GetColor (colormode, &Scr->VirtualC.fore, s);
X+ return &Scr->VirtualForegroundL;
X+
X+ case kwcl_VirtualBackground:
X+ GetColor (colormode, &Scr->VirtualC.back, s);
X+ return &Scr->VirtualBackgroundL;
X
X case kwcl_IconForeground:
X GetColor (colormode, &Scr->IconC.fore, s);
Xdiff -c ../old/parse.h ./parse.h
X*** ../old/parse.h Tue Sep 4 23:56:47 1990
X--- ./parse.h Mon Oct 1 19:53:31 1990
X***************
X*** 97,102 ****
X--- 97,103 ----
X #define F_SCROLLDOWN 50
X #define F_SCROLLUP 51
X #define F_PANNER 52
X+ #define F_SCROLLBACK 53
X
X #define F_MENU 101 /* string */
X #define F_WARPTO 102 /* string */
Xdiff -c ../old/patchlevel.h ./patchlevel.h
X*** ../old/patchlevel.h Tue Sep 4 23:56:47 1990
X--- ./patchlevel.h Mon Oct 1 19:53:31 1990
X***************
X*** 1 ****
X! #define PATCHLEVEL 2
X--- 1 ----
X! #define PATCHLEVEL 3
Xdiff -c ../old/resize.c ./resize.c
X*** ../old/resize.c Tue Sep 4 23:56:47 1990
X--- ./resize.c Mon Oct 1 19:53:31 1990
X***************
X*** 98,103 ****
X--- 98,107 ----
X &x, &y, &junkbw, &junkbw, &junkMask))
X return;
X }
X+ if (tmp_win->root == Scr->VirtualDesktop) {
X+ x += Scr->vdtPositionX;
X+ y += Scr->vdtPositionY;
X+ }
X
X h = ((x - dragx) / (dragWidth < 3 ? 1 : (dragWidth / 3)));
X v = ((y - dragy - tmp_win->title_height) /
X***************
X*** 948,953 ****
X--- 952,960 ----
X RaiseFrame(dpy, tmp_win);
X
X dragHeight -= tmp_win->title_height;
X+
X+ dragHeight -= 2*tmp_win->frame_bw;
X+ dragWidth -= 2*tmp_win->frame_bw;
X
X if (tmp_win->hints.flags&PMinSize && tmp_win->hints.flags & PResizeInc)
X {
Xdiff -c ../old/screen.h ./screen.h
X*** ../old/screen.h Tue Sep 4 23:56:47 1990
X--- ./screen.h Mon Oct 1 19:53:31 1990
X***************
X*** 78,85 ****
X--- 78,88 ----
X int vdtHeight; /* height of the virtual desktop */
X int vdtPositionX; /* where the virtual desktop is currently positioned */
X int vdtPositionY; /* where the virtual desktop is currently positioned */
X+ int vdtSaveX; /* saved position */
X+ int vdtSaveY; /* saved position */
X int vdtScrollDistanceX; /* fraction to pan by in the X direction */
X int vdtScrollDistanceY; /* fraction to pan by in the Y direction */
X+ short ShowVirtualNames; /* should we paint the names in the virtual windows? */
X
X name_list *Icons; /* list of icon pixmaps */
X TitlebarPixmaps tbpm; /* titlebar pixmaps */
X***************
X*** 137,142 ****
X--- 140,146 ----
X ColorPair DefaultC; /* default colors */
X ColorPair vdtC; /* virtual desktop colors */
X ColorPair PannerC; /* Panner colors */
X+ ColorPair VirtualC; /* Virtual window colors */
X Pixel BorderColor; /* color of window borders */
X Pixel MenuShadowColor; /* menu shadow color */
X Pixel IconBorderColor; /* icon border color */
X***************
X*** 183,188 ****
X--- 187,196 ----
X name_list *WindowRingL; /* windows in ring */
X name_list *WarpCursorL; /* windows to warp cursor to on deiconify */
X name_list *StickyL; /* windows that should be sticky */
X+ name_list *VirtualBackgroundL; /* virtual window colors */
X+ name_list *VirtualForegroundL; /* virtual window colors */
X+ name_list *NoIconTitleL; /* don't display icon names */
X+ name_list *IconTitleL; /* do display icon names */
X
X GC NormalGC; /* normal GC for everything */
X GC MenuGC; /* gc for menus */
X***************
X*** 198,203 ****
X--- 206,212 ----
X MyFont SizeFont; /* resize font structure */
X MyFont IconManagerFont; /* window list font structure */
X MyFont DefaultFont;
X+ MyFont VirtualFont; /* names in the small panner windows */
X IconMgr iconmgr; /* default icon manager */
X struct IconRegion *FirstRegion; /* pointer to icon regions */
X struct IconRegion *LastRegion; /* pointer to the last icon region */
X***************
X*** 215,220 ****
X--- 224,230 ----
X int TitlePadding; /* distance between items in titlebar */
X int ButtonIndent; /* amount to shrink buttons on each side */
X int NumAutoRaises; /* number of autoraise windows on screen */
X+ short NoIconTitle; /* don't display WM_ICON_NAME */
X short NoDefaults; /* do not add in default UI stuff */
X short UsePPosition; /* what do with PPosition, see values below */
X short AutoRelativeResize; /* start resize relative to position in quad */
Xdiff -c ../old/tvtwm.man ./tvtwm.man
X*** ../old/tvtwm.man Tue Sep 4 23:56:48 1990
X--- ./tvtwm.man Mon Oct 1 19:53:33 1990
X***************
X*** 333,338 ****
X--- 333,340 ----
X \fBIconBorderColor\fP,
X \fBIconManagerBackground\fP, and
X \fBIconManagerForeground\fP.
X+ \fBVirtualBackground\fP, and
X+ \fBVirtualForeground\fP.
X For example:
X .EX 0
X \fBColor\fP
X***************
X*** 555,560 ****
X--- 557,568 ----
X the icon bitmap in the file ``xterm.icon''. If \fBForceIcons\fP is
X specified, this bitmap will be used even if the client has requested its
X own icon pixmap.
X+ .IP "\fBIconTitle\fP { \fIwin-list\fP }" 8
X+ This variable specifies a list of clients that will have the icon
X+ name displayed below the icon
X+ and is used to request icon titles on specific windows when
X+ \fBNoIconTitle\fP has been
X+ set.
X .IP "\fBInterpolateMenuColors\fP" 8
X This variable indicates that menu entry colors should be interpolated between
X entry specified colors. In the example below:
X***************
X*** 638,643 ****
X--- 646,659 ----
X current \fBBorderTileForeground\fP and \fBBorderTileBackground\fP colors.
X .IP "\fBNoIconManagers\fP" 8
X This variable indicates that no icon manager should be created.
X+ .IP "\fBNoIconTitle\fP [{ \fIwin-list\fP }] " 8
X+ This variable indicates that icons should not display the icon name
X+ of the client. If the
X+ optional \fIwin-list\fP is given, only those clients will not have
X+ icon titles.
X+ \fBIconTitle\fP may be used with this option to force icon titles to
X+ be put on
X+ on specific clients
X .IP "\fBNoMenuShadows\fP" 8
X This variable indicates that menus should not have drop shadows drawn behind
X them. This is typically used with slower servers since it speeds up menu
X***************
X*** 745,750 ****
X--- 761,770 ----
X This variable indicates that the icon manager window should be displayed when
X \fItwm\fP is started. It can always be brought up using the
X \fBf.showiconmgr\fP function.
X+ .IP "\fBShowVirtualNames\fP" 8
X+ This variable causes client window names to be displayed in the
X+ small virtual windows inside the Virtual Desktop panner. The names
X+ will be displayed using the current \fBVirtualFont\fP.
X .IP "\fBSortIconManager\fP" 8
X This variable indicates that entries in the icon manager should be
X sorted alphabetically rather than by simply appending new windows to
X***************
X*** 850,855 ****
X--- 870,879 ----
X This variable indicates that the pointer should be warped into windows when
X they are deiconified. If the optional \fIwin-list\fP is given, the pointer
X will only be warped when those windows are deiconified.
X+ .IP "\fBVirtualFont\fP \fIfont\fP" 8
X+ This is the font used to display window names in the small windows inside
X+ the panner if the \fBShowVirtualNames\fP variable is specified. The default
X+ font is "5x8".
X .IP "\fBWindowRing\fP { \fIwin-list\fP }" 8
X This variable specifies a list of windows along which the \fBf.warpring\fP
X function cycles.
X***************
X*** 1144,1155 ****
X window and update the WM_COMMAND property as specified in the ICCCM. If
X the selected window has not selected for this message, the keyboard bell
X will be rung.
X! .IP "\fBf.scrolldown\fP \fIstring\fP" 8
X This function scrolls the Virtual Desktop to a specific logical screen
X quadrant. The \fIstring\fP parameter is a geometry specification
X indicating how to scroll the desktop. For example, "+0+0" would scroll
X the desktop to the home location and "+2+1" would scroll the desktop
X to the quadrant in the third logical column and the second row.
X .IP "\fBf.scrolldown\fP" 8
X This function scrolls the Virtual Desktop down a fraction of the height of
X the screen specified in ScrollDistanceY.
X--- 1168,1182 ----
X window and update the WM_COMMAND property as specified in the ICCCM. If
X the selected window has not selected for this message, the keyboard bell
X will be rung.
X! .IP "\fBf.scroll\fP \fIstring\fP" 8
X This function scrolls the Virtual Desktop to a specific logical screen
X quadrant. The \fIstring\fP parameter is a geometry specification
X indicating how to scroll the desktop. For example, "+0+0" would scroll
X the desktop to the home location and "+2+1" would scroll the desktop
X to the quadrant in the third logical column and the second row.
X+ .IP "\fBf.scrollback\fP
X+ This function scrolls the Virtual Desktop back to its previous
X+ location.
X .IP "\fBf.scrolldown\fP" 8
X This function scrolls the Virtual Desktop down a fraction of the height of
X the screen specified in ScrollDistanceY.
Xdiff -c ../old/twm.c ./twm.c
X*** ../old/twm.c Tue Sep 4 23:56:48 1990
X--- ./twm.c Mon Oct 1 19:53:33 1990
X***************
X*** 302,307 ****
X--- 302,311 ----
X Scr->WindowRingL = NULL;
X Scr->WarpCursorL = NULL;
X Scr->StickyL = NULL;
X+ Scr->VirtualBackgroundL = NULL;
X+ Scr->VirtualForegroundL = NULL;
X+ Scr->NoIconTitleL = NULL;
X+ Scr->IconTitleL = NULL;
X /* remember to put an initialization in InitVariables also
X */
X
X***************
X*** 570,575 ****
X--- 574,583 ----
X FreeList(&Scr->WindowRingL);
X FreeList(&Scr->WarpCursorL);
X FreeList(&Scr->StickyL);
X+ FreeList(&Scr->VirtualBackgroundL);
X+ FreeList(&Scr->VirtualForegroundL);
X+ FreeList(&Scr->NoIconTitleL);
X+ FreeList(&Scr->IconTitleL);
X
X NewFontCursor(&Scr->FrameCursor, "top_left_arrow");
X NewFontCursor(&Scr->TitleCursor, "top_left_arrow");
X***************
X*** 608,613 ****
X--- 616,623 ----
X Scr->IconManagerC.fore = black;
X Scr->IconManagerC.back = white;
X Scr->IconManagerHighlight = black;
X+ Scr->VirtualC.back = UNKNOWN_PIXEL;
X+ Scr->VirtualC.fore = UNKNOWN_PIXEL;
X
X Scr->FramePadding = 2; /* values that look "nice" on */
X Scr->TitlePadding = 8; /* 75 and 100dpi displays */
X***************
X*** 658,667 ****
X--- 668,679 ----
X Scr->HaveFonts = FALSE; /* i.e. not loaded yet */
X Scr->CaseSensitive = TRUE;
X Scr->WarpUnmapped = FALSE;
X+ Scr->NoIconTitle = FALSE;
X
X /* setup default fonts; overridden by defaults from system.twmrc */
X #define DEFAULT_NICE_FONT "variable"
X #define DEFAULT_FAST_FONT "fixed"
X+ #define DEFAULT_SMALL_FONT "5x8"
X
X Scr->TitleBarFont.font = NULL;
X Scr->TitleBarFont.name = DEFAULT_NICE_FONT;
X***************
X*** 673,678 ****
X--- 685,692 ----
X Scr->SizeFont.name = DEFAULT_FAST_FONT;
X Scr->IconManagerFont.font = NULL;
X Scr->IconManagerFont.name = DEFAULT_NICE_FONT;
X+ Scr->VirtualFont.font = NULL;
X+ Scr->VirtualFont.name = DEFAULT_SMALL_FONT;
X Scr->DefaultFont.font = NULL;
X Scr->DefaultFont.name = DEFAULT_FAST_FONT;
X
X***************
X*** 687,692 ****
X--- 701,707 ----
X GetFont(&Scr->SizeFont);
X GetFont(&Scr->IconManagerFont);
X GetFont(&Scr->DefaultFont);
X+ GetFont(&Scr->VirtualFont);
X Scr->HaveFonts = TRUE;
X }
X
Xdiff -c ../old/twm.h ./twm.h
X*** ../old/twm.h Tue Sep 4 23:56:48 1990
X--- ./twm.h Mon Oct 1 19:53:33 1990
X***************
X*** 108,113 ****
X--- 108,115 ----
X /* defines for zooming/unzooming */
X #define ZOOM_NONE 0
X
X+ #define UNKNOWN_PIXEL ((Pixel)-1)
X+
X #define FBF(fix_fore, fix_back, fix_font)\
X Gcv.foreground = fix_fore;\
X Gcv.background = fix_back;\
X***************
X*** 235,240 ****
X--- 237,243 ----
X int icon_w_height; /* height of the icon window */
X int icon_width; /* width of the icon bitmap */
X int icon_height; /* height of the icon bitmap */
X+ short icon_title; /* should we display the icon name */
X int title_height; /* height of the title bar */
X int title_width; /* width of the title bar */
X char *full_name; /* full name of the window */
X***************
X*** 257,262 ****
X--- 260,266 ----
X ColorPair border_tile;
X ColorPair title;
X ColorPair iconc;
X+ ColorPair virtual;
X short iconified; /* has the window ever been iconified? */
X short icon; /* is the window an icon now ? */
X short icon_on; /* is the icon visible */
Xdiff -c ../old/vdt.c ./vdt.c
X*** ../old/vdt.c Tue Sep 4 23:56:49 1990
X--- ./vdt.c Mon Oct 1 19:53:34 1990
X***************
X*** 189,195 ****
X XGrabButton(dpy, Button2, AnyModifier, virtual,
X True, ButtonPressMask | ButtonReleaseMask,
X GrabModeAsync, GrabModeAsync, Scr->Panner, None);
X! XSelectInput(dpy, virtual, KeyPressMask);
X XSaveContext(dpy, virtual, TwmContext, (caddr_t) tmp_win);
X XSaveContext(dpy, virtual, VirtualContext, (caddr_t) tmp_win);
X XSaveContext(dpy, virtual, ScreenContext, (caddr_t) Scr);
X--- 189,195 ----
X XGrabButton(dpy, Button2, AnyModifier, virtual,
X True, ButtonPressMask | ButtonReleaseMask,
X GrabModeAsync, GrabModeAsync, Scr->Panner, None);
X! XSelectInput(dpy, virtual, KeyPressMask | ExposureMask );
X XSaveContext(dpy, virtual, TwmContext, (caddr_t) tmp_win);
X XSaveContext(dpy, virtual, VirtualContext, (caddr_t) tmp_win);
X XSaveContext(dpy, virtual, ScreenContext, (caddr_t) Scr);
X***************
X*** 259,265 ****
X TwmWindow *tmp_win;
X {
X XUnmapWindow(dpy, tmp_win->frame);
X! XUnmapWindow(dpy, tmp_win->w);
X if (tmp_win->virtualWindow && !tmp_win->sticky)
X XUnmapWindow(dpy, tmp_win->virtualWindow);
X }
X--- 259,266 ----
X TwmWindow *tmp_win;
X {
X XUnmapWindow(dpy, tmp_win->frame);
X! if (!tmp_win->iconmgr)
X! XUnmapWindow(dpy, tmp_win->w);
X if (tmp_win->virtualWindow && !tmp_win->sticky)
X XUnmapWindow(dpy, tmp_win->virtualWindow);
X }
X***************
X*** 711,716 ****
X--- 712,719 ----
X XEvent ev;
X
X if (x != Scr->vdtPositionX || y != Scr->vdtPositionY) {
X+ Scr->vdtSaveX = Scr->vdtPositionX;
X+ Scr->vdtSaveY = Scr->vdtPositionY;
X if (x < 0) x = 0;
X if (y < 0) y = 0;
X if ((x + Scr->MyDisplayWidth) > Scr->vdtWidth)
X***************
X*** 758,763 ****
X--- 761,770 ----
X
X switch (func)
X {
X+ case F_SCROLLBACK:
X+ x = Scr->vdtSaveX;
X+ y = Scr->vdtSaveY;
X+ break;
X case F_SCROLL:
X status = XParseGeometry(pos, &x, &y, &width, &height);
X if ((status & (XValue & YValue)) != (XValue & YValue)) {
X***************
X*** 767,772 ****
X--- 774,783 ----
X }
X x = abs(x) * Scr->MyDisplayWidth;
X y = abs(y) * Scr->MyDisplayHeight;
X+ if (status & XNegative)
X+ x = Scr->vdtWidth - Scr->MyDisplayWidth - x;
X+ if (status & YNegative)
X+ y = Scr->vdtHeight - Scr->MyDisplayHeight - y;
X break;
X case F_SCROLLHOME:
X x = 0;
X***************
X*** 965,969 ****
X--- 976,1009 ----
X x = (tmp_win->frame_x / Scr->MyDisplayWidth) * Scr->MyDisplayWidth;
X y = (tmp_win->frame_y / Scr->MyDisplayHeight) * Scr->MyDisplayHeight;
X MoveDesktop(x, y);
X+ }
X+ }
X+
X+ /***********************************************************************
X+ *
X+ * Procedure:
X+ * PaintVirtualWindow - paint the window name in the virtual window
X+ *
X+ * Returned Value:
X+ * None
X+ *
X+ ***********************************************************************
X+ */
X+
X+ void
X+ PaintVirtualWindow(tmp_win)
X+ TwmWindow *tmp_win;
X+ {
X+ int x, y;
X+ int xr, yb;
X+
X+ if (Scr->ShowVirtualNames) {
X+ FBF(tmp_win->virtual.fore, tmp_win->virtual.back,
X+ Scr->VirtualFont.font->fid);
X+
X+ XClearArea(dpy, tmp_win->virtualWindow, 1, 1, 9999, Scr->VirtualFont.height, False);
X+ XDrawString (dpy, tmp_win->virtualWindow, Scr->NormalGC,
X+ 1, 1+Scr->VirtualFont.y,
X+ tmp_win->name, strlen(tmp_win->name));
X }
X }
Xdiff -c ../old/vdt.h ./vdt.h
X*** ../old/vdt.h Tue Sep 4 23:56:49 1990
X--- ./vdt.h Mon Oct 1 19:53:34 1990
X***************
X*** 64,69 ****
X--- 64,70 ----
X extern void ScrollDesktop();
X extern void ResizeDesktop();
X extern void ScrollTo();
X+ extern void PaintVirtualWindow();
X
X #endif /* _VDT_ */
X
Xdiff -c ../old/version.c ./version.c
X*** ../old/version.c Tue Sep 4 23:56:49 1990
X--- ./version.c Mon Oct 1 19:53:34 1990
X***************
X*** 26,30 ****
X /*****************************************************************************/
X
X /* char *Version = "MIT X Consortium, R4"; */
X! char *Version = "$Revision: 6.0 $";
X
X--- 26,30 ----
X /*****************************************************************************/
X
X /* char *Version = "MIT X Consortium, R4"; */
X! char *Version = "$Revision: 7.0 $";
X
SHAR_EOF
if test 35661 -ne "`wc -c < patch.3`"
then
echo shar: error transmitting "patch.3" '(should have been 35661 characters)'
fi
fi
# end of shell archive
exit 0
dan
----------------------------------------------------
O'Reilly && Associates argv@sun.com / argv@ora.com
Opinions expressed reflect those of the author only.