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
|