diff options
author | Spencer Janssen <sjanssen@cse.unl.edu> | 2007-03-07 07:04:47 +0100 |
---|---|---|
committer | Spencer Janssen <sjanssen@cse.unl.edu> | 2007-03-07 07:04:47 +0100 |
commit | 7efe23f6578cd675309b34491cd934fb552630cf (patch) | |
tree | 99ed5364c36714c138669b2350072dbdbbf7df90 | |
parent | 813264ca0d49d271b919f57a3f6d830dc8034ec8 (diff) | |
download | metatile-7efe23f6578cd675309b34491cd934fb552630cf.tar metatile-7efe23f6578cd675309b34491cd934fb552630cf.zip |
Handle several more events, should fix several issues.
darcs-hash:20070307060447-a5988-0a7399c8342b64f6789fba1f4533a36c3031d896
-rw-r--r-- | Main.hs | 33 |
1 files changed, 31 insertions, 2 deletions
@@ -78,8 +78,12 @@ handle :: Event -> W () handle (MapRequestEvent {window = w}) = manage w handle (DestroyWindowEvent {window = w}) = do - modifyWindows (filter (/= w)) - refresh + ws <- getWindows + when (elem w ws) (unmanage w) + +handle (UnmapEvent {window = w}) = do + ws <- getWindows + when (elem w ws) (unmanage w) handle (KeyEvent {event_type = t, state = mod, keycode = code}) | t == keyPress = do @@ -89,6 +93,20 @@ handle (KeyEvent {event_type = t, state = mod, keycode = code}) [] -> return () ((_, _, act):_) -> act +handle e@(ConfigureRequestEvent {}) = do + dpy <- getDisplay + io $ configureWindow dpy (window e) (value_mask e) $ + WindowChanges + { wcX = x e + , wcY = y e + , wcWidth = width e + , wcHeight = height e + , wcBorderWidth = border_width e + , wcSibling = above e + , wcStackMode = detail e + } + io $ sync dpy False + handle _ = return () -- --------------------------------------------------------------------- @@ -130,6 +148,17 @@ manage w = do withWindows $ \ws -> if w `elem` ws then ws else w:ws -- a set io $ mapWindow d w +-- +-- | unmanage, a window no longer exists, remove it from the stack +-- +unmanage :: Window -> W () +unmanage w = do + dpy <- getDisplay + io $ grabServer dpy + modifyWindows (filter (/= w)) + io $ sync dpy False + io $ ungrabServer dpy + refresh -- -- | switch. switch focus to next window in list. |