summaryrefslogtreecommitdiffstats
path: root/Main.hs
diff options
context:
space:
mode:
authorSpencer Janssen <sjanssen@cse.unl.edu>2007-03-07 07:04:47 +0100
committerSpencer Janssen <sjanssen@cse.unl.edu>2007-03-07 07:04:47 +0100
commit7efe23f6578cd675309b34491cd934fb552630cf (patch)
tree99ed5364c36714c138669b2350072dbdbbf7df90 /Main.hs
parent813264ca0d49d271b919f57a3f6d830dc8034ec8 (diff)
downloadmetatile-7efe23f6578cd675309b34491cd934fb552630cf.tar
metatile-7efe23f6578cd675309b34491cd934fb552630cf.zip
Handle several more events, should fix several issues.
darcs-hash:20070307060447-a5988-0a7399c8342b64f6789fba1f4533a36c3031d896
Diffstat (limited to 'Main.hs')
-rw-r--r--Main.hs33
1 files changed, 31 insertions, 2 deletions
diff --git a/Main.hs b/Main.hs
index 6fdfbd3..19aed78 100644
--- a/Main.hs
+++ b/Main.hs
@@ -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.