summaryrefslogtreecommitdiffstats
path: root/Operations.hs
diff options
context:
space:
mode:
authorSpencer Janssen <sjanssen@cse.unl.edu>2007-08-10 23:39:40 +0200
committerSpencer Janssen <sjanssen@cse.unl.edu>2007-08-10 23:39:40 +0200
commit74be11b60da8ad9373d26fb2a669ba3c4852b6a7 (patch)
tree82c8db11853eb793f5a949750e18c9d73418f5b7 /Operations.hs
parentba0bf3d271175ce396fb8fadad23e6d62cb8b942 (diff)
downloadmetatile-74be11b60da8ad9373d26fb2a669ba3c4852b6a7.tar
metatile-74be11b60da8ad9373d26fb2a669ba3c4852b6a7.zip
Cleanup
darcs-hash:20070810213940-a5988-7baa041cdf9a07038cb36645f314eb48bb8423aa
Diffstat (limited to 'Operations.hs')
-rw-r--r--Operations.hs19
1 files changed, 11 insertions, 8 deletions
diff --git a/Operations.hs b/Operations.hs
index c8a9d7a..3e2a561 100644
--- a/Operations.hs
+++ b/Operations.hs
@@ -511,14 +511,17 @@ mouseDrag :: (Position -> Position -> X ()) -> X () -> X ()
mouseDrag f done = do
drag <- gets dragging
case drag of
- Just _ -> return () -- error case? we're already dragging
- Nothing -> do XConf { theRoot = root, display = d } <- ask
- io $ grabPointer d root False (buttonReleaseMask .|. pointerMotionMask)
- grabModeAsync grabModeAsync none none currentTime
- let cleanup = do io $ ungrabPointer d currentTime
- modify $ \s -> s { dragging = Nothing }
- done
- modify $ \s -> s { dragging = Just (f, cleanup) }
+ Just _ -> return () -- error case? we're already dragging
+ Nothing -> do
+ XConf { theRoot = root, display = d } <- ask
+ io $ grabPointer d root False (buttonReleaseMask .|. pointerMotionMask)
+ grabModeAsync grabModeAsync none none currentTime
+ modify $ \s -> s { dragging = Just (f, cleanup) }
+ where
+ cleanup = do
+ withDisplay $ io . flip ungrabPointer currentTime
+ modify $ \s -> s { dragging = Nothing }
+ done
mouseMoveWindow :: Window -> X ()
mouseMoveWindow w = whenX (isClient w) $ withDisplay $ \d -> do