From 931f2aa55d01268e5fbac2f35ed20b5c17bfb899 Mon Sep 17 00:00:00 2001 From: Jason Creighton Date: Mon, 21 May 2007 05:55:51 +0200 Subject: focusWindow: always view the containing workspace first darcs-hash:20070521035551-b9aa7-d33479e88029b33748dd48607b51fac22343168c --- StackSet.hs | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) (limited to 'StackSet.hs') diff --git a/StackSet.hs b/StackSet.hs index f5d04db..9401bbc 100644 --- a/StackSet.hs +++ b/StackSet.hs @@ -248,19 +248,14 @@ focusRight = modify Empty $ \c -> case c of Node t ls [] -> Node x [] (xs ++ [t]) where (x:xs) = reverse ls -- --- | /O(1) on current window, O(n) in general/. Focus the window 'w' on --- the current workspace. If 'w' isn't on the current workspace, leave --- the StackSet unmodified. --- --- TODO: focusWindow give focus to any window on visible workspace +-- | /O(1) on current window, O(n) in general/. Focus the window 'w'. If the +-- workspace 'w' is on is not visible, 'view' that workspace first. -- focusWindow :: (Integral i, Eq a) => a -> StackSet i a s -> StackSet i a s focusWindow w s | Just w == peek s = s | otherwise = maybe s id $ do - n <- findIndex w s -- TODO, needs to check visible workspaces - if n /= tag (current s) then Nothing -- not on this screen - else return $ until ((Just w ==) . peek) focusLeft s - + n <- findIndex w s + return $ until ((Just w ==) . peek) focusLeft (view n s) -- -- Finding if a window is in the stackset is a little tedious. We could -- cgit v1.2.3