From aa8bec3561acb18150281ccf5f26ab91c047cc88 Mon Sep 17 00:00:00 2001 From: Jason Creighton Date: Sun, 25 Mar 2007 22:37:02 +0200 Subject: Xinerama focus bug (couldn't focus on current workspace) darcs-hash:20070325203702-b9aa7-ed927b7df5270a9dfaebbbf0105bb8f6f4b3402e --- Main.hs | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/Main.hs b/Main.hs index 3e5b865..cd906cd 100644 --- a/Main.hs +++ b/Main.hs @@ -402,22 +402,21 @@ view o = do ws <- gets workspace ws2sc <- gets wsOnScreen let m = W.current ws - when (n /= m) $ do - -- is the workspace we want to switch to currently visible? - if M.member n ws2sc - then windows $ W.view n - else do - sc <- case M.lookup m ws2sc of - Nothing -> do - trace "Current workspace isn't visible! This should never happen!" - -- we don't know what screen to use, just use the first one. - return 0 - Just sc -> return sc - modify $ \s -> s { wsOnScreen = M.insert n sc (M.filter (/=sc) ws2sc) } - gets wsOnScreen >>= trace . show - windows $ W.view n - mapM_ hide (W.index m ws) - setTopFocus + -- is the workspace we want to switch to currently visible? + if M.member n ws2sc + then windows $ W.view n + else do + sc <- case M.lookup m ws2sc of + Nothing -> do + trace "Current workspace isn't visible! This should never happen!" + -- we don't know what screen to use, just use the first one. + return 0 + Just sc -> return sc + modify $ \s -> s { wsOnScreen = M.insert n sc (M.filter (/=sc) ws2sc) } + gets wsOnScreen >>= trace . show + windows $ W.view n + mapM_ hide (W.index m ws) + setTopFocus where n = o-1 -- | True if window is under management by us -- cgit v1.2.3