;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for System version 121.2
;;; Reason:
;;;  Fix brain damage in TV::SET-CONSOLE-SIZE that assumes only
;;;  portait or landscape mode.  Fancy landscape will now work.
;;; Written 31-Dec-86 14:06:47 by EFH at site LMI Cambridge
;;; while running on Lene Lovich from band 2
;;; with Experimental System 121.1, Experimental Lambda-Diag 15.0, Experimental ZMail 70.0, Experimental KERMIT 32.0, Experimental Unix-Interface 10.0, Experimental Local-File 72.0, Experimental FILE-Server 21.0, Experimental Tape 13.0, microcode 1729, SDU Boot Tape 3.14, SDU ROM 102.



; From modified file DJ: L.WINDOW; SHWARM.LISP#369 at 31-Dec-86 14:07:00
#8R TV#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "TV")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: WINDOW; SHWARM  "

(DEFUN SET-CONSOLE-SIZE (WIDTH HEIGHT)
  (DELAYING-SCREEN-MANAGEMENT
    (WITH-MOUSE-USURPED
      (LOCK-SHEET (MAIN-SCREEN)
	(LOCK-SHEET (WHO-LINE-SCREEN)
	  (WITHOUT-INTERRUPTS
	    (LET ((MS MOUSE-SHEET) (SW SELECTED-WINDOW))
	      (WHEN (SHEET-ME-OR-MY-KID-P MS MAIN-SCREEN) (SETQ MOUSE-SHEET NIL))
	      (SEND WHO-LINE-SCREEN :DEEXPOSE)
	      (SEND MAIN-SCREEN :DEEXPOSE)
	      (INITIALIZE-RUN-LIGHT-LOCATIONS)
	      (SI::CLEAR-SCREEN-BUFFER SYS:IO-SPACE-VIRTUAL-ADDRESS)
	      (SETQ MAIN-SCREEN-HEIGHT HEIGHT)
	      (SETQ MAIN-SCREEN-WIDTH WIDTH)
	      (SEND WHO-LINE-SCREEN :CHANGE-OF-SIZE-OR-MARGINS
				    :WIDTH WIDTH
				    :TOP (- HEIGHT (SHEET-HEIGHT WHO-LINE-SCREEN)))
	      (SEND MAIN-SCREEN :CHANGE-OF-SIZE-OR-MARGINS
				:WIDTH WIDTH
				:HEIGHT (- HEIGHT (SHEET-HEIGHT WHO-LINE-SCREEN)))
	      (COND ((> WIDTH 800.)
		     (SEND WHO-LINE-RUN-STATE-SHEET
			   :CHANGE-OF-SIZE-OR-MARGINS :LEFT 328. :RIGHT 520.)
		     (SEND WHO-LINE-FILE-STATE-SHEET
			   :CHANGE-OF-SIZE-OR-MARGINS :LEFT 520. :RIGHT width)
		     (SEND WHO-LINE-DOCUMENTATION-WINDOW
			   :CHANGE-OF-SIZE-OR-MARGINS :WIDTH width))
		    (T
		     (SEND WHO-LINE-RUN-STATE-SHEET
			   :CHANGE-OF-SIZE-OR-MARGINS :LEFT 328. :RIGHT 480.)
		     (SEND WHO-LINE-FILE-STATE-SHEET
			   :CHANGE-OF-SIZE-OR-MARGINS :LEFT 480. :RIGHT width)
		     (SEND WHO-LINE-DOCUMENTATION-WINDOW :CHANGE-OF-SIZE-OR-MARGINS :WIDTH width)))
	      (SEND WHO-LINE-SCREEN :EXPOSE)
	      (SEND MAIN-SCREEN :EXPOSE)
	      (MOUSE-SET-SHEET MAIN-SCREEN)
	      (WHEN SW (SEND SW :SELECT)))))))
    (DOLIST (RESOURCE-NAME WINDOW-RESOURCE-NAMES)
      ;; this loses for things like pop-up-finger-window which we would like to be
      ;;  full screen width on all monitor configurations.
      (SI:MAP-RESOURCE 
	(LAMBDA (WINDOW &REST IGNORE)
	  (OR (TYPEP WINDOW 'INSTANCE) (FERROR "Lossage"))
	  (IF (TYPEP WINDOW 'TV:BASIC-MENU)
	      (LET ((GEO (SEND WINDOW :GEOMETRY)))
		(DO ((L GEO (CDR L))) ((NULL L))
		  (SETF (CAR L) NIL)))
	    (LET* ((SUPERIOR (SEND WINDOW :SUPERIOR))
		   (BOTTOM (SEND WINDOW :HEIGHT))
		   (SUPHEIGHT (OR (SEND-IF-HANDLES SUPERIOR :INSIDE-HEIGHT)
				  (SEND SUPERIOR :HEIGHT))))
	      (IF (> BOTTOM SUPHEIGHT)
		  (SEND WINDOW :SET-SIZE (SEND WINDOW :WIDTH) SUPHEIGHT)))))
	RESOURCE-NAME)))
  (INITIALIZE-RUN-LIGHT-LOCATIONS)	;everything is really the right size now.
  T)

))
