From 7f9e8fa6d9c36cf42430e5239fbdb8bcfdec3e00 Mon Sep 17 00:00:00 2001 From: Karsten Schoelzel Date: Mon, 10 Sep 2007 11:03:29 +0200 Subject: Fix float behaviour, add shiftWin. First, if float is called with window which is on a hidden workspace, then the window will remain on that hidden workspace. Now the focus should change more as expected: float w = (view current) . (shiftWin ws w) where current is the current screen/workspace shiftWin ws w is: - view the workspace w is on - set focus on w - shift ws - set focus back to window it was on that workspace unless w was focused shiftWin was add to StackSet.hs darcs-hash:20070910090329-eb3a1-ae150bf783b36fb4811e92d81b4917066c8733b7 --- Main.hs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'Main.hs') diff --git a/Main.hs b/Main.hs index d7ce8c9..ead2a96 100644 --- a/Main.hs +++ b/Main.hs @@ -29,7 +29,7 @@ import Graphics.X11.Xinerama (getScreenInfo) import XMonad import Config -import StackSet (new, floating, member, findIndex, workspace, tag, current, visible) +import StackSet (new, floating, member) import qualified StackSet as W import Operations @@ -226,10 +226,7 @@ handle e@(ConfigureRequestEvent {ev_window = w}) = withDisplay $ \dpy -> do ws <- gets windowset wa <- io $ getWindowAttributes dpy w - -- TODO temporary workaround for some bugs in float. Don't call 'float' on - -- windows that aren't visible, because it changes the focused screen - let vis = any ((== findIndex w ws) . Just . tag . workspace) (current ws : visible ws) - if (M.member w (floating ws) && vis) + if M.member w (floating ws) || not (member w ws) then do io $ configureWindow dpy w (ev_value_mask e) $ WindowChanges { wc_x = ev_x e -- cgit v1.2.3