
New patches:

[simplify code in StackSet.
David Roundy <droundy@darcs.net>**20070814010422] 
<
> {
hunk ./StackSet.hs 229
 
 view :: (Eq a, Eq s, Eq i) => i -> StackSet i a s sd -> StackSet i a s sd
 view i s
-    | not (elem i $ map tag $ workspaces s)
+    | not (i `tagMember` s)
       || i == tag (workspace (current s)) = s  -- out of bounds or current
 
     | Just x <- L.find ((i==).tag.workspace) (visible s)
}

Context:

[trailing whitespace only
Don Stewart <dons@cse.unsw.edu.au>**20070805072716] 
[added workspaces to hs-boot (needed by XMonadContrib.Commands and possibly other modules)
Andrea Rossato <andrea.rossato@unibz.it>**20070728131756] 
[QuickCheck filter preserves order
Karsten Schoelzel <kuser@gmx.de>**20070728184534] 
[Bugfix: reordering when filtering out the last window on a workspace
Karsten Schoelzel <kuser@gmx.de>**20070728132507
 
 Say you have three windows A B C* on a workspace with * marking the focus.
 If you close C or move it to another workspace, the resulting order will be B* A,
 thus reordering the other windows, defying the comment of filter.
] 
[shift: use guards instead of if
Spencer Janssen <sjanssen@cse.unl.edu>**20070724152340] 
[Remove unnecessary Integral constraints
Spencer Janssen <sjanssen@cse.unl.edu>**20070724152257] 
[make delete work when window is in multiple workspaces.
David Roundy <droundy@darcs.net>**20070724142045] 
[Remove redundant 'n >= 0' check from shift.  (from David Roundy's 'simplify shift, removing unneeded check.' patch)
Spencer Janssen <sjanssen@cse.unl.edu>**20070724145927] 
[Cleanup of shift code
Michael G. Sloan <mgsloan@gmail.com>**20070722205337] 
[use $HOME in examples
Don Stewart <dons@cse.unsw.edu.au>**20070719063348] 
[Tweak dmenu binding
Peter De Wachter <pdewacht@gmail.com>**20070717190722
 Add an "eval", so quotes and environment variables get evaluated
 according to sh rules.
] 
[restore focus to currently focused window after "float" (closes #32)
Jason Creighton <jcreigh@gmail.com>**20070710042631] 
[Operations.screenWorkspace: return Nothing when the screen does not exist
Spencer Janssen <sjanssen@cse.unl.edu>**20070707223842] 
[Operations.rescreen: screen indexes start at zero
Spencer Janssen <sjanssen@cse.unl.edu>**20070707223334] 
[Note and workaround bugs in Operations.float
Spencer Janssen <sjanssen@cse.unl.edu>**20070705195213] 
[refresh after starting
Spencer Janssen <sjanssen@cse.unl.edu>**20070630050346] 
[UPGRADE X11-Extras!  Manage iconified windows
Spencer Janssen <sjanssen@cse.unl.edu>**20070630021026] 
[Move screen details into StackSet
Spencer Janssen <sjanssen@cse.unl.edu>**20070629213917] 
[Change a window's workspace when dragging across screens (closes #30)
Jason Creighton <jcreigh@gmail.com>**20070628025023] 
[comment for (dubious?) integrate'
Don Stewart <dons@cse.unsw.edu.au>**20070626052431] 
[add 2 properties to state where focus goes on delete of focused window
Don Stewart <dons@cse.unsw.edu.au>**20070626040907] 
[fix empty case in 'filter', and note differences in semantics wrt. focus to 'delete'
Don Stewart <dons@cse.unsw.edu.au>**20070626035741] 
[clean up 'StackSet.filter' for style
Don Stewart <dons@cse.unsw.edu.au>**20070626033202] 
[broadcast unidentified events.
David Roundy <droundy@darcs.net>**20070623214125
 This change is independent of the doLayout change I just sent in, but fixes
 the problem that change introduces in Decoration, by ensuring that all
 Layouts get redraw events.  I think this is the correct behavior.
] 
[support self-modifying layouts.
David Roundy <droundy@darcs.net>**20070623201447] 
[minor tweaks, ideas from joachim.fasting@
Don Stewart <dons@cse.unsw.edu.au>**20070621033613] 
[only perform mouse events on managed windows. closes #28
Don Stewart <dons@cse.unsw.edu.au>**20070621011700] 
[Update Layout documentation
Spencer Janssen <sjanssen@cse.unl.edu>**20070620150858] 
[-Wall police
Spencer Janssen <sjanssen@cse.unl.edu>**20070620150823] 
[Stack windows in the order they are returned by doLayout
Spencer Janssen <sjanssen@cse.unl.edu>**20070620150419] 
[remove out of date `(Included with GHC)' text in README
Don Stewart <dons@cse.unsw.edu.au>**20070620060430] 
[make Layouts able to layout whatever they like.
David Roundy <droundy@darcs.net>**20070619150816] 
[float fixed size windows
Peter De Wachter <pdewacht@gmail.com>**20070618214657] 
[Remove all references to 'exec'
Spencer Janssen <sjanssen@cse.unl.edu>**20070618201532] 
[-Wall police, and turn on -fno-warn-orphans
Don Stewart <dons@cse.unsw.edu.au>**20070617052322] 
[make workspace tag not need to be a Num.
David Roundy <droundy@darcs.net>**20070614140709
 This change also removes the barely used 'size' field, and replaces
 it with a tagMember predicate.  The idea is to move towards the ability
 to make the workspace tag be a String, which by default might be "1".."9",
 but could also be customized to be something meaningful to the user.
] 
[Fix float stacking
Spencer Janssen <sjanssen@cse.unl.edu>**20070614213412] 
[Remove 'temporary work around' in 'windows'
Spencer Janssen <sjanssen@cse.unl.edu>**20070614211450] 
[haddock tuning for StackSet.hs
Andrea Rossato <andrea.rossato@unibz.it>**20070614064511
 with this patch the documentation of StackSet.hs will have a nice TOC
] 
[move initColor to Operations and only store the Pixel value of colors
Jason Creighton <jcreigh@gmail.com>**20070613234501
 Moving initColor to Operations allows it to be used by extensions.
 
 The Pixel component of the color is the only thing we need, so it's simpler
 just to deal with that.
] 
[haddick fine tuning
Andrea Rossato <andrea.rossato@unibz.it>**20070613185902] 
[Indentation
Spencer Janssen <sjanssen@cse.unl.edu>**20070613043018] 
[prevent keyboard focus from getting lost in some cases
Jason Creighton <jcreigh@gmail.com>**20070613025350] 
[resolve conflict in Operations.
David Roundy <droundy@darcs.net>**20070612170625] 
[add catchX to catch exceptions.
David Roundy <droundy@darcs.net>**20070612154253] 
[make focus, up and down complete functions.
David Roundy <droundy@darcs.net>**20070612150555
 This is a rerun of my change to make (Stack a) never be empty.  Gives
 us more type-safety.
] 
[add differentiate function to StackSet to go [a] -> Stack a.
David Roundy <droundy@darcs.net>**20070612132853] 
[Make 'view' a total function
Spencer Janssen <sjanssen@cse.unl.edu>**20070612143248] 
[fmt
Don Stewart <dons@cse.unsw.edu.au>**20070612134938] 
[-Wall police
Stefan O'Rear <stefanor@cox.net>**20070612060546] 
[Use a more descriptive name for the layout reversal message
Stefan O'Rear <stefanor@cox.net>**20070612055859] 
[Use broadcastMessage in windows and switchLayout, should improve Xinerama for tabbed and make xmonad robust in the presence of state-altering unlayout hooks
Stefan O'Rear <stefanor@cox.net>**20070612055510] 
[Add a broadcastMessage function, which sends to all visible workspaces without refreshing. (+6 loc)
Stefan O'Rear <stefanor@cox.net>**20070612055339] 
[TODO for scan
Spencer Janssen <sjanssen@cse.unl.edu>**20070611214217] 
[Set withdrawn state after calling windows
Spencer Janssen <sjanssen@cse.unl.edu>**20070611213327] 
[Remove obsolete 'layout' function
Spencer Janssen <sjanssen@cse.unl.edu>**20070611203622] 
[-Wall police
Spencer Janssen <sjanssen@cse.unl.edu>**20070611202007] 
[Comment only
Spencer Janssen <sjanssen@cse.unl.edu>**20070611195827] 
[Hide windows that are not supposed to be visible
Spencer Janssen <sjanssen@cse.unl.edu>**20070611191809] 
[-Wall police
Spencer Janssen <sjanssen@cse.unl.edu>**20070611185708] 
[API CHANGE: Give doLayout a Stack rather than a flattened list
Spencer Janssen <sjanssen@cse.unl.edu>**20070611182629] 
[-Wall police
Spencer Janssen <sjanssen@cse.unl.edu>**20070611180123] 
[Add StackSet.filter
Spencer Janssen <sjanssen@cse.unl.edu>**20070611165154] 
[Use catchIO in 'restart'
Spencer Janssen <sjanssen@cse.unl.edu>**20070611161152] 
[Rename safeIO to catchIO
Spencer Janssen <sjanssen@cse.unl.edu>**20070611160608] 
[add safeIO which catches and logs exceptions.
David Roundy <droundy@darcs.net>**20070611153650] 
[Ensure windows get at least 1 pixel for width/height
Spencer Janssen <sjanssen@cse.unl.edu>**20070611061930] 
[Restrict the master/slave ratio to [0, 1]
Spencer Janssen <sjanssen@cse.unl.edu>**20070611053230] 
[comment only
Jason Creighton <jcreigh@gmail.com>**20070611020249] 
[a few modifications to event-sending to make Tabbed layout work.
David Roundy <droundy@darcs.net>**20070610153836] 
[send message when "windows" is called.
David Roundy <droundy@darcs.net>**20070610013531] 
[implement Spencer's decoration suggestion.
David Roundy <droundy@darcs.net>**20070610012237] 
[haddock compatibility
Andrea Rossato <andrea.rossato@unibz.it>**20070610123746] 
[Move state logging into Config.hs, via logHook :: X ()
Don Stewart <dons@cse.unsw.edu.au>**20070610061932] 
[polish serialisation code (-7 lines)
Don Stewart <dons@cse.unsw.edu.au>**20070610045551] 
[cut incorrect comment.
David Roundy <droundy@darcs.net>**20070609173447] 
[doLayout cleanup and commented exception-handling.
David Roundy <droundy@darcs.net>**20070609145036] 
[Give refresh sole responsibility for establishing window properties (-3 loc)
Stefan O'Rear <stefanor@cox.net>*-20070609185835] 
[Give refresh sole responsibility for establishing window properties (-3 loc)
Stefan O'Rear <stefanor@cox.net>**20070609185835] 
[HEADS UP: (logging format change). use a custom pretty printer, for an easier format to parse, than 'show' produces
Don Stewart <dons@cse.unsw.edu.au>**20070609131716] 
[Add notes on using X11-extras from darcs
Don Stewart <dons@cse.unsw.edu.au>**20070609025045] 
[Fix unmap handling
Spencer Janssen <sjanssen@cse.unl.edu>**20070606214006
 According to the ICCCM, clients should send a synthetic unmap event when they
 initiate an unmap.  The old code waited for these synthetic unmaps to unmanage
 windows.  However, certain 'obsolete' clients do not send synthetic unmaps
 (notably xpdf's find dialog).  These windows entered a zombified state: xmonad
 does not manage them, yet they are still mapped and raised on screen.
 
 The new algorithm (derived from wmii):
  - track windows that are mapped on screen
  - track the number of expected unmap events for each window, increment every
    time 'hide' is called on a window that is not mapped.
  - decrement the expected unmap counter on each unmap event
  - treat an unmap event as genuine (ie. unmap the window) when:
     - the event is synthetic (per ICCCM)
     - OR there are no expected unmap events for this window
 
] 
[dead import
Don Stewart <dons@cse.unsw.edu.au>**20070606025226] 
[move extraModifiers/cleanMask to Operations.hs
Jason Creighton <jcreigh@gmail.com>**20070606005056
 so XMonadContrib can use them
] 
[temporary workaround for delete/focus issue in fullscreen mode
Don Stewart <dons@cse.unsw.edu.au>**20070606024938] 
[whitespace
Don Stewart <dons@cse.unsw.edu.au>**20070606024857] 
[simplify code
Don Stewart <dons@cse.unsw.edu.au>**20070606004603] 
[mention why StackSet needs -fglasgow-exts (for deriving Typeable)
Don Stewart <dons@cse.unsw.edu.au>**20070605092659] 
[comments only
Don Stewart <dons@cse.unsw.edu.au>**20070605091803] 
[clean size hint code
Don Stewart <dons@cse.unsw.edu.au>**20070605091354] 
[Enable logging of state changes to stdout
Don Stewart <dons@cse.unsw.edu.au>**20070605083735] 
[remove accidental logging of events
Don Stewart <dons@cse.unsw.edu.au>**20070605081452] 
[Fix lost eventNotifyMask bug
Don Stewart <dons@cse.unsw.edu.au>**20070605043040
 
 When resuming, we were (implicitly) relying on 'scan' to find all
 windows, and reset their event masks and WM_STATE. When we moved to
 Iconfified hidden workspaces, 'scan' would only find and reset states on 
 the current workspace.
 
 The result being that hidden workspace windows no longer received
 enterNotify events.
 
 Fix this by traversing the StackSet serialised during a restart, setting
 the intial X states for each window, whether visible or hidden.
 
] 
[whitespace only
Don Stewart <dons@cse.unsw.edu.au>**20070605000723] 
[Comment only
Spencer Janssen <sjanssen@cse.unl.edu>**20070604211956] 
[Wibble.
Spencer Janssen <sjanssen@cse.unl.edu>**20070604211816] 
[-Wall police
Spencer Janssen <sjanssen@cse.unl.edu>**20070604211531] 
[apply size hints to floating windows
Peter De Wachter <pdewacht@gmail.com>**20070604192943] 
[size hints infrastructure
Peter De Wachter <pdewacht@gmail.com>**20070604192753] 
[Delete stale comment
Spencer Janssen <sjanssen@cse.unl.edu>**20070604204617] 
[Comment only
Spencer Janssen <sjanssen@cse.unl.edu>**20070604203659] 
[Use 'windows' in 'focus'
Spencer Janssen <sjanssen@cse.unl.edu>**20070604201639] 
[realign guard
l.mai@web.de**20070604182045] 
[swapUp/Down are also mirrored
Spencer Janssen <sjanssen@cse.unl.edu>**20070604183535] 
[Remove redundant cases in swapUp/Down
Spencer Janssen <sjanssen@cse.unl.edu>**20070604183344] 
[focusUp/Down are the same, in reversed order
Spencer Janssen <sjanssen@cse.unl.edu>**20070604183143] 
[Simplify focusUp/Down
Spencer Janssen <sjanssen@cse.unl.edu>**20070604182228] 
[Integral implies Eq
Spencer Janssen <sjanssen@cse.unl.edu>**20070604180745] 
[Comment typo.
Spencer Janssen <sjanssen@cse.unl.edu>**20070604180554] 
[Dump state at launch (commented for now)
Spencer Janssen <sjanssen@cse.unl.edu>**20070604162450] 
[Small clean up
Spencer Janssen <sjanssen@cse.unl.edu>**20070604064418] 
[Merge windows and refresh
Spencer Janssen <sjanssen@cse.unl.edu>**20070604063657] 
[Use the new integrate function
Spencer Janssen <sjanssen@cse.unl.edu>**20070604062653] 
[Add integrate
Spencer Janssen <sjanssen@cse.unl.edu>**20070604062501] 
[Delete stale comments
Spencer Janssen <sjanssen@cse.unl.edu>**20070604061719] 
[Remove inaccurate warnings about 'hide'
Spencer Janssen <sjanssen@cse.unl.edu>**20070604060611] 
[base >= 2.0 means we can use forM_
Spencer Janssen <sjanssen@cse.unl.edu>**20070604050914] 
[Remove no-longer-needed 'dimensions' state (-5 loc)
Stefan O'Rear <stefanor@cox.net>**20070604044715] 
[Set WM_STATE, iconify invisible windows (+9 loc)
Stefan O'Rear <stefanor@cox.net>**20070604042343
 Note that this breaks compatibility with certain programs described as
 "obsolete" in the ICCCM (1994).  See the command above the UnmapEvent handler
 for details.
] 
[clean up Main.hs slightly
Don Stewart <dons@cse.unsw.edu.au>**20070604035637] 
[whitespace
Don Stewart <dons@cse.unsw.edu.au>**20070604015532] 
[-Wall
Don Stewart <dons@cse.unsw.edu.au>**20070604014630] 
[do not cache atom values within Xmonad, instead let Xlib worry about caching (a documented feature)
Stefan O'Rear <stefanor@cox.net>**20070604013938] 
[Honor configure requests from unmanaged windows
Spencer Janssen <sjanssen@cse.unl.edu>**20070603234730] 
[-Wall police
Spencer Janssen <sjanssen@cse.unl.edu>**20070603212055] 
[Correctly handle resize requests (-12 +22)
Stefan O'Rear <stefanor@cox.net>**20070603203153
 Xmonad now implements resize requests in a consistent manner.
 
 * If the window is FLOATING, we implement the program's request, and
   correctly update the StackSet; so it will keep the new size.  This
   should work correctly even for non-current windows.
 
 * Otherwise, we ignore the request.  As per ICCCM, we send a fake
   ConfigureNotify containing the new (unchanged) geometry.  This is
   perfectly ICCCM compliant, and if it breaks your client, it's your
   own fault.
 
 This patch requires setConfigureEvent, which is added to X11-extras by
 a patch approximately contemporaneous with this one.
] 
[comments only
Don Stewart <dons@cse.unsw.edu.au>**20070603071556] 
[Polish core layout code. Lifts limitation on nmaster > 1. it may be 0 now
Don Stewart <dons@cse.unsw.edu.au>**20070603064306] 
[heads up: polish config.hs. moves tiling-local values into lexical scope. removes `wide' as an explicit mode (it's `mirror tall')
Don Stewart <dons@cse.unsw.edu.au>**20070603054740] 
[set build-depends base>=2.0 so people can't miss the missing Read instance issue
Don Stewart <dons@cse.unsw.edu.au>**20070603032319] 
[Fix out-of-date comment in Config.hs.
Chris Mears <chris@cmears.id.au>**20070602114312] 
[only grab button{1,2,3} for click-to-focus (scrollwheel shouldn't focus)
Jason Creighton <jcreigh@gmail.com>**20070602052605] 
[make mouse bindings configurable
Jason Creighton <jcreigh@gmail.com>**20070602040647] 
[commented out implementation state logging. if someone has a client, we can enable this
Don Stewart <dons@cse.unsw.edu.au>**20070601085626] 
[ignore numlock/capslock on mouse bindings
Jason Creighton <jcreigh@gmail.com>**20070601015137] 
[now we handle transients properly, and restack windows, refresh from focus is ok
Don Stewart <dons@cse.unsw.edu.au>**20070601022329] 
[Rename withWorkspace to withWindowSet.
glasser@mit.edu**20070601001325] 
[Revert accidental change to border color
Spencer Janssen <sjanssen@cse.unl.edu>**20070531145509] 
[comments on why fullscreen tiling doesn't work with `implicit' floating
Don Stewart <dons@cse.unsw.edu.au>**20070531090537] 
[clean up mouse code a bit
Don Stewart <dons@cse.unsw.edu.au>**20070531085308] 
[first shot at a floating layer
Jason Creighton <jcreigh@gmail.com>**20070531044733
 
 This is a first attempting at a floating layer:
 
 mod-button1: move window
 mod-button2: swapMaster
 mod-button3: resize window
 
 mod-t: make floating window tiled again
 
 Moving or resizing a window automatically makes it floating.
 
 Known issues:
 
 Hard to manage stacking order. You can promote a window to move it to the top,
 (which you can do with mod-button2) but it should be easier than that.
 
 Moving a window by dragging it to a different Xinerama screen does not move it
 to that workspace.
 
 Code is ugly.
] 
[remove LOC cap (but still print count after tests)
Jason Creighton <jcreigh@gmail.com>**20070531043417] 
[TAG 0.2
Spencer Janssen <sjanssen@cse.unl.edu>**20070531010004] 
Patch bundle hash:
fc8cae6726585f60035d80fec561be5e73e887f2
