* Added a XMonad.Util.Image module to manipulate simple images
and show them into an X drawable
* Added the possibility of using image buttons instead of plain
text buttons into the title bar
* Added a XMonad.Layout.ImageButtonDecoration as an example of
how to use the image buttons
In order to enable user to write custom `decorationMouseFocusHook' and
`decorationMouseDragHook' hooks we need to provide him with means to
lookup original window by its decoration.
Module Decoration has internal function `lookFor' for exactly the same
purpose. I exported it under a slightly different name and without
exposing internals of DecorationState.
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.
- fix a bug reported by Roman Cheplyaka: when decorate returned
Nothing the window was never going to be created, even if decorate
was reporting a Just Rectangle in the next run. Quite a deep issue,
still visible only with TabbedDecoration at the present time.
- remove decorateFirst (decorate has enough information to decide
whether a window is the first one or not, am I right, David?)
- some point free.
With this patch Decoration will first generate a rectangle and only if
there is a rectangle available a window will be created.
This makes the Decoration state a bit more difficult to process, but
should reduce resource consumption.
This patch includes several changes, which are strictly related and
cannot be recorded separately:
- remove Decoraion.isDecoartion and introduce Decoration.isInStack
(with the related change to LayoutHints)
- in Decoration introduce useful utilities: isVisible, isInvisible,
isWithin and lookFor'
- MouseResize: - invisible inputOnly windows will not be created;
- fix a bug in the read instance which caused a failure
in the state deserialization.
- since mouse resize is not related to decoration, I removed the code
from here. Mouse resize will be handled by a separated layout
modifier (in a separated module)
- now also stacked decoration will be removed (I separated insert_dwr
from remove_stacked)
- moved decoEventHook to decorationEventHook
- added decorationMouseFocusHook, decorationMouseDragHook,
decorationMouseResizeHook methods
- added a handleMouseFocusDrag to focus and drag a window (which makes
it possible to focus *and* drag unfocused windows too
Note that this patch doesn't work with
Thu Dec 27 03:03:56 EST 2007 Spencer Janssen <sjanssen@cse.unl.edu>
* Broadcast button events to all layouts, fix for issue #111
but this isn't a regression, since button events have never worked with
tabbed and this change.