aboutsummaryrefslogtreecommitdiffstats
path: root/XMonad/Main.hsc
diff options
context:
space:
mode:
authorSpencer Janssen <spencerjanssen@gmail.com>2008-10-07 22:39:53 +0200
committerSpencer Janssen <spencerjanssen@gmail.com>2008-10-07 22:39:53 +0200
commit768b420eb81e7a65447cd26663b2f8c95986095e (patch)
treebba19c0b2ae7f53926386d6ec68cb679bd05b417 /XMonad/Main.hsc
parentb67f9f0c258bc773d7c9e0266371ba632b86a32e (diff)
downloadxmonad-768b420eb81e7a65447cd26663b2f8c95986095e.tar.gz
xmonad-768b420eb81e7a65447cd26663b2f8c95986095e.tar.xz
xmonad-768b420eb81e7a65447cd26663b2f8c95986095e.zip
Track mouse position via events received
darcs-hash:20081007203953-25a6b-820e60a7db931a5e5e27ab8736643aea932ca3ec.gz
Diffstat (limited to 'XMonad/Main.hsc')
-rw-r--r--XMonad/Main.hsc16
1 files changed, 13 insertions, 3 deletions
diff --git a/XMonad/Main.hsc b/XMonad/Main.hsc
index 430e60c..945c5ea 100644
--- a/XMonad/Main.hsc
+++ b/XMonad/Main.hsc
@@ -99,7 +99,8 @@ xmonad initxmc = do
, focusedBorder = fbc
, keyActions = keys xmc xmc
, buttonActions = mouseBindings xmc xmc
- , mouseFocused = False }
+ , mouseFocused = False
+ , mousePosition = Nothing }
st = XState
{ windowset = initialWinset
, mapped = S.empty
@@ -136,10 +137,19 @@ xmonad initxmc = do
userCode $ startupHook initxmc
-- main loop, for all you HOF/recursion fans out there.
- forever_ $ handle =<< io (nextEvent dpy e >> getEvent e)
+ forever_ $ prehandle =<< io (nextEvent dpy e >> getEvent e)
return ()
- where forever_ a = a >> forever_ a
+ where
+ forever_ a = a >> forever_ a
+
+ -- if the event gives us the position of the pointer, set mousePosition
+ prehandle e = let mouse = do guard (ev_event_type e `elem` evs)
+ return (fromIntegral (ev_x_root e)
+ ,fromIntegral (ev_y_root e))
+ in local (\c -> c { mousePosition = mouse }) (handle e)
+ evs = [ keyPress, keyRelease, enterNotify, leaveNotify
+ , buttonPress, buttonRelease]
-- ---------------------------------------------------------------------