(FILECREATED "28-Apr-87 18:13:54" {QV}<NOTECARDS>1.3K>NEXT>RHTPATCH250.;1 2857         changes to:  (VARS RHTPATCH250COMS))(* Copyright (c) 1987 by Xerox Corporation. All rights reserved.)(PRETTYCOMPRINT RHTPATCH250COMS)(RPAQQ RHTPATCH250COMS ((* * Fixes bug reported by Wes whereby MoveNodeAndSubtree breaks for nodes 			     with lots of subnodes.)			  (DECLARE: FIRST (P (LOAD? (NC.FindFile (QUOTE GRAPHERPATCH)))))			  (* * Change to GRAPHERPATCH)			  (FNS NOT.TRACKCURSOR)))(* * Fixes bug reported by Wes whereby MoveNodeAndSubtree breaks for nodes with lots of subnodes.)(DECLARE: FIRST (LOAD? (NC.FindFile (QUOTE GRAPHERPATCH))))(* * Change to GRAPHERPATCH)(DEFINEQ(NOT.TRACKCURSOR  (LAMBDA (Node DisplayStream Graph)                         (* rht: "28-Apr-87 18:06")          (* * Gets an old, and a new region from the user, and uses these to calculate all the new positions for all the 	  children of Node.)          (* * rht 4/28/87: Changed from APPLY of UNIONREGIONS to for loop doing successive UNIONREGIONS calls.)    (if (NULL Node)	then (PROMPTPRINT "No node selected.")      else (PROG* ((Children (RECURSIVE.COLLECTDESCENDENTS Node Graph))		     (OldRegion (for EachNode in (CONS Node Children)				   bind (TotalRegion _(NODEREGION Node))				   do (FLIPNODE EachNode DisplayStream)					(SETQ TotalRegion (UNIONREGIONS TotalRegion (NODEREGION									      EachNode)))				   finally (RETURN TotalRegion)))		     (NewRegionPosition (GETBOXPOSITION.FROMINITIALREGION (WFROMDS DisplayStream)									    OldRegion DisplayStream))		     (deltaX (DIFFERENCE (fetch (POSITION XCOORD) of NewRegionPosition)					   (fetch (REGION LEFT) of OldRegion)))		     (deltaY (DIFFERENCE (fetch (POSITION YCOORD) of NewRegionPosition)					   (fetch (REGION BOTTOM) of OldRegion)))		     (OldPos (fetch (GRAPHNODE NODEPOSITION) of Node))		     (NewPos (CREATE.NEW.NODEPOSITION Node deltaX deltaY)))		    (if (NOT (EQUAL OldPos NewPos))			then (MOVENODE Node OldPos NewPos Graph DisplayStream)			       (EXTENDEXTENT (WFROMDS DisplayStream)					       (NODEREGION Node))			       (CALL.MOVENODEFN Node OldPos Graph (WFROMDS DisplayStream)						  NewPos)			       (if Children				   then (PROG ((MovedNodes (LIST (fetch (GRAPHNODE NODEID)									  of Node))))					          (MOVEDESCENDENTS Graph Node DisplayStream deltaX 								     deltaY))))		    (for EachNode in (CONS Node Children) do (FLIPNODE EachNode 										 DisplayStream)))))))(PUTPROPS RHTPATCH250 COPYRIGHT ("Xerox Corporation" 1987))(DECLARE: DONTCOPY  (FILEMAP (NIL (706 2775 (NOT.TRACKCURSOR 716 . 2773)))))STOP