Expose

module Expose where

import Message
import Cont
--import Command
--import LayoutRequest
import Fudget
--import Xtypes
import Geometry(Rect,rmax)
import FRequest
import Event
--import Font

collectExposeK :: Bool -> Rect -> Int -> ([Rect] -> K a b) -> K a b
collectExposeK grX r aft c = collect [r] aft
   where collect rs aft = 
	   if aft == 0 then c rs
	   else waitForK (\r ->
			case r of
			 Low (XEvt (Expose r aft')) | not grX -> Just (r,aft')
			 Low (XEvt (GraphicsExpose r aft' _ _)) | grX -> Just (r,aft')
			 _ -> Nothing) $ \(r,aft')->
			collect (r:rs) aft'


maxExposeK grX r aft c = collectExposeK grX r aft $ \rs ->
		     c (foldl1 rmax rs)