diff options
author | daniel <daniel@wagner-home.com> | 2007-03-28 12:15:40 +0200 |
---|---|---|
committer | daniel <daniel@wagner-home.com> | 2007-03-28 12:15:40 +0200 |
commit | 6bdf7a9b136477cadaef81c7cbb725fbec705df3 (patch) | |
tree | b8bff530640954bcf43aa1819ab9be2d6a0766e3 /Operations.hs | |
parent | fa39c478ec32fd04af0edd3f08321cf774da2a25 (diff) | |
download | xmonad-6bdf7a9b136477cadaef81c7cbb725fbec705df3.tar.gz xmonad-6bdf7a9b136477cadaef81c7cbb725fbec705df3.tar.xz xmonad-6bdf7a9b136477cadaef81c7cbb725fbec705df3.zip |
first shot at allowing click to focus windows
darcs-hash:20070328101540-c98ca-92140a718ff7491aa88895c0592cd9a964e671b0.gz
Diffstat (limited to '')
-rw-r--r-- | Operations.hs | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/Operations.hs b/Operations.hs index d4fd329..f30460a 100644 --- a/Operations.hs +++ b/Operations.hs @@ -31,8 +31,6 @@ refresh = do d <- gets display fls <- gets layoutDescs dfltfl <- gets defaultLayoutDesc - -- l <- gets layout - -- ratio <- gets leftWidth let move w a b c e = io $ moveResizeWindow d w a b c e flip mapM_ (M.assocs ws2sc) $ \(n, scn) -> do let sc = xinesc !! scn @@ -43,6 +41,9 @@ refresh = do fl = M.findWithDefault dfltfl n fls l = layoutType fl ratio = tileFraction fl + mapM_ (setButtonGrab True) (W.index n ws) + when (n == W.current ws) $ + maybe (return ()) (setButtonGrab False) (W.peekStack n ws) case l of Full -> whenJust (W.peekStack n ws) $ \w -> do move w sx sy sw sh @@ -96,6 +97,18 @@ hide w = withDisplay $ \d -> do -- --------------------------------------------------------------------- -- Window operations +-- | setButtonGrab. Tell whether or not to intercept clicks on a given window +buttonsToGrab :: [ButtonMask] +buttonsToGrab = [button1, button2, button3] + +setButtonGrab :: Bool -> Window -> X () +setButtonGrab True w = withDisplay $ \d -> io $ flip mapM_ buttonsToGrab (\b -> + grabButton d b anyModifier w False + (buttonPressMask .|. buttonReleaseMask) + grabModeAsync grabModeSync none none) +setButtonGrab False w = withDisplay $ \d -> io $ flip mapM_ buttonsToGrab (\b -> + ungrabButton d b anyModifier w) + -- | manage. Add a new window to be managed in the current workspace. Bring it into focus. -- If the window is already under management, it is just raised. -- @@ -219,5 +232,3 @@ restart :: IO () restart = do prog <- getProgName args <- getArgs executeFile prog True args Nothing - - |