-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


New patches:

[UpdatePointer even to empty workspaces
Joachim Breitner <mail@joachim-breitner.de>**20081007080041
 This makes UpdatePointer more Xinerama-compatible: If the user switches to a
 screen with an empty workspace, the pointer is moved to that workspace, which I
 think is expected behavoiur.
] {
hunk ./XMonad/Actions/UpdatePointer.hs 28
- -import XMonad.StackSet (member)
+import XMonad.StackSet (member, peek, screenDetail, current)
hunk ./XMonad/Actions/UpdatePointer.hs 56
- --- window unless it's already there, or unless the user was changing
+-- window or empty screen unless it's already there, or unless the user was changing
hunk ./XMonad/Actions/UpdatePointer.hs 59
- -updatePointer p = withFocused $ \w -> do
+updatePointer p = do
hunk ./XMonad/Actions/UpdatePointer.hs 62
+  rect <- case peek ws of
+		Nothing -> return $ (screenRect . screenDetail .current) ws
+		Just w  -> windowAttributesToRectangle `fmap` io (getWindowAttributes dpy w)
hunk ./XMonad/Actions/UpdatePointer.hs 67
- -  wa <- io $ getWindowAttributes dpy w
hunk ./XMonad/Actions/UpdatePointer.hs 68
- -  unless (pointWithinRegion rootx rooty (wa_x wa) (wa_y wa) (wa_width wa) (wa_height wa)
+  unless (pointWithin (fi rootx) (fi rooty) rect
hunk ./XMonad/Actions/UpdatePointer.hs 70
- -          || not (currentWindow `member` ws)) $
+          || not (currentWindow `member` ws || currentWindow == none)) $
hunk ./XMonad/Actions/UpdatePointer.hs 73
- -      let x = moveWithin rootx (wa_x wa) ((wa_x wa) + (wa_width  wa))
- -      let y = moveWithin rooty (wa_y wa) ((wa_y wa) + (wa_height wa))
- -      io $ warpPointer dpy none root 0 0 0 0 (fromIntegral x) (fromIntegral y)
+      let x = moveWithin (fi rootx) (rect_x rect) (fi (rect_x rect) + fi (rect_width  rect))
+          y = moveWithin (fi rooty) (rect_y rect) (fi (rect_y rect) + fi (rect_height rect))
+      io $ warpPointer dpy none root 0 0 0 0 x y
hunk ./XMonad/Actions/UpdatePointer.hs 77
- -      io $ warpPointer dpy none w 0 0 0 0
- -           (fraction h (wa_width wa)) (fraction v (wa_height wa))
+      io $ warpPointer dpy none root 0 0 0 0
+           (rect_x rect + fraction h (rect_width rect))
+           (rect_y rect + fraction v (rect_height rect))
hunk ./XMonad/Actions/UpdatePointer.hs 82
- -moveWithin :: Integral a => a -> a -> a -> a
- -moveWithin current lower upper =
- -    if current < lower
+windowAttributesToRectangle :: WindowAttributes -> Rectangle
+windowAttributesToRectangle wa = Rectangle (fi (wa_x wa))     (fi (wa_y wa))
+                                           (fi (wa_width wa)) (fi (wa_height wa))
+moveWithin :: Ord a => a -> a -> a -> a
+moveWithin now lower upper =
+    if now < lower
hunk ./XMonad/Actions/UpdatePointer.hs 89
- -    else if current > upper
+    else if now > upper
hunk ./XMonad/Actions/UpdatePointer.hs 91
- -         else current
+         else now
+
+pointWithin :: Position -> Position -> Rectangle -> Bool
+pointWithin x y r = x >= rect_x r &&
+		    x <  rect_x r + fi (rect_width r) &&
+		    y >= rect_y r &&
+		    y <  rect_y r + fi (rect_height r)
+
+fi :: (Num b, Integral a) => a -> b
+fi = fromIntegral 
hunk ./XMonad/Actions/UpdatePointer.hs 102
- --- Test that a point resides within a region. 
- --- This belongs somewhere more generally accessible than this module.
- -pointWithinRegion :: Integral a => a -> a -> a -> a -> a -> a -> Bool
- -pointWithinRegion px py rx ry rw rh =
- -    within px rx (rx + rw) && within py ry (ry + rh)
- -    where within x left right = x >= left && x <= right
}

Context:

[Merge emptyLayoutMod into redoLayout
Joachim Breitner <mail@joachim-breitner.de>**20081005190220
 This removes the emptyLayoutMod method from the LayoutModifier class, and
 change the Stack parameter to redoLayout to a Maybe Stack one. It also changes
 all affected code. This should should be a refactoring without any change in
 program behaviour.
] 
[SmartBorders even for empty layouts
Joachim Breitner <mail@joachim-breitner.de>**20081005184426
 Fixes: http://code.google.com/p/xmonad/issues/detail?id=223
] 
[Paste.hs: improve haddocks
gwern0@gmail.com**20080927150158] 
[Paste.hs: fix haddock
gwern0@gmail.com**20080927145238] 
[minor explanatory comment
daniel@wagner-home.com**20081003015919] 
[XMonad.Layout.HintedGrid: add GridRatio (--no-test because of haddock breakage)
Lukas Mai <l.mai@web.de>**20080930141715] 
[XMonad.Util.Font: UTF8 -> USE_UTF8
Lukas Mai <l.mai@web.de>**20080930140056] 
[Paste.hs: implement noModMask suggestion
gwern0@gmail.com**20080926232056] 
[fix a divide by zero error in Grid
daniel@wagner-home.com**20080926204148] 
[-DUTF8 flag with -DUSE_UTF8
gwern0@gmail.com**20080921154014] 
[XSelection.hs: use CPP to compile against utf8-string
gwern0@gmail.com**20080920151615] 
[add XMonad.Config.Azerty
Devin Mullins <me@twifkak.com>**20080924044946] 
[flip GridRatio to match convention (x/y)
Devin Mullins <me@twifkak.com>**20080922033354] 
[let Grid have a configurable aspect ratio goal
daniel@wagner-home.com**20080922010950] 
[Paste.hs: +warning about ASCII limitations
gwern0@gmail.com**20080921155038] 
[Paste.hs: shorten comment lines to under 80 columns per sjanssen
gwern0@gmail.com**20080921154950] 
[Forgot to enable historyFilter :(
Spencer Janssen <spencerjanssen@gmail.com>**20080921094254] 
[Prompt: add configurable history filters
Spencer Janssen <spencerjanssen@gmail.com>**20080921093453] 
[Update my config to use 'statusBar'
Spencer Janssen <spencerjanssen@gmail.com>**20080921063513] 
[Rename pasteKey functions to sendKey
Spencer Janssen <spencerjanssen@gmail.com>**20080921062016] 
[DynamicLog: doc fixes
Spencer Janssen <spencerjanssen@gmail.com>**20080921061314] 
[Move XMonad.Util.XPaste to XMonad.Util.Paste
Spencer Janssen <spencerjanssen@gmail.com>**20080921060947] 
[Depend on X11 >= 1.4.3
Spencer Janssen <spencerjanssen@gmail.com>**20080921055456] 
[statusBar now supplies the action to toggle struts
Spencer Janssen <spencerjanssen@gmail.com>**20080918013858] 
[cleanup - use currentTag
Devin Mullins <me@twifkak.com>**20080921011159] 
[XPaste.hs: improve author info
gwern0@gmail.com**20080920152342] 
[+XMonad.Util.XPaste: a module for pasting strings to windows
gwern0@gmail.com**20080920152106] 
[UrgencyHook bug fix: cleanupUrgents should clean up reminders, too
Devin Mullins <me@twifkak.com>**20080920062117] 
[Sketch of XMonad.Config.Monad
Spencer Janssen <spencerjanssen@gmail.com>**20080917081838] 
[raiseMaster
seanmce33@gmail.com**20080912184830] 
[Add missing space between dzen command and flags
Daniel Neri <daniel.neri@sigicom.com>**20080915131009] 
[Big DynamicLog refactor.  Added statusBar, improved compositionality for dzen and xmobar
Spencer Janssen <spencerjanssen@gmail.com>**20080913205931
 Compatibility notes:
     - dzen type change
     - xmobar type change
     - dynamicLogDzen removed
     - dynamicLogXmobar removed
] 
[Take maintainership of XMonad.Prompt
Spencer Janssen <spencerjanssen@gmail.com>**20080911230442] 
[Overhaul Prompt to use a zipper for history navigation.  Fixes issue #216
Spencer Janssen <spencerjanssen@gmail.com>**20080911225940] 
[Use the new completion on tab setting
Spencer Janssen <spencerjanssen@gmail.com>**20080911085940] 
[Only start to show the completion window with more than one match
Joachim Breitner <mail@joachim-breitner.de>**20080908110129] 
[XPrompt: Add showCompletionOnTab option
Joachim Breitner <mail@joachim-breitner.de>**20080908105758
 This patch partially implements
 http://code.google.com/p/xmonad/issues/detail?id=215
 It adds a XPConfig option that, if enabled, hides the completion window
 until the user presses Tab once. Default behaviour is preserved.
 TODO: If Tab causes a unique completion, continue to hide the completion
 window.
] 
[XMonad.Actions.Plane.planeKeys: function to make easier to configure
Marco T��lio Gontijo e Silva <marcot@riseup.net>**20080714153601] 
[XMonad.Actions.Plane: removed unneeded hiding
Marco T��lio Gontijo e Silva <marcot@riseup.net>**20080714152631] 
[Improvements in documentation
Marco T��lio Gontijo e Silva <marcot@riseup.net>**20080709002425] 
[Fix haddock typos in XMonad.Config.{Desktop,Gnome,Kde}
Spencer Janssen <spencerjanssen@gmail.com>**20080911040808] 
[add clearUrgents for your keys
Devin Mullins <me@twifkak.com>**20080909055425] 
[add reminder functionality to UrgencyHook
Devin Mullins <me@twifkak.com>**20080824200548
 I'm considering rewriting remindWhen and suppressWhen as UrgencyHookModifiers, so to speak. Bleh.
] 
[TAG 0.8
Spencer Janssen <spencerjanssen@gmail.com>**20080905195420] 
Patch bundle hash:
e26915ae158431e9b277a970ca699359fcbd7fff
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEARECAAYFAkjrHscACgkQ9ijrk0dDIGyWhwCfSB/bbUUc9ZK1wpkB9lyolRQ0
XYcAnRK9VS0aoK5xhwBnkLWaKbLg1sle
=/2Xf
-----END PGP SIGNATURE-----
