(FILECREATED " 4-Jul-86 20:58:33" {QV}<NOTECARDS>1.3K>RHTPATCH053.;2 6204   

      changes to:  (VARS RHTPATCH053COMS)
		   (FNS NC.GETPROMPTWINDOW)

      previous date: " 4-Jul-86 18:46:54" {QV}<NOTECARDS>1.3K>RHTPATCH053.;1)


(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT RHTPATCH053COMS)

(RPAQQ RHTPATCH053COMS ((* * Change to NCINTERFACE)
			  (FNS NC.GETPROMPTWINDOW)))
(* * Change to NCINTERFACE)

(DEFINEQ

(NC.GETPROMPTWINDOW
  (LAMBDA (MAINWINDOW #LINES FONT DONTCREATE MINWIDTH)     (* rht: " 4-Jul-86 18:44")

          (* makes sure that MAINWINDOW has an attached promptwindow and returns it. If one already exists, it is shaped to 
	  be at least #LINES high. If FONT is NIL, the font of the main window is used for the promptwindow.)



          (* * fgh 6/6/86 Adapted from system GETPROMPTWINDOW. Added MINWIDTH arg.)



          (* * rht 7/2/86: Now attaches prompt window on right if near right edge of screen.)



          (* * rht 7/4/86: Yanked out PositionOnEdge localvar. Put code in place.)


    (PROG ((PWINDOWPROP (WINDOWPROP MAINWINDOW (QUOTE PROMPTWINDOW)))
	     (PWINDOWMINWIDTH (WINDOWPROP MAINWINDOW (QUOTE PROMPTWINDOWMINWIDTH)))
	     (MAINWINDOWREGION (WINDOWPROP MAINWINDOW (QUOTE REGION)))
	     PWINDOW PWINDOWREGION WIDTH HEIGHT OBSCUREDHEIGHT PWINDOW.PWINDOW)
	    (COND
	      (DONTCREATE (RETURN (CAR PWINDOWPROP)))
	      (PWINDOWPROP (SETQ PWINDOW (CAR PWINDOWPROP))
			   (COND
			     ((NOT (OPENWP PWINDOW))
			       (ATTACHWINDOW PWINDOW MAINWINDOW (QUOTE TOP)
					       (if (GREATERP (PLUS (fetch (REGION LEFT)
									    of MAINWINDOWREGION)
									 (WIDTHIFWINDOW
									   (OR MINWIDTH 
										 PWINDOWMINWIDTH)))
								 SCREENWIDTH)
						   then (QUOTE RIGHT)
						 else (QUOTE LEFT))
					       (QUOTE LOCALCLOSE))))
			   (if (SETQ PWINDOW.PWINDOW (WINDOWPROP PWINDOW (QUOTE PROMPTWINDOW))
				   )
			       then                        (* This prompt window has a prompt window of its own.
							     Close and detach it.)
				      (FREEATTACHEDWINDOW (CAR PWINDOW.PWINDOW))
				      (CLOSEW (CAR PWINDOW.PWINDOW)))
			   (WINDOWPROP PWINDOW (QUOTE MAXSIZE)
					 (CONS 64000 64000))
			   (WINDOWPROP PWINDOW (QUOTE MINSIZE)
					 (CONS 1 1))
			   (SETQ HEIGHT (HEIGHTIFWINDOW (TIMES (OR #LINES (CDR PWINDOWPROP)
									   1)
								     (FONTPROP (DSPFONT NIL 
											  PWINDOW)
										 (QUOTE HEIGHT)))))
			   (SETQ WIDTH (MAX (WIDTHIFWINDOW (OR MINWIDTH PWINDOWMINWIDTH 1))
						(fetch (REGION WIDTH) of MAINWINDOWREGION)))
			   (SETQ PWINDOWREGION (WINDOWPROP PWINDOW (QUOTE REGION)))
			   (COND
			     ((OR (NOT (EQP HEIGHT (fetch (REGION HEIGHT) of PWINDOWREGION))
					   )
				    (NOT (EQP WIDTH (fetch (REGION WIDTH) of PWINDOWREGION))))
                                                             (* Window exists, but not right size.)
			       (SHAPEW PWINDOW
					 (if (LEQ (PLUS (fetch (REGION LEFT) of 
										 MAINWINDOWREGION)
							      (WIDTHIFWINDOW (OR MINWIDTH 
										  PWINDOWMINWIDTH)))
						      SCREENWIDTH)
					     then (create REGION
						       using PWINDOWREGION HEIGHT ← HEIGHT WIDTH ← 
							       WIDTH)
					   else (create REGION
							    BOTTOM ←(fetch (REGION BOTTOM)
								       of PWINDOWREGION)
							    LEFT ←(DIFFERENCE
							      (PLUS (fetch (REGION LEFT)
									 of MAINWINDOWREGION)
								      (fetch (REGION WIDTH)
									 of MAINWINDOWREGION))
							      WIDTH)
							    HEIGHT ← HEIGHT
							    WIDTH ← WIDTH)))
			       (RPLACD PWINDOWPROP #LINES)
                                                             (* Fall through to check visibility)
			       )))
	      (T (SETQ PWINDOW (CREATEW (create REGION
						      LEFT ← 0
						      BOTTOM ← 0
						      WIDTH ←(MAX (OR MINWIDTH 1)
								    (fetch (REGION WIDTH)
								       of MAINWINDOWREGION))
						      HEIGHT ←(SETQ HEIGHT
							(HEIGHTIFWINDOW
							  (TIMES (OR #LINES (SETQ #LINES 1))
								   (FONTPROP (OR FONT
										     (SETQ FONT
										       (DSPFONT
											 NIL 
										       MAINWINDOW)))
									       (QUOTE HEIGHT))))))
					    NIL NIL T))
		 (DSPSCROLL T PWINDOW)
		 (DSPFONT FONT PWINDOW)
		 (WINDOWPROP PWINDOW (QUOTE PAGEFULLFN)
			       (QUOTE NILL))
		 (ATTACHWINDOW PWINDOW MAINWINDOW (QUOTE TOP)
				 (if (GREATERP (PLUS (fetch (REGION LEFT) of 
										 MAINWINDOWREGION)
							   (WIDTHIFWINDOW (OR MINWIDTH 
										  PWINDOWMINWIDTH)))
						   SCREENWIDTH)
				     then (QUOTE RIGHT)
				   else (QUOTE LEFT))
				 (QUOTE LOCALCLOSE))
		 (WINDOWPROP MAINWINDOW (QUOTE PROMPTWINDOW)
			       (CONS PWINDOW #LINES))
		 (WINDOWPROP PWINDOW (QUOTE OPENFN)
			       (FUNCTION \PROMPTWINDOW.OPENFN))))
	    (COND
	      ((ILESSP (SETQ OBSCUREDHEIGHT (IDIFFERENCE SCREENHEIGHT
							       (fetch (REGION TOP)
								  of (WINDOWPROP PWINDOW
										     (QUOTE REGION))
									)))
			 0)                                  (* Promptwindow off screen at top, so slip window 
							     group down to make it visible)
		(RELMOVEW MAINWINDOW (create POSITION
						 XCOORD ← 0
						 YCOORD ← OBSCUREDHEIGHT))))
	    (WINDOWPROP PWINDOW (QUOTE MINSIZE)
			  (CONS 1 HEIGHT))
	    (WINDOWPROP PWINDOW (QUOTE MAXSIZE)
			  (CONS 64000 HEIGHT))
	    (WINDOWPROP MAINWINDOW (QUOTE PROMPTWINDOWMINWIDTH)
			  (OR MINWIDTH 1))
	    (OPENW PWINDOW)
	    (RETURN PWINDOW))))
)
(PUTPROPS RHTPATCH053 COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (460 6122 (NC.GETPROMPTWINDOW 470 . 6120)))))
STOP