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.