aboutsummaryrefslogtreecommitdiffstats
path: root/XMonad/Actions/GridSelect.hs
diff options
context:
space:
mode:
authorDaniel Schoepe <asgaroth_@gmx.de>2009-04-10 00:33:02 +0200
committerDaniel Schoepe <asgaroth_@gmx.de>2009-04-10 00:33:02 +0200
commit82dd844adfa563fe0e2d0a4b19c37e5786f54343 (patch)
treeb5cbe27a9e45f30b1fd22c7dbfa145ded02c963a /XMonad/Actions/GridSelect.hs
parent10ffc9b876146747a1614450295c29d8860e1207 (diff)
downloadXMonadContrib-82dd844adfa563fe0e2d0a4b19c37e5786f54343.tar.gz
XMonadContrib-82dd844adfa563fe0e2d0a4b19c37e5786f54343.tar.xz
XMonadContrib-82dd844adfa563fe0e2d0a4b19c37e5786f54343.zip
Mouse support for GridSelect
Ignore-this: 38669e39c8676233d71f457c0b697500 GridSelect now allows selecting an element by a click with the left mouse button. darcs-hash:20090409223302-cb1c6-7b62d240e030889ce5e8814e081a1a1986e27cba.gz
Diffstat (limited to 'XMonad/Actions/GridSelect.hs')
-rw-r--r--XMonad/Actions/GridSelect.hs14
1 files changed, 13 insertions, 1 deletions
diff --git a/XMonad/Actions/GridSelect.hs b/XMonad/Actions/GridSelect.hs
index 16b4ba0..9101174 100644
--- a/XMonad/Actions/GridSelect.hs
+++ b/XMonad/Actions/GridSelect.hs
@@ -195,6 +195,17 @@ handle (ks,_) (KeyEvent {ev_event_type = t})
updateElements (catMaybes [(findInElementMap oldPos elmap), newSelectedEl])
eventLoop
+handle _ (ButtonEvent { ev_event_type = t, ev_x = x, ev_y = y })
+ | t == buttonRelease = do
+ (TwoDState { td_elementmap = elmap, td_paneX = px, td_paneY = py,
+ td_gsconfig = (GSConfig ch cw _ _ _) }) <- get
+ let gridX = (fi x - (px - cw) `div` 2) `div` cw
+ gridY = (fi y - (py - ch) `div` 2) `div` ch
+ case lookup (gridX,gridY) elmap of
+ Just (_,el) -> return (Just el)
+ Nothing -> eventLoop
+ | otherwise = eventLoop
+
handle _ (ExposeEvent { }) = updateAllElements >> eventLoop
handle _ _ = eventLoop
@@ -282,8 +293,9 @@ gridselect gsconfig elmap =
win <- liftIO $ mkUnmanagedWindow dpy (defaultScreenOfDisplay dpy) rootw
(rect_x s) (rect_y s) (rect_width s) (rect_height s)
liftIO $ mapWindow dpy win
- liftIO $ selectInput dpy win (exposureMask .|. keyPressMask)
+ liftIO $ selectInput dpy win (exposureMask .|. keyPressMask .|. buttonReleaseMask)
status <- io $ grabKeyboard dpy win True grabModeAsync grabModeAsync currentTime
+ io $ grabButton dpy button1 anyModifier win True buttonReleaseMask grabModeAsync grabModeAsync none none
font <- initXMF (gs_font gsconfig)
let screenWidth = toInteger $ rect_width s;
screenHeight = toInteger $ rect_height s;