;;; -*- Mode:Lisp; Readtable:ZL; Package:WINDOW-MAKER; Base:8; Readtable: CL; Patch-File:T -*-
;;; Patch file for Window-Maker version 1.1
;;; Reason:
;;;  Some luser wrote (apply 'and ...
;;; Written 10-Apr-86 14:32:14 by EFH at site LMI Cambridge
;;; while running on Flashman from band 4
;;; with Experimental System 110.187, Experimental Lambda-Diag 7.3, Experimental Local-File 68.5, Experimental FILE-Server 18.2, Experimental Unix-Interface 9.1, Experimental ZMail 65.11, Experimental Object Lisp 3.1, Experimental Tape 6.30, Experimental Site Data Editor 3.2, Experimental Tiger 24.0, Experimental KERMIT 31.2, Experimental Window-Maker 1.0, Experimental Gateway 4.5, Experimental TCP-Kernel 39.5, Experimental TCP-User 62.6, Experimental TCP-Server 45.5, Experimental MEDIUM-RESOLUTION-COLOR 3.1, Experimental MICRO-COMPILATION-TOOLS 3.2, microcode 1408, SDU ROM 8, Alpha III Andover patched '86.4.3.



; From file DJ: L.WINDOW.WINDOW-MAKER; CODE-GENERATION-FOR-CONSTRAINT-FRAMES.LISP#50 at 10-Apr-86 14:33:01
#8R WINDOW-MAKER#:
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "WINDOW-MAKER")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: WINDOW; WINDOW-MAKER; CODE-GENERATION-FOR-CONSTRAINT-FRAMES  "

(defun group-the-items-by-subgroup (list-of-items)
  (loop for item in list-of-items
	with list-of-subgroup = nil
	with flag = (every (mapcar #'(lambda (x) (send x :keyword)) list-of-items)
			   #'(lambda (x) (equal x :even)))
	with last-item = (first (last list-of-items))
	with subgroup-of-panes = nil
	do
	(if flag (return (ncons list-of-items))
	    (if (eq item last-item)
		(if (equal (funcall item ':keyword) ':even)
		    (if (not subgroup-of-panes) (update-list list-of-subgroup (ncons item))
		      (update-list list-of-subgroup subgroup-of-panes)
		      (update-list list-of-subgroup (ncons item)))
		  (update-list subgroup-of-panes item)
		  (update-list list-of-subgroup subgroup-of-panes))
	      (update-list subgroup-of-panes item)))
	finally (return list-of-subgroup)))

))
