From: <kr_...@us...> - 2003-03-03 19:23:56
|
Update of /cvsroot/htoolkit/port/src/Port In directory sc8-pr-cvs1:/tmp/cvs-serv5600/src/Port Modified Files: Handlers.hs Log Message: the modified getAllWindowHandles returns the list sorted in Z-order Index: Handlers.hs =================================================================== RCS file: /cvsroot/htoolkit/port/src/Port/Handlers.hs,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Handlers.hs 10 Feb 2003 22:42:08 -0000 1.8 --- Handlers.hs 3 Mar 2003 19:23:53 -0000 1.9 *************** *** 109,112 **** --- 109,113 ---- import Control.Monad( when ) import System.IO.Unsafe( unsafePerformIO ) + import qualified Data.List as L {----------------------------------------------------------------------------------------- *************** *** 190,196 **** -----------------------------------------------------------------------------------------} {-# NOINLINE windows #-} ! windows :: MVar (PtrMap WindowHandle ()) windows ! = unsafePerformIO (newMVar empty) -- | 'registerWindow' should be called by all top-level window creation functions. --- 191,197 ---- -----------------------------------------------------------------------------------------} {-# NOINLINE windows #-} ! windows :: MVar [WindowHandle] windows ! = unsafePerformIO (newMVar []) -- | 'registerWindow' should be called by all top-level window creation functions. *************** *** 200,214 **** registerWindow :: WindowHandle -> IO () registerWindow hwnd ! = do set <- takeMVar windows ! putMVar windows (insert hwnd () set) - -- returns True when this was the last open window. unregisterWindow :: WindowHandle -> IO () unregisterWindow hwnd ! = do set <- takeMVar windows ! putMVar windows (delete hwnd set) getAllWindowHandles :: IO [WindowHandle] ! getAllWindowHandles = fmap keys (readMVar windows) {----------------------------------------------------------------------------------------- --- 201,215 ---- registerWindow :: WindowHandle -> IO () registerWindow hwnd ! = do hwnds <- takeMVar windows ! putMVar windows (hwnd:hwnds) unregisterWindow :: WindowHandle -> IO () unregisterWindow hwnd ! = do hwnds <- takeMVar windows ! putMVar windows (L.delete hwnd hwnds) + -- | 'getAllWindowHandles' returns list of handles for all opened windows, sorted in Z-order. getAllWindowHandles :: IO [WindowHandle] ! getAllWindowHandles = readMVar windows {----------------------------------------------------------------------------------------- *************** *** 405,410 **** handleWindowActivate :: WindowHandle -> IO () ! handleWindowActivate hwnd ! = invokeHandler hwnd handlersWindowActivate id --- 406,413 ---- handleWindowActivate :: WindowHandle -> IO () ! handleWindowActivate hwnd = do ! hwnds <- takeMVar windows ! putMVar windows (hwnd : L.delete hwnd hwnds) ! invokeHandler hwnd handlersWindowActivate id |