[sawfish] */ChangeLog.pre-1.5.0: removed old changelog files



commit e8c1ca609aace3fd7f243c0ce987fbd3164624cb
Author: chrisb <zanghar freenet de>
Date:   Wed May 6 18:47:49 2009 +0200

    */ChangeLog.pre-1.5.0: removed old changelog files
---
 ChangeLog                            |    2 +
 lisp/ChangeLog.pre-1.5.0             | 6814 ----------------------------------
 lisp/sawfish/gtk/ChangeLog.pre-1.5.0 |  200 -
 lisp/sawfish/ui/ChangeLog.pre-1.5.0  |  568 ---
 man/news.texi                        |    2 +
 po/ChangeLog.pre-1.5.0               |  323 --
 scripts/ChangeLog.pre-1.5.0          |  139 -
 src/ChangeLog.pre-1.5.0              | 3778 -------------------
 8 files changed, 4 insertions(+), 11822 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index da120a9..03e240c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
 2009-05-06  Christopher Bratusek <zanghar freenet de>
 	* sawfish.spec.in: don't re-define %{_host} [Ritz]
 
+	* */ChangeLog.pre-1.5.0: remove old ChangeLog files
+
 2009-05-05  Christopher Bratusek <zanghar freenet de>
 	* lisp/sawfish/wm/util/window-outline.jl: some fixups for the draft animator [Teika]
 
diff --git a/lisp/ChangeLog.pre-1.5.0 b/lisp/ChangeLog.pre-1.5.0
deleted file mode 100644
index 3482613..0000000
--- a/lisp/ChangeLog.pre-1.5.0
+++ /dev/null
@@ -1,6814 +0,0 @@
-2008-08-04  Janek Kozicki <cosurgi gmail com>
-	* this file is deprecated now. From now on all changes are in ../Changelog
-
-2005-06-26  Philip Langdale <philipl mail utexas edu>
-
-	* sawfish/wm/state/wm-spec.jl (init): Add a
-	configure-notify-hook to detect changes to the size of the root
-	window, which implies a screen resolution change, and call
-	update-workspace-hints
-
-2005-02-06  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/menus.jl (popup-menu): synchronize with the server
-	after ungrabbing, just to be sure, instead of flushing
-	(suggested by Michal Maru¹ka <mmc maruska dyndns org>)
-
-2004-03-20  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/util/prompt.jl: added motion and editing commands
-	to list of exported bindings (patch from Ewan Mellor)
-
-2004-01-05  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/ext/tooltips.jl (display-tooltip): fixed font
-	thing again
-
-2003-11-24  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/wm-spec.jl (wm-spec-below-depth): changed
-	from +2 to -2 (Patch from Aron Griffis <agriffis gentoo org>)
-
-2003-10-21  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/frames.jl, sawfish/wm/state/shading.jl: patch from
-	David Reid <dreid dreid ath cx> to fix support shading on new
-	window types
-
-2003-08-16  John Harper  <jsh unfactored org>
-
-	Integrated patches from Shun-ichi TAHARA <jado flowernet gr jp>:
-
-	* sawfish/wm/ext/tooltips.jl (display-tooltip): fixed how fonts
-	are included in the call to display-message
-
-2003-08-15  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/frames.jl (frame-type-fallback-alist): utility
-	should degrade to default not transient (so it has controls)
-	#111970
-
-	* sawfish/wm/session/init.jl (sm-get-window-prop): ignore
-	WM_CLIENT_LEADER property set to zero, may fix #98315
-
-2003-08-13  John Harper  <jsh unfactored org>
-
-	Integrated patches from Shun-ichi TAHARA <jado flowernet gr jp>:
-
-	* sawfish/wm/util/font.jl:
-
-	Pango fontname handler has a bug on some font name, for
-	example, "Nimbus Sans L". When set one of those fonts in
-	"appearance" menu of sawfish-ui, and call that menu again, then
-	the font name in dialog is reset to the default value of
-	"Sans". Pango font name needs comma after the font family name
-	if the last word of family name matches the style name (for
-	example, "L" in "Nimbus Sans L" matches "Light"). So if set
-	"Nimbus Sans L" with its size 12, sawfish holds the pango
-	fontname "Nimbus Sans L 12", but GTK+ font selector extract it
-	with the family name to be "Nimbus Sans", the style "L
-	(=Light)", the size "12". In this case, sawfish must have the
-	pango fontname as "Nimbus Sans L, 12".
-
-	When using xft-type fonts, cannot set the font with hyphens in
-	its name, for example, "Eras-Black". Xft font name separates
-	the font family name and font size by hyphen, so Xft font
-	loader cannot extract font name and size correctly. Xft
-	requires hyphens in the font family name escaped by backslash,
-	so sawfish must have the xft fontname as "Eras\-Black-12", not
-	"Eras-Black-12".
-
-	When using xlfd-type fonts, selecting "medium" or "r" style (in
-	XLFD description) are sometime void, because the descripiton of
-	"-*-" in XLFD often matches "-bold-" or "-i-". Sawfish must
-	have xlfd font name with its weight or slant description to be
-	set explicitly; like "-medium-" or "-r-", not "-*-".
-
-	* sawfish/wm/gnome/integration.jl: don't use the module that
-	reads GNOME menus, it only handles the old style menus. Also,
-	remove the "Programs" entry from the root menu
-
-	* sawfish/wm/ext/beos-window-menu.jl (window-suitable-p):
-	ignore desktop windows
-
-2003-06-29  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/wm-spec.jl: update a window's workspace
-	hints when its stickyness changes. #113599
-
-2003-04-02  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/workspace.jl (window-appears-in-workspace-p):
-	revert to 1.2 definition (but as a function, not a macro),
-	don't know why I added the bogus viewable check..?
-
-2003-03-26  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/workspace.jl: activating or creating a window
-	means we leave "show desktop" mode
-
-	* sawfish/wm/windows.jl (activate-window): call
-	activate-window-hook before returning
-
-	* sawfish/wm/workspace.jl (select-workspace*): don't forget to
-	show sticky windows when coming out of "show desktop" mode
-
-2003-03-25  John Harper  <jsh unfactored org>
-
-	* version 1.3
-
-2003-03-16  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/workspace.jl (show-desktop, hide-desktop,
-	showing-desktop-p): implement the "showing desktop" mode
-
-	* sawfish/wm/state/wm-spec.jl: implement _NET_SHOWING_DESKTOP
-	property
-
-2003-02-24  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/wm-spec.jl (init): set WM_NAME as
-	UTF8_STRING property, not STRING. Patch from Christian Krause
-	<chkr plauener de>
-
-2003-02-19  John Harper  <jsh unfactored org>
-
-	Added support for task-list-skip property. Adapted from a patch
-	sent to sawfish mailing list originally by Chris Boyle:
-
-	* sawfish/wm/state/wm-spec.jl: support SKIP_TASKBAR state
-
-	* sawfish/wm/state/ignored.jl (toggle-task-list-skip): new
-	function and command
-
-	* sawfish/wm/state/gnome.jl: support task-list-skip property
-	instead of ad hoc hint setting
-
-	* sawfish/wm/ext/match-window.jl: added task-list-skip property
-
-2003-02-06  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/commands/gnome.jl (gnome-logout): save-session got
-	renamed to gnome-session-save in gnome 2
-
-2003-02-03  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/gnome/menus.jl (gnome-share-directory): if the
-	method of finding the gnome share directory fails, default to
-	/usr/gnome
-
-2003-01-26  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/ext/window-history.jl (window-history-key):
-	changed formatting so that some compatibility is kept with old
-	keys (except for transient windows)
-
-2003-01-15  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/ext/workspace-grid.jl (num-workspace-rows):
-	removed libwnck workaround at request of Michael Toomin
-
-2003-01-14  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/ext/window-history.jl (window-history-key,
-	window-history-key-property): the variable may now be a list,
-	in which case the list of named properties is used as the key.
-	It now defaults to (WM_CLASS WM_WINDOW_ROLE)
-
-2003-01-12  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/placement.jl: applied patch from Steve Hill
-	<firefury sucs org> to make several placement modes use the
-	current-head, not the head of the placed window
-
-2002-11-13  John Harper  <jsh unfactored org>
-
-	Merged from HEAD:
-
-	* sawfish/wm/windows.jl (adjust-position-for-gravity/y): fixed
-	typo when accessing window-frame-offset. Fixes #98315
-
-2002-11-09  John Harper  <jsh unfactored org>
-
-	* version 1.2
-
-2002-11-08  John Harper  <jsh unfactored org>
-
-	Merged from HEAD:
-
-	* sawfish/wm/util/font.jl: handle XLFD fonts with no dashes,
-	e.g. like "fixed", also, be more intelligent when creating
-	Pango names
-
-2002-11-03  John Harper  <jsh unfactored org>
-
-	Merged these changes from HEAD:
-
-	* sawfish/wm/session/init.jl, sawfish/wm/session/load.jl
-	(sm-sloppy-id-matching): added this option to let me get some
-	level of session management from broken applications (xterm in
-	this case, which doesn't seem to set SM_CLIENT_ID by the time
-	it maps the window)
-
-	* sawfish/wm/util/font.jl (xlfd-description->face,
-	face->xlfd-description): the missing pieces to this module.
-
-	Also, handle the Xft abbreviated styles more correctly
-
-	* sawfish/wm/windows.jl (dock-window-depth): changed this
-	again, now to zero, the depth of normal windows
-
-2002-11-03  John Harper  <jsh unfactored org>
-
-	Merged these changes from HEAD:
-
-	* sawfish/wm/custom.jl: font [de]serializers now export (TYPE .
-	NAME), they accept both this and the old untyped form
-
-	* sawfish/wm/util/font.jl: new file, some functions for
-	representing font (face) names, and converting between Xft and
-	Pango representations of these names. Somewhat incomplete
-	(doesn't know how to map Pango widths to Xft yet)
-
-	2002-11-02  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/menus.jl: added some more accelerators
-	* sawfish/wm/workspace.jl (static-workspace-menus): added a few
-	accelerators (for #76286)
-
-2002-11-02  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/keymaps.jl (wm-modifier-value): shorter doc string
-
-2002-11-02  John Harper  <jsh unfactored org>
-
-	* more merging:
-
-	2002-11-02  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/gaol.jl: added get-font-typed, font-type-exists-p
-	and font-name functions
-
-	* sawfish/wm/windows.jl (dock-window-depth): changed to -3,
-	places the dock above the desktop, but below pretty much
-	everything else
-
-2002-10-20  John Harper  <jsh unfactored org>
-
-	* more merging:
-
-	2002-10-20  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/windows.jl (window-transient-p,
-	mark-window-as-transient): new functions. window-transient-p
-	used to be in C code
-
-	* sawfish/wm/state/wm-spec.jl: _TYPE_DIALOG now marks the
-	window as transients of the root window, this means that
-	windows with this type pick up all facets of transient window
-	behaviour, not just their frame type. (E.g., it stops
-	_TYPE_DIALOG windows being placed like application windows)
-
-	* sawfish/wm/frames.jl: import sawfish.wm.windows, not
-	sawfish.wm.windows.subrs, to get window-transient-p
-
-	2002-10-19  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/wm-spec.jl (set-window-hints): handle
-	windows not on the current desktop (they may have recently
-	changed workspaces). Fixes #95158
-
-	2002-10-18  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/wm-spec.jl (client-message-handler):
-	half-assed implementation of _MOVERESIZE_SIZE_KEYBOARD and
-	_MOVE_KEYBOARD. Fixes #95772
-
-	2002-10-17  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/wm-spec.jl: support some 1.1 features:
-	_NET_WM_STATE_BELOW, _NET_WM_STATE_ABOVE, _NET_WM_TYPE_UTILITY,
-	_NET_WM_TYPE_SPLASH, _NET_WM_TYPE_MENU, _NET_WM_TYPE_TOOLBAR.
-	(Last two are actually 1.0)
-
-	* sawfish/wm/frames.jl (frame-type-fallback-alist): added more
-	types: utility, toolbar, menu, splash
-
-	* sawfish/wm/windows.jl (mark-window-as-desktop,
-	mark-window-as-dock): set more properties, including window
-	depth and type
-
-	* sawfish/wm/stacking.jl: exported window-depth function
-
-	2002-10-06  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/workspace.jl: don't add ``iconified'' as a
-	workspace-local property, it's global by nature. Fixes #94530
-
-	2002-10-03  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/misc.jl (get-x-text-property,
-	set-x-text-property): these functions now written in lisp so
-	that they use the property cache
-
-2002-09-30  John Harper  <jsh unfactored org>
-
-	* merged more changes from HEAD:
-
-	2002-09-29    <jsh unfactored org>
-
-	* sawfish/wm/state/configure.jl (configure-request-handler): fixed
-	bug of not checking for locked dimensions before overwriting the
-	dims variable. This fixes #88788
-
-	* sawfish/wm/state/wm-spec.jl (_NET_WM_STATE_FULLSCREEN): fixed
-	stupid bug I recently introduced stopping windows putting
-	themselves into fullscreen mode
-
-	2002-09-28  John Harper  <jsh unfactored org>
-
-	Work to fix #83431:
-
-	* sawfish/wm/state/configure.jl (configure-request-handler):
-	handle nil x or y components of `position' request.
-
-	* sawfish/wm/windows.jl (adjust-position-for-gravity/x,
-	adjust-position-for-gravity/y): new functions, factored out of
-	adjust-position-for-gravity, which is now defined in terms of
-	these two
-
-	2002-09-26  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/commands/grow-pack.jl (bump-distance): patch from
-	Daniel Pfeiffer <occitan esperanto org> to fix bug "when two
-	windows have the same size in the direction perpendicular to
-	the pack"
-
-	2002-09-25  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/ext/match-window.jl (match-window): don't modify
-	the list returned by get-x-property, copy it first
-
-	2002-09-23  John Harper  <jsh unfactored org>
-
-	Work to fix #81616 (fullscreen windows lose their original
-	frame type when loaded from saved session):
-
-	* sawfish/wm/state/maximize.jl: more work on session
-	management. Fullscreen windows shouldn't lose their unmaximized
-	'type property anymore
-
-	* sawfish/wm/frames.jl (push-window-type, pop-window-type):
-	mechanism for setting a temporary window type (that doesn't get
-	saved in the session file)
-
-	* sawfish/wm/session/load.jl, sawfish/wm/session/init.jl
-	(sm-add-restored-properties, sm-restored-properties):
-	properties to restored but not save (i.e. assumes they're saved
-	by hand using the sm-window-save-functions hook)
-
-	2002-09-22  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/wm-spec.jl (wm-spec-maximize-handler): don't
-	mark the window as maximized when it's fullscreen, avoids
-	confusing the restart handler. Also, some other cleanup of the
-	fullscreen code
-
-	* sawfish/wm/state/maximize.jl (after-add-window): check for
-	queued-fullscreen-maximize property
-
-	* sawfish/wm/state/maximize.jl: added a function to
-	sm-window-save-functions to save the queued-foo-maximize
-	properties into the session file, not the actual properties.
-	Makes restart process cleaner
-
-	2002-09-22  John Harper  <jsh unfactored org>
-
-	Work to (partially) support _NET_WORKAREA property, for #90291:
-
-	* sawfish/wm/util/workarea.jl (workarea-changed-hook): new
-	hook, emitted whenever the set of struts changes
-
-	(calculate-workarea-from-struts): new function, calculates the
-	workarea solely from struts
-
-	* sawfish/wm/state/wm-spec.jl (update-workspace-hints): set
-	_NET_WORKAREA to the workarea as defined by all "strut"
-	properties. This isn't quite the same as sawfish's native idea
-	of "workarea", but it's not possible to set that value on the
-	root, since it's a function of each window (i.e. each window
-	may have a different workarea)
-
-	2002-08-18  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/ext/edge-flip.jl (edge-flip-for-edge): use
-	workspace-grid module in workspace mode. Patch from Michael
-	Toomim <toomim cs berkeley edu>
-
-	* sawfish/wm/ext/workspace-grid.jl (send-to-workspace-right):
-	added magic autoload comments
-
-	2002-08-18  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/ext/workspace-grid.jl: new module from Michael
-	Toomim <toomim cs berkeley edu> to interpret the
-	_NET_DESKTOP_LAYOUT wm-spec hints and provide two dimensional
-	workspace commands
-
-	2002-08-03  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/windows.jl (dock-window-properties): fix typo.
-	Patch from Greg Morris <gmorris pscs org>
-
-	2002-07-23  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/maximize.jl (window-unmaximized-position):
-	patch from Claudio Bley <bley cs uni-magdeburg de> to fix typo
-
-	2002-07-01  John Harper  <jsh unfactored org>
-
-	* Makefile.in: invoke sawfish script directly when compiling
-
-	2002-06-30  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/placement/smart.jl (sp-padding): defaults to zero
-
-2002-06-28  John Harper  <jsh unfactored org>
-
-	* version 1.1
-
-2002-06-28  John Harper  <jsh unfactored org>
-
-	* more merging:
-
-	2002-06-17  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/util/display-window.jl
-	(display-window-without-focusing): patch from merlin to recover
-	"lost" windows
-
-2002-05-29  John Harper  <jsh unfactored org>
-
-	* more merging:
-
-	2002-05-28  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/commands/move-resize.jl (motion): when displaying
-	logical size, use (or base 0) not 1 to get the correct result.
-	Patch from merlin <merlin merlin org>
-
-	2002-05-26  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/placement/stagger.jl: respects workarea now. Fixes
-	#74307
-
-	2002-05-24  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/wm-spec.jl (client-message-handler): don't
-	select the new desktop when moving window after _NET_WM_DESKTOP
-
-	* sawfish/wm/workspace.jl
-	(send-window-to-workspace-from-first): added optional SELECT
-	param
-
-2002-05-21  John Harper  <jsh unfactored org>
-
-	* More merging from HEAD:
-
-	2002-05-13  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/gnome/integration.jl: admit defeat and go back to
-	loading xterm module all the time
-
-	2002-05-11  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/gnome/integration.jl (gnome-use-capplet-changed):
-	removed duplicate eval-when-compile
-
-	2002-05-10  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/frames.jl (cursor-for-frame-part): require
-	maximize module to fix #81441
-
-	2002-05-06  John Harper  <jsh unfactored org>
-
-	* sawfish/wm.jl: patch from Christophe Fergeau
-	<teuf users sourceforge net> to call bindtextdomaincodeset
-	function. Modified to only call it if it exists
-
-2002-05-06  John Harper  <jsh unfactored org>
-
-	* More merging from HEAD:
-
-	2002-05-03  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/gnome/integration.jl (gnome-use-capplet-changed):
-	require xterm module when compiling
-
-	2002-04-27  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/transient.jl (transient-map-window,
-	transient-unmap-window): use set-input-focus not
-	activate-window (which raises the window..)
-
-	2002-04-25  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/session/init.jl (sm-init): make the
-	CurrentDirectory a valid filename (e.g., no "~" characters)
-
-	2002-04-23  John Harper  <jsh unfactored org>
-
-	Work to support _NET_WM_STRUT. Fixes #66608 (not tested):
-
-	* sawfish/wm/util/workarea.jl: new module, moved the workarea
-	calculations here from the maximize module. Added support for
-	"struts"
-
-	* sawfish/wm/state/wm-spec.jl (honour-client-state): call
-	define-window-strut if _NET_WM_STRUT is set
-
-	* sawfish/wm/windows.jl (dock-window-properties): new variable,
-	list of properties to set on dock windows
-
-	2002-04-23  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/menus.jl (window-ops-menu): removed viewport
-	operations. Fixes #73122
-
-	2002-04-22  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/wm-spec.jl (set-ws-hints):
-	_NET_DESKTOP_NAMES property is in UTF8_STRING encoding. Adapted
-	from Gregory Merchan <merchan phys lsu edu>
-
-	* sawfish/wm/util/window-order.jl (on-viewport-change): only
-	don't focus most recent in enter-exit mode. Fixes #67007
-
-	* sawfish/wm/workspace.jl, sawfish/wm/viewport.jl,
-	sawfish/wm/state/wm-spec.jl: Fixed #74904, support
-	_NET_NUMBER_OF_DESKTOPS and _NET_DESKTOP_GEOMETRY client
-	messages
-
-2002-04-21  John Harper  <jsh unfactored org>
-
-	* Merged changes from HEAD:
-
-	2002-04-21  John Harper  <jsh unfactored org>
-
-	More reorganization. Removed all mentions of viewports and
-	viewport commands from the configurator, simplified workspace
-	configuration, etc..
-
-	* sawfish/wm/workspace.jl, sawfish/wm/viewport.jl,
-	sawfish/wm/placement.jl, sawfish/wm/autoload.jl: 
-
-	* sawfish/wm/commands/xterm.jl,
-	sawfish/wm/commands/viewport-linear.jl,
-	sawfish/wm/commands/viewport-extras.jl,
-	sawfish/wm/commands/move-resize.jl,
-	sawfish/wm/commands/groups.jl: 
-
-	* sawfish/wm/ext/shade-hover.jl,
-	sawfish/wm/ext/hide-dialogs.jl, sawfish/wm/ext/edge-flip.jl,
-	sawfish/wm/ext/auto-raise.jl: 
-
-	* sawfish/wm/gnome/menus.jl, sawfish/wm/gnome/integration.jl: 
-
-	* sawfish/wm/state/iconify.jl: 
-
-	* sawfish/wm/util/compat.jl, sawfish/wm/util/autoloader.jl: 
-
-	2002-04-20  John Harper  <jsh unfactored org>
-
-	More slash and burning. Removed user levels (a failed
-	experiment). Removed more options, etc
-
-	* sawfish/wm/workspace.jl, sawfish/wm/windows.jl,
-	sawfish/wm/stacking.jl, sawfish/wm/placement.jl,
-	sawfish/wm/keymaps.jl, sawfish/wm/frames.jl,
-	sawfish/wm/focus.jl, sawfish/wm/custom.jl,
-	sawfish/wm/commands.jl, sawfish/wm/autoload.jl: 
-
-	* sawfish/wm/commands/xterm.jl, sawfish/wm/commands/x-cycle.jl,
-	sawfish/wm/commands/slide-window.jl,
-	sawfish/wm/commands/size-window.jl,
-	sawfish/wm/commands/raise-commands.jl,
-	sawfish/wm/commands/move-resize.jl,
-	sawfish/wm/commands/groups.jl, sawfish/wm/commands/describe.jl:
-
-	* sawfish/wm/ext/window-history.jl, sawfish/wm/ext/tooltips.jl,
-	sawfish/wm/ext/shade-hover.jl, sawfish/wm/ext/error-handler.jl,
-	sawfish/wm/ext/edge-flip.jl, sawfish/wm/ext/auto-raise.jl,
-	sawfish/wm/ext/audio-events.jl, sawfish/wm/ext/3d-hack.jl: 
-
-	* sawfish/wm/placement/top-left.jl,
-	sawfish/wm/placement/smart.jl: 
-
-	* sawfish/wm/state/transient.jl, sawfish/wm/state/iconify.jl: 
-
-	* sawfish/wm/util/play-audio.jl, sawfish/wm/util/nokogiri.jl,
-	sawfish/wm/util/display-window.jl, sawfish/wm/util/compat.jl: 
-
-	2002-04-20  John Harper  <jsh unfactored org>
-
-	Removed a lot of dead wood. Deleted some options altogether,
-	made a lot more into standard variables (i.e. they can still be
-	set using setq, but don't appear in the configurator). Also got
-	rid of all warp-pointer type options, this is now part of the
-	focus mode -- click to focus doesn't warp, focus follows mouse
-	does
-
-	Still to do: remove user levels, more pruning of move-resize
-	and workspace groups
-
-	* sawfish/wm/workspace.jl, sawfish/wm/windows.jl,
-	sawfish/wm/viewport.jl, sawfish/wm/stacking.jl,
-	sawfish/wm/menus.jl, sawfish/wm/keymaps.jl,
-	sawfish/wm/frames.jl, sawfish/wm/focus.jl,
-	sawfish/wm/defaults.jl, sawfish/wm/custom.jl,
-	sawfish/wm/custom-defaults.jl, sawfish/wm/autoload.jl: 
-
-	* sawfish/wm/commands/xterm.jl, sawfish/wm/commands/x-cycle.jl,
-	sawfish/wm/commands/move-resize.jl,
-	sawfish/wm/commands/grow-pack.jl: 
-
-	* sawfish/wm/ext/window-history.jl, sawfish/wm/ext/tooltips.jl,
-	sawfish/wm/ext/error-handler.jl, sawfish/wm/ext/edge-flip.jl,
-	sawfish/wm/ext/beos-window-menu.jl,
-	sawfish/wm/ext/auto-raise.jl, sawfish/wm/ext/audio-events.jl: 
-
-	* sawfish/wm/state/transient.jl, sawfish/wm/state/shading.jl,
-	sawfish/wm/state/maximize.jl, sawfish/wm/state/iconify.jl,
-	sawfish/wm/state/configure.jl: 
-
-	* sawfish/wm/util/stacking.jl, sawfish/wm/util/nokogiri.jl,
-	sawfish/wm/util/groups.jl, sawfish/wm/util/display-window.jl,
-	sawfish/wm/util/compat.jl: 
-
-	2002-04-14  Kai Großjohann  <Kai Grossjohann CS Uni-Dortmund DE>
-
-	* sawfish/wm/commands/grow-pack.jl (grow-pack): New group, parent
-	is `misc'.
-	(grow-is-maximize, pack-warp-pointer, grow-pack-bump-obscured)
-	(grow-pack-bump-other-depth, grow-pack-bump-ignored): Use the new
-	group for the customization options.
-	Suggestion from John Harper.
-
-	2002-04-11  Kai Großjohann  <Kai Grossjohann CS Uni-Dortmund DE>
-
-	* sawfish/wm/commands/grow-pack.jl (grow-pack-bump-ignored): New
-	user option.  Suggestion from Markus Holmberg.
-	(bump-distance): Optionally ignore ignored windows.
-
-	2002-04-18  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/ext/match-window.jl: accept #f for false in
-	options. Adapted from merlin <merlin merlin org>
-
-	* sawfish/wm/ext/edge-flip.jl (edge-flip-warp-pointer): made
-	the description a bit clearer (hopefully). #77668
-
-	* sawfish/wm/windows.jl (mark-window-as-dock): set
-	fixed-position property. Should fix #78582
-
-	2002-04-10  John Harper  <jsh unfactored org>
-
-	Fixed #70071:
-
-	* sawfish/wm/windows.jl (mark-window-as-dock, dock-window-p):
-	new functions
-	* sawfish/wm/state/gnome.jl (gnome-window-class-hacks): call
-	mark-window-as-dock
-	* sawfish/wm/state/wm-spec.jl (wm-class-hacks, DOCK type): call
-	mark-window-as-dock
-	* sawfish/wm/commands/x-cycle.jl (cycle-dock,
-	cycle-dock-backwards): new commands. Also made it so that the
-	selection functions have to call window-in-cycle-p themselves
-	* sawfish/wm/windows.jl (window-in-cycle-p): new keyword arg
-	IGNORE-CYCLE-skip
-
-	2002-04-02  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/wm-spec.jl (client-message-handler): before
-	doing move-resize requests, fetch and save a timestamp so that
-	grabs don't fail. Fixes #77041
-
-	2002-03-24  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/animation/outline.jl: add error handling around
-	calls to the window-outline drawing code. Ungrab the server on
-	an error. Band-aid for #75984
-
-2002-04-12  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/commands/help.jl, sawfish/wm/commands/gnome.jl:
-	use "gnome-help" program instead of "gnome-help-browser".
-	Should fix #77343
-
-2002-04-02  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/gnome/integration.jl (gnome-use-capplet): removed
-	this option; marked it obsolete
-
-2002-03-19  John Harper  <jsh unfactored org>
-
-	* Merged changes from HEAD:
-
-	2002-03-09  John Harper  <jsh pixelslut com>
-
-	* sawfish/wm/state/wm-spec.jl (supported-atoms): updated to
-	include all atoms we recognize, not just top-level things
-
-	* sawfish/wm/state/maximize.jl (window-maximized-fullscreen-p,
-	maximize-window-fullscreen, maximize-window-fullscreen-toggle):
-	support a new type of maximization, called `fullscreen'. In
-	this mode the window's borders are removed and it fills the
-	entire area of the head (even if it's size hints would dictate
-	otherwise)
-
-	* sawfish/wm/state/wm-spec.jl: support _NET_WM_STATE_FULLSCREEN
-
-	(the above two changes fix #73970)
-
-	* sawfish/wm/util/ping.jl: actually tested this code (Gtk+ 2
-	supports the protocol). Fixed some bugs. Don't use X server
-	timestamps as the unique id anymore (since they may not be
-	unique), use a unique sequence number instead
-
-	(ping-window): TIMEOUT-MSECS is now optional and defaults to
-	one second
-
-	2002-03-03  John Harper  <jsh pixelslut com>
-
-	* sawfish/wm/placement/off-center.jl (workarea-for): replaced
-	by a single call to maximize-find-workarea
-
-	* sawfish/wm/placement.jl: added `#:head-fallback t' in some
-	calls to maximize-find-workarea. Should fix #73297
-
-	* sawfish/wm/state/maximize.jl (maximize-find-workarea):
-	removed extra #!key token
-
-	2002-02-22  John Harper  <jsh pixelslut com>
-
-	* sawfish/wm/viewport.jl (viewport-load-state): add the current
-	viewport offsets into any set window geometries
-
-	* sawfish/wm/state/wm-spec.jl (set-ws-hints): fixed using
-	screen-width instead of screen-height (noticed by
-	tal00r ecs soton ac uk)
-
-	2002-02-21  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/stacking.jl (stacking-add-window): don't put
-	windows below the default depth just because their parent is.
-	Fixes #67978
-
-	2002-02-17  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/commands/move-resize.jl (move-resize-map): added
-	any-off2 and any-off3 bindings. Fixes #67134
-
-	2001-12-02  Daniel Pfeiffer  <occitan esperanto org>
-
-	* grow-pack.jl: This fixes some bugs:
-
-	- If a window was less than width-inc or height-inc away from the
-	next window, that next window was also ignored for packing.
-	- The variable grow-window-repeat did not serve it's purpose.
-	Instead it influenced whether width-inc or height-inc were
-	respected, which is an error (or at least a hacker option :-), no
-	matter what the variable is called.
-	- Typo preventing vertical growing to behave as maximize (maximzed).
-	- The underlying functions of the commands were not exported,
-	making them inaccessible to lisp and their documentation strings
-	somewhat useless.
-
-	One esthetical bug remains: depending on focus-mode neither
-	frame-draw/state-mutex nor focus-ignore-pointer-events prevent two
-	flickering frame highlights.  When moving, focus leaves the window
-	if it moves beyond pointer, when warping it goes back.  Any ideas?
-
-	And adds a few features:
-
-	- Optionally separate layers/depths (as discussed on the
-	mailing-list some time ago).  I found this to also have to handle
-	avoided windows (panel may be on its own depth).
-	<http://lists.eazel.com/pipermail/sawfish/2001-August/001634.html>
-	- Optionally ignore totally obscured windows.
-	- Optionally grow or pack by given amount of pixels.  To be useful
-	requires a prefix setter.  Until that makes it into sawfish 1.0.2,
-	get a patch.
-	http://dapfy.bei.t-online.de/sawfish/move-viewport/
-	- Optionally maximize in one direction.
-	- Do i18n on menu.  (Eight new strings to be done by translators.)
-
-	Despite added functionality the new code is both smaller and faster.
-
-2001-11-17  John Harper  <jsh unfactored org>
-
-	* Makefile.in: just call the libtool-created sawfish script
-	directly
-
-2001-12-17  Federico Mena Quintero  <federico ximian com>
-
-	Fixes GNOME bug #67138.  However, the rest of smart.jl seems to be
-	using screen-width and screen-height all over the place, so this
-	may not be complete yet.
-
-	* sawfish/wm/placement/top-left.jl (workarea-for): Removed.
-	(place-window-top-left): Use maximize-find-workarea with the
-	head-fallback parameter instead of workarea-for.
-
-	* sawfish/wm/state/maximize.jl (maximize-find-workarea): Added a
-	key parameter head-fallback.  If non-nil and the workarea turns
-	out to be empty, it will fall back to a rectangle that represents
-	the head area.
-
-	* sawfish/wm/placement/smart.jl (sp-do-placement): Use the
-	workarea width and height instead of the screen width and height.
-
-2001-12-14  John Harper  <jsh unfactored org>
-
-	[Committed by Federico Mena Quintero <federico ximian com> on
-	behalf of J.S.H.]
-
-	* sawfish/wm/placement.jl (place-window-randomly): fixed bug of
-	possibly adding the head offset twice.
-
-2001-12-11  Federico Mena Quintero  <federico ximian com>
-
-	Fixes GNOME bug #66761.
-
-	* sawfish/wm/state/gnome.jl (gnome-set-hint): Moved over from
-	commands/gnome.jl; these should really be here.
-	(gnome-clear-hint): Likewise.
-	(gnome-toggle-hint): Likewise.
-
-	* sawfish/wm/state/gnome.jl (gnome-hint-set-p): New exported
-	function; queries whether a property in _WIN_HINTS is set.
-
-	* sawfish/wm/state/gnome.jl: Added a predicate to the
-	`(add-window-menu-toggle "In GNOME task list' so that we can show
-	the menu item as a proper toggle.
-
-2001-12-09  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/wm-spec.jl (set-window-hints): don't mark
-	the window as being sticky just because it's not swapped into
-	any workspace..
-
-2001-12-06  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/workspace.jl (select-workspace-interactively):
-	remove the interactive spec. Pointed out by Michal Maru¹ka
-	<mmc maruska dyndns org>
-
-2001-12-04  Federico Mena Quintero  <federico ximian com>
-
-	* sawfish/wm/viewport.jl
-	(move-window-to-viewport-and-move-viewport): Per JSH's suggestion,
-	use raise-window* instead of plain raise-window so that any
-	transients are raised if appropriate.
-
-2001-12-04  Federico Mena Quintero  <federico ximian com>
-
-	* sawfish/wm/viewport.jl
-	(move-window-to-viewport-and-move-viewport): New function that
-	generalizes move-window-left and friends.  Also raises the window
-	in its layer so that it doesn't appear occluded when flipping the
-	viewport.  Sticks/unsticks the window to avoid flashing, as well.
-	(move-window-left): Use move-window-to-viewport-and-move-viewport.
-	(move-window-right): Likewise.
-	(move-window-down): Likewise.
-	(move-window-up): Likewise.
-
-2001-12-04  Federico Mena Quintero  <federico ximian com>
-
-	* sawfish/wm/viewport.jl (set-viewport): Grab the server while we
-	move the windows.
-
-2001-12-02  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/state/wm-spec.jl: check that some values are
-	symbolp before calling get on them. Patch from Michal
-	Politowski <mpol charybda icm edu pl> via Christian Marillat
-	<marillat christian wanadoo fr>
-
-2001-10-27  John Harper  <jsh unfactored org>
-
-	Fixed the bug where `transients-above' and `layer' stacking
-	constraints can conflict and stop stacking working (gnome
-	bugzilla 48412):
-
-	* sawfish/wm/stacking.jl
-	(stacking-constraint:transients-above-parent,
-	stacking-constraint:transients-above-all): check the depth of
-	the windows being compared. Depth overrides the transient-of
-	stacking relation
-
-	(stacking-add-window): transient windows get the depth of their
-	highest parent window instead of the default of zero
-
-2001-10-14  John Harper  <jsh unfactored org>
-
-	* version 1.0.1
-
-2001-09-20  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/workspace.jl (select-workspace): fixed bug in last
-	change, don't keep the server grabbed for so long
-
-2001-09-19  John Harper  <jsh unfactored org>
-
-	Fixed bug of window flicker when switching workspaces:
-
-	* sawfish/wm/workspace.jl (select-workspace): don't remove all
-	windows not in the new space, then add all windows in the new
-	space. Instead add all windows in the new space in
-	top-to-bottom order, then remove unneeded windows
-	bottom-to-top. This always generates the minimum exposed area
-
-2001-09-17  John Harper  <jsh unfactored org>
-
-	* sawfish/wm/commands.jl (apply-command-keys): fixed type of
-	'dommand-doc instead of 'command-doc. Spotted by David Bustos
-	<bustos its caltech edu>
-
-2001-09-14  John Harper  <jsh pixelslut com>
-
-	* sawfish/wm.jl: when possible, disable error reporting on
-	stdio streams
-
-2001-09-13  John Harper  <jsh pixelslut com>
-
-	Fixed bug of nautilus desktop window covering panel:
-
-	* sawfish/wm/state/wm-spec.jl (desktop-layer, dock-layer): set
-	to -/+ 4 respectively, not -/+ 1(which are the actual values
-	used in the GNOME 1 spec)
-
-2001-09-02  John Harper  <jsh pixelslut com>
-
-	Fixed 6693 (restarting sawfish with a maximized window and the
-	gnome panel will make the maximized window too big):
-
-	* ~/src/sawfish/lisp/sawfish/wm/state/maximize.jl
-	(property-notify): don't install check-if-maximizable into the
-	add-window-hook immediately. Instead use
-	after-initialization-hook to run c-i-m over all windows, then
-	install it as before
-
-2001-08-31  John Harper  <jsh pixelslut com>
-
-	* ~/src/sawfish/lisp/sawfish/wm/util/stacking.jl
-	(maybe-raise-window, maybe-lower-window): when adding server
-	timestamp to the client message, subtract one from the actual
-	last seen timestamp. Done for same reason as in windows.c
-
-	* ~/src/sawfish/lisp/sawfish/wm/util/display-window.jl
-	(display-window-without-focusing): new (private) keyword
-	parameter WILL-REFOCUS. Pass this value along to
-	select-workspace
-
-	(display-window): pass WILL-REFOCUS as true when we'll be
-	focusing a window afterwards (helps avoid some race conditions)
-
-2001-08-24  John Harper  <jsh pixelslut com>
-
-	* sawfish/wm/menus.jl: ensure menu-process is nil after being
-	killed. Also, never try to kill it unless it's non-nil
-
-2001-08-23  John Harper  <jsh pixelslut com>
-
-	* sawfish/wm/commands.jl (no-operation): new command. Fixes
-	8463
-
-	* sawfish/wm/state/configure.jl (configure-request-handler):
-	don't allow the window to be moved or resized when it's
-	maximized. Fixes 8410
-
-	* sawfish/wm/state/maximize.jl (window-locked-vertically-p,
-	window-locked-horizontally-p): new functions
-
-	* sawfish/wm/placement.jl (place-window-randomly): removed
-	bogus middle cases from from x and y position calculations.
-	Fixes 8415
-
-	* sawfish/wm/ext/match-window.jl
-	(match-window-grab-x-property): take a symbol with the actual
-	name of the X property, not one of the strings in the
-	match-window-x-properties list
-
-Sat Aug 18 16:32:37 2001  Owen Taylor  <otaylor redhat com>
-
-	* sawfish/wm/windows.jl: Offset windows properly whose gravity
-	point is centered horizontally or vertically.
-
-2001-07-23  John Harper  <jsh pixelslut com>
-
-	* sawfish/wm/state/gnome.jl (gnome-event-proxyer): fixed bug
-	caused by Click1 events now printing as Click. This caused only
-	button-release events to be proxied
-
-2001-07-02  John Harper  <jsh pixelslut com>
-
-	* version 0.99
-
-2001-06-18  John Harper  <jsh pixelslut com>
-
-	* sawfish/wm/menus.jl (menu-program-stays-running): by popular
-	demand this now defaults to `t'
-
-	* sawfish/wm/windows.jl (focus-desktop): new command, focuses
-	the desktop window if one exists
-
-2001-06-04  John Harper  <jsh pixelslut com>
-
-	* sawfish/wm/commands/move-resize.jl (do-move-resize): move the
-	call to draw-window-outline to immediately before entering the
-	recursive event loop (avoids drawing and not erasing it on a
-	non-viable drag)
-
-2001-05-04  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/gnome.jl (gnome-event-proxyer): support
-	`OffN' events
-	* sawfish/wm/util/decode-events.jl: ditto
-
-	* sawfish/wm/keymaps.jl (title-keymap): bind
-	toggle-window-shaded to an X-Off2 binding instead of X-Click2
-
-2001-04-22  John Harper  <jsh eazel com>
-
-	Fixed bug 4250 (pointer can confuse focus follows mouse when
-	cycling):
-
-	* sawfish/wm/focus.jl (focus-ignore-pointer-events): new
-	variable. When true, pointer in/out events have no effect on
-	the input focus
-
-	* sawfish/wm/commands/x-cycle.jl (cycle-begin): while cycling
-	set focus-ignore-pointer-events to true. Don't restore it to
-	false until 100ms after the cycling finishes (so that any
-	pointer out events generated by, e.g., removing the message
-	window are ignored)
-
-2001-04-22  John Harper  <jsh eazel com>
-
-	* sawfish/wm/viewport.jl (set-viewport): rewrote the code that
-	changes viewports. It now tries to order the window moves in
-	such a way as to minimize redundant pointer in/out and expose
-	events. The ordering algorithm was suggested by Jan Kasprzak
-	<kas informatics muni cz> last September
-
-2001-04-20  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/gnome.jl (gnome-property-handler): monitor
-	_WIN_AREA as well as _WIN_WORKSPACE. This definitely
-	fundamentally flawed, but can be useful in some cases..
-
-	Extra i18n work. Adapted from a patch by Vlad Harchev
-	<hvv hippo ru>
-
-	* sawfish/wm.jl (i18n-defvar, i18n-define): new macros, expand
-	to a `defvar' or `define'. Just used to mark variables that
-	need special attention when extracting translatable strings
-
-	* sawfish/wm/ext/match-window.jl: import sawfish.wm instead of
-	a bunch of specific modules, so we get i18n-defvar. Then use it
-	when declaring match-window-x-properties and
-	match-window-properties
-
-2001-04-17  John Harper  <jsh eazel com>
-
-	* sawfish/wm/ext/beos-window-menu.jl (make-label): surround the
-	name in parentheses if the window is on a different viewport as
-	well as if it's on a different workspace
-
-2001-04-12  John Harper  <jsh eazel com>
-
-	* sawfish/wm/frames.jl (apply-frame-style,
-	apply-frame-style-and-save): new functions. These provide a
-	future-proof interface for programmatically selecting themes
-
-2001-04-11  John Harper  <jsh eazel com>
-
-	Committed some work-in-progress changes. The end goal is to
-	store customized keymaps as deltas from their default value.
-	That doesn't happen yet, but these changes will make it easier.
-
-	Work to record default values of all custom options:
-
-	* sawfish/wm/custom.jl (variable-default-value,
-	variable-declared-p): new functions
-
-	(custom-declare-variable): new keyword parameter DEFAULT-VALUE.
-
-	(defcustom): the expansion now passes the DEFAULT-VALUE to
-	custom-declare-variable
-
-	* sawfish/wm/keymaps.jl: Rewrote all keymap initializations to
-	use a single form instead of side-effecting the keymap after
-	it's created. This lets the default value be known
-
-	(custom-set-keymap): use an ugly hack to prevent the default
-	value being destructively modified
-
-
-	Added an extra deserialize/serialize pair when applying values
-	from the UI. This is so that the customize-set function can do
-	some kind of transformation at some point in the future..
-
-	* sawfish/wm/custom.jl (make-custom-form): now requires an
-	unserialized VALUE. It serializes it before creating the form
-
-	* sawfish/wm/util/nokogiri.jl (nokogiri-apply-changes):
-	deserialize the value from the UI before passing it to
-	customize-set
-
-
-	* sawfish/wm/util/keymap-diff.jl (diff-keymaps, patch-keymap):
-	new file. Experimental code for keymap abuse
-
-2001-04-11  John Harper  <jsh eazel com>
-
-	Fixed bug 8047 (SOLARIS: Setting Gnomecc Workspaces spin button
-	to decrease no of workspaces fails.):
-
-	* sawfish/wm/workspace.jl: set
-	{first,last}-interesting-workspace to nil when the workspace
-	configuration changes
-
-	this isn't a great fix, but imho it's better than the current
-	behaviour
-
-2001-04-08  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/transient.jl (transient-frame-type):
-	s/shaped/shaded/ to fix the bug where the decorate-transients
-	option doesn't work for shaded windows
-
-2001-04-05  John Harper  <jsh eazel com>
-
-	* sawfish/wm/ext/tooltips.jl (command-info): use the
-	`command-documentation' function to get doc strings, not the
-	`documentation' function (which no longer works)
-
-2001-04-02  John Harper  <jsh eazel com>
-
-	* sawfish/wm/ext/window-history.jl: added special save and
-	restore code for the `sticky' state (handles _both_ sticky
-	states)
-
-2001-03-24  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/maximize.jl (maximize-window,
-	maximize-find-workarea): some bug fixes for multi-headed
-	displays. Adapted from a patch by Florent Guillaume
-	<florent guillaume mail com>
-
-2001-03-20  John Harper  <jsh eazel com>
-
-	Fixed bug 6971 (cancelling resizing a maximized window loses
-	the maximimized status):
-
-	* sawfish/wm/commands/move-resize.jl (do-move-resize): when
-	calling after-move-hook or after-resize-hook pass a SUCCESSFUL
-	keyword arg, whose value is true if the move or resize was
-	successfully completed
-
-	* sawfish/wm/state/maximize.jl (maximize-discard-move,
-	maximize-discard-resize): these now have a SUCCESSFUL keyword
-	parameter, they only do the discarding if it's true
-
-2001-03-17  John Harper  <jsh eazel com>
-
-	* sawfish/wm/ext/tooltips.jl (tooltips-delay,
-	tooltips-timeout-delay): minimum allowed value is now one not
-	zero (zero timeouts don't work)
-
-2001-03-14  John Harper  <jsh eazel com>
-
-	* version 0.38
-
-2001-03-09  John Harper  <jsh eazel com>
-
-	* sawfish/wm/commands/grow-pack.jl: applied patch from Kai
-	Großjohann <Kai Grossjohann CS Uni-Dortmund DE>:
-
-	    `It makes growing work even for windows which have a
-	    height/width increment.
-
-	    With the old code, repeat-growing xterms didn't always work
-	    right, since the old code only added 1 to the height/width,
-	    and that was often not enough to overlap the next window
-	    edge.  Now I'm adding height/width increment, and
-	    preliminary testing indicates that this is working well.'
-
-2001-03-06  John Harper  <jsh eazel com>
-
-	* sawfish/wm/focus.jl (scan-windows-for-bugs): disabled the
-	code to beep and print warning messages if the click to focus
-	keymap gets lost
-
-	* sawfish/wm/state/gnome.jl (gnome-property-handler): fixed to
-	work better when the window is on multiple workspaces
-
-	* sawfish/wm/state/maximize.jl: don't add maximize-discard-move
-	to the after-move-hook any longer
-
-2001-02-28  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/gnome.jl (gnome-property-handler): new
-	function, added to property-notify-hook. Currently just watches
-	for _WIN_WORKSPACE changes, and responds by moving the window
-
-	* sawfish/wm/workspace.jl
-	(send-window-to-workspace-from-first): don't do any copying and
-	moving if the FROM and TO workspaces are the same
-
-	* sawfish/wm/commands/move-resize.jl (move-cursor-shape,
-	resize-cursor-shape): default to the value of the
-	default-cursor function
-
-	* sawfish/wm/frames.jl (cursor-for-frame-part): don't use a
-	special cursor in titles
-
-2001-02-24  John Harper  <jsh eazel com>
-
-	* sawfish/wm/commands.jl (command-sequence): define
-	`kill-client' command (using the x-kill-client function)
-
-	Fixed off-by-one error when placing windows flush with the
-	right or bottom of the screen
-
-	* sawfish/wm/placement/smart.jl (sp-make-grid): don't subtract
-	one from screen-width or screen-height
-	(sp-prune-points): allow (<= X RANGE) instead of (< X RANGE)
-
-2001-02-23  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/iconify.jl (window-sticky-p/workspace,
-	make-window-sticky/workspace, make-window-unsticky/workspace,
-	window-sticky-p/viewport, make-window-sticky/viewport,
-	make-window-unsticky/viewport): new functions, used to
-	implement the combined sticky functions. They're also exported
-
-	* sawfish/wm/state/wm-spec.jl: uses the new /workspace or
-	/viewport sticky functions throughout
-
-	Fixed typo of _NET_WM_STATE_MAXIMIZED_HORIZ instead of HORZ
-
-	Add update-client-list-hints to after-restacking-hook instead
-	of workspace-state-change-hook
-
-	(update-client-list-hints): added keyword arg
-	ONLY-STACKING-LIST; reverse the result of the stacking-order
-	function before storing it in the _NET_CLIENT_LIST_STACKING
-	property
-
-	(client-message-handler): use the display-window function to
-	implement the _NET_ACTIVE_WINDOW request. Added a
-	_NET_WM_DESKTOP handler - handles making the window sticky or
-	changing its workspace
-
-2001-02-22  John Harper  <jsh eazel com>
-
-	* sawfish/wm/placement.jl (place-window): don't try to place
-	windows with the fixed-position property
-
-2001-02-14  John Harper  <jsh eazel com>
-
-	* version 0.37.2
-
-	* sawfish/wm/commands/move-resize.jl (viable-move-resize-p):
-	doh! fixed this properly now, was using the wrong variable to
-	get the edge list
-
-	* version 0.37.1
-
-	* sawfish/wm/commands/move-resize.jl (viable-move-resize-p):
-	fixed stupid typo in `region' and `border' modes (using
-	direction instead of edge list)
-
-2001-02-13  John Harper  <jsh eazel com>
-
-	* version 0.37
-
-	* sawfish/wm/state/gnome.jl (gnome-window-class-hacks):
-	* sawfish/wm/state/wm-spec.jl (wm-class-hacks):
-	Look for `Panel/panel_window' instead of `Panel/panel'. This
-	may not work well immediately, but it will with the forthcoming
-	gnome-core release
-
-	* sawfish/wm/ext/window-history.jl: new command line option
-	`--window-history-file=FILE' to specify where to load and store
-	the history information
-
-	* sawfish/wm/user.jl (rc-files): new internal variable - the
-	list of rc files to try, currently ~/.sawfishrc, ~/.sawfish/rc
-	and ~/.sawmillrc
-
-2001-02-10  John Harper  <jsh eazel com>
-
-	* sawfish/wm/ext/match-window.jl
-	(match-window-grab-x-property): enclose grabbed regexp in
-	`^...$' so that it only matches the exact string
-
-2001-02-07  John Harper  <jsh eazel com>
-
-	* sawfish/wm/util/window-order.jl (on-viewport-change): only
-	call window-order-focus-most-recent if in click-to-focus mode,
-	not when not in enter-exit mode
-
-2001-02-06  John Harper  <jsh eazel com>
-
-	* sawfish/wm/ext/match-window.jl (match-window-x-properties):
-	added WM_WINDOW_ROLE to list of properties
-
-	* sawfish/wm/state/transient.jl (transient-unmap-window): in
-	sloppy focus mode avoid focusing on the desktop window just
-	because the pointer is over it
-
-2001-02-05  John Harper  <jsh eazel com>
-
-	* sawfish/wm/util/recolor-image.jl (make-lut): subtract
-	mid-point from 255 not 256. Pointed out by Simon Budig
-	<Simon Budig unix-ag org>
-
-2001-01-28  John Harper  <jsh eazel com>
-
-	Work to fix bug 5758 (session management doesn't work in `don't
-	automatically save' mode).
-
-	Most of the credit goes to Timo Korvola
-	<tkorvola e math helsinki fi> for working out what was wrong
-	and providing the initial implementation
-
-	* sawfish/wm/session/init.jl: lots of rewriting. The end result
-	is that we never overwrite session files when saving data.
-	Instead we use a unique prefix (the time in us in base 36) to
-	the client id. (This is how XSM is supposed to work)
-
-	* sawfish/wm/session/save.jl, sawfish/wm/session/load.jl
-	(save-session, load-session): these functions now accept a
-	filename argument instead of the client id
-
-	* sawfish/wm.jl: check for --sm-prefix option, and pass it to
-	sm-init when found
-
-2001-01-27  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/configure.jl
-	(configure-ignore-stacking-requests): new option. Controls
-	whether stacking requests from windows are honoured or not. The
-	window property `ignore-stacking-requests' has the same effect
-
-	[ adapted from Matt Tucker <tuck whistlingfish net> ]
-
-	* sawfish/wm/ext/match-window.jl (match-window-properties):
-	added ignore-stacking-requests to the `Other' section
-
-2001-01-25  John Harper  <jsh eazel com>
-
-	Fixed bug 5984 (locked-size-when-maximized is confusing):
-
-	* sawfish/wm/frames.jl (frame-part-classes): use calls to
-	define-frame-class to populate this alist
-
-	(cursor-for-frame-part): new function, creates functions to
-	return the correct cursor. Uses frame-part-movable-p to see
-	which cursor should be displayed
-
-	* sawfish/wm/state/maximize.jl (frame-part-movable-p): new
-	function
-
-	* sawfish/wm/state/maximize.jl (move-lock-when-maximized):
-	moved this option here (from sawfish.wm.commands.move-resize)
-
-	* sawfish/wm/commands/move-resize.jl
-	(delete-unmovable-directions, delete-unresizable-edges): new
-	functions
-
-	(viable-move-resize-p): new function, tests if it's worth
-	starting a move/resize (only if there's something that can be
-	moved or resized)
-
-2001-01-26  John Harper  <jsh eazel com>
-
-	* sawfish/wm/placement.jl (place-window-randomly): fixed bug
-	where windows could be left off-screen. Problem was due to
-	confusing right or bottom edges of the workarea with its width
-	or height
-
-2001-01-25  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/wm-spec.jl (init): the change to restore the
-	selected desktop on restart introduced a bug, so I've changed
-	it to not reselect the desktop until after the initialization
-	process has finished (using the after-initialization-hook)
-
-	* sawfish/wm/util/recolor-image.jl (make-image-recolorer*): new
-	function, can recolour multiple channels at once (uses a common
-	zero-channel, recolours based on whichever channel is non-zero
-	for each pixel)
-
-	(make-image-recolorer): now defined in terms of
-	make-image-recolorer*
-
-2001-01-23  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/wm-spec.jl (init): check for an old value of
-	_NET_CURRENT_DESKTOP before overwriting it. If set, switch to
-	that desktop. This fixes the annoying `desktop always reset to
-	zero on restart' bug
-
-2001-01-22  John Harper  <jsh eazel com>
-
-	* sawfish/wm/ext/auto-raise.jl (rw-on-focus, rw-out-focus):
-	reverted the test for (eq mode 'normal). (See 2000-11-02 entry
-	for reason.) This causes worse problems than it solves (e.g.
-	switch desktops, M-TAB to a new window, but the old window gets
-	raised)
-
-2001-01-20  John Harper  <jsh eazel com>
-
-	* version 0.36
-
-2001-01-19  John Harper  <jsh eazel com>
-
-	* sawfish/wm/user.jl (fallback-frame-style): changed this to
-	`Crux' theme
-
-	* sawfish/wm/frames.jl (frame-part-classes): added shade-button
-	frame part class
-	* sawfish/wm/keymaps.jl (shade-button-keymap): new keymap
-
-	* sawfish/wm/util/recolor-image.jl (make-image-recolorer): new
-	module, exports this function. A factory for creating functions
-	that recolour images based on a white -> <color> -> black
-	gradient. Abstracted this code out of the new `Crux' theme
-
-	* sawfish/wm/gaol.jl (fully-safe-features): added
-	sawfish.wm.util.recolor-image
-
-2001-01-18  John Harper  <jsh eazel com>
-
-	* sawfish/wm/ext/hide-dialogs.jl: new module, hide dialog
-	windows in groups that don't have the focus. Currently there's
-	no way to enable this except by loading it by hand..
-
-2001-01-15  John Harper  <jsh eazel com>
-
-	* sawfish/wm/util/gtkrc.jl (gtkrc-handle-client-msg): removed
-	leftover debugging output
-
-2001-01-08  John Harper  <jsh eazel com>
-
-	* sawfish/wm/util/gtkrc.jl (reload-gaol): new function, sets
-	all the variables that are loaded into the gaol (since they
-	don't update themselves automatically, doh!). Fixes bug 5505
-
-	* sawfish/wm/commands/groups.jl (delete-group): added special
-	case so that desktop windows don't get deleted
-
-2001-01-07  John Harper  <jsh eazel com>
-
-	* sawfish/wm/ext/audio-events.jl (audio-events-alist): change
-	"" doc string to nil (patch from Christian Marillat
-	<marillat christian wanadoo fr>)
-
-2001-01-06  John Harper  <jsh eazel com>
-
-	* sawfish/wm/commands/groups.jl (delete-group): new command
-
-	* sawfish/wm/keymaps.jl (close-button-keymap): bind
-	`delete-group' to `S-Button1-Off'
-
-2001-01-05  John Harper  <jsh eazel com>
-
-	* version 0.35
-
-2001-01-05  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/shading.jl (shading-add-window): don't need
-	to call shade-window, just set hide-client property when
-	necessary
-
-2001-01-04  John Harper  <jsh eazel com>
-
-	* sawfish/wm/workspace.jl: don't include hide-client in the
-	call to add-swapped-properties
-
-	* sawfish/wm/state/shading.jl (shading-after-swap-in): added to
-	the after-workspace-swap-in-hook, updates the hide-client
-	property to match the shaded property and reframes the window
-	if necessary
-
-	* sawfish/wm/swapper.jl (workspace-swap-in): before exiting,
-	run after-workspace-swap-in-hook with two args (W SPACE)
-
-	[ Last three changes fix bug 5179 (shaded state is fixed for
-	all workspaces) ]
-
-	* sawfish/wm/state/transient.jl (focus-windows-when-mapped):
-	defaults to t; changed doc string to reflect the earlier change
-	in semantics
-
-	* sawfish/wm/placement.jl (place-window-mode): set to
-	`top-left' by default now
-
-	* sawfish/wm/placement/top-left.jl (windows-around): ignore
-	windows that have yet to be placed
-
-	* sawfish/wm/focus.jl (focus-click): before exiting, reinstall
-	the click-to-focus-map if the window isn't actually focused
-
-2001-01-03  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/transient.jl (transient-map-window): altered
-	semantics of focus-windows-when-mapped option to only apply to
-	non-transient windows (or transient windows whose parent is the
-	root window)
-
-	* sawfish/wm/user.jl: load sawfish.wm.state.wm-spec by default
-	(instead of only if KDE2 is being used)
-
-2000-12-31  John Harper  <jsh eazel com>
-
-	* sawfish/wm/windows.jl (window-supports-wm-protocol-p): new
-	function, saves consing up a list just to call memq on it
-	(delete-window-safely): use the new function
-
-	* sawfish/wm/util/ping.jl (window-supports-ping-p): use
-	window-supports-wm-protocol-p
-
-	* sawfish/wm/util/stacking.jl (maybe-raise-window,
-	maybe-lower-window): new functions. These introduce two new
-	WM_PROTOCOLS: _SAWFISH_WM_RAISE_WINDOW and
-	_SAWFISH_WM_LOWER_WINDOW.
-
-	These are similar to WM_TAKE_FOCUS, in that if the window
-	supports the protocol, it's up to it whether or not it raises
-	(or lowers) the window in question. These functions should only
-	be used where the user hasn't explicitly requested the
-	restacking
-
-	An example usage is an application that doesn't want its window
-	to be raised due to a button-press event that initiates a drag
-	operation
-
-	* sawfish/wm/ext/auto-raise.jl, sawfish/wm/util/stacking.jl:
-	use the maybe-raise-window function instead of raise-window*
-
-2000-12-30  John Harper  <jsh eazel com>
-
-	* sawfish/wm/placement/off-center.jl: another new placement
-	mode. This one places windows in the centre of the screen.
-	However if doing so would fully cover another window, then try
-	another position roughly in the centre
-
-2000-12-22  John Harper  <jsh eazel com>
-
-	* sawfish/wm/placement/smart.jl (sp-cost-components): removed
-	the pointer and focus locality components by default
-
-	* sawfish/wm/placement/top-left.jl: new placement mode,
-	staggers from top-left, filling along the diagonal. Supports
-	resizing windows to fit, but this is currently disabled
-
-	* sawfish/wm/menus.jl (menus-include-shortcuts): this option
-	defaults to nil
-
-	* sawfish/wm/commands/grow-pack.jl (gp-avoid-windows): ignore
-	iconified windows
-
-2000-12-20  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/transient.jl (transient-of-p,
-	indirect-transient-of-p): added keyword arg ALLOW-ROOT which
-	enables the (= transient-for ROOT) checking code
-
-	(transient-map-window): pass `#:allow-root t' to transient-of-p
-
-	* sawfish/wm/placement.jl (place-window-centered-on-parent): if
-	no single known parent, check if the currently focused window
-	is in the same group as the window being placed. If so, take it
-	as the implicit parent while placing
-
-	* sawfish/wm/state/transient.jl (transient-of-p): disabled the
-	code that checks if (= transient-for ROOT), it causes havoc in
-	too many places
-
-2000-12-19  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/iconify.jl (iconify-window,
-	uniconify-window): support `group' and `transients'
-	[un]iconification modes better. Don't use a recursive method,
-	instead identify all the windows to be changed, then do
-	everything in one go. For `transients' mode, only change state
-	of shared transients if they [will] have no visible parents
-	left
-
-	* sawfish/wm/commands/groups.jl (iconify-group,
-	uniconify-group, iconify-transient-group,
-	uniconify-transient-group): use [un]iconify-window to implement
-	these (by temporarily binding the necessary special variables)
-
-	[ Last two changes fix #5252 ]
-
-	* sawfish/wm/util/keymap.jl (where-is,
-	make-memoizing-where-is): use substitute-wm-modifier to avoid
-	showing W- in results
-
-	* sawfish/wm/util/decode-events.jl (substitute-wm-modifier):
-	new function, given an event, replaces the W- bit by whatever
-	it's actually assigned to
-
-	* sawfish/wm/state/gnome.jl (gnome-client-message-handler):
-	handle a _WIN_HINTS client message type, format is similar to
-	_WIN_STATE message
-
-	* sawfish/wm/state/gnome.jl (gnome-window-class-hacks): removed
-	the hardcoding of the `avoid' property for the panel. (George
-	Lebl asked me to)
-
-2000-12-18  John Harper  <jsh eazel com>
-
-	* sawfish/wm/menus.jl (menus-include-shortcuts): new option,
-	when set, include `shortcut' attributes in created menu
-	descriptions. Adapted from Unai Uribarri <unaiur telecable es>
-
-	* sawfish/wm/util/keymap.jl (make-memoizing-where-is): new
-	function, when called repeatedly has better time complexity
-	than multiple calls to where-is (since it builds a temporary
-	hash table)
-
-2000-12-10  John Harper  <jsh eazel com>
-
-	* sawfish/wm/util/stacking.jl (raise-window*, lower-window*,
-	raise-lower-window*): added doc strings
-
-	* sawfish/wm/gaol.jl (safe-functions): added font-ascent and
-	font-descent
-
-2000-12-09  John Harper  <jsh eazel com>
-
-	* sawfish/wm/util/display-wininfo.jl (event-handler): removed
-	the code to fade iconified windows
-
-	* sawfish/wm/commands/x-cycle.jl (cycle-warp-pointer): this is
-	no longer in the `expert' user-level
-
-2000-12-08  John Harper  <jsh eazel com>
-
-	Random work to support KDE2 better:
-
-	* sawfish/wm/user.jl: if there's a property on the root window
-	matching `^_KDE_', load sawfish.wm.state.wm-spec module
-
-	* sawfish/wm/state/wm-spec.jl: bug-fixes and hacks to make KDE2
-	support a lot better
-
-	* sawfish/wm/state/transient.jl (indirect-transient-of-p): test
-	for windows that set WM_TRANSIENT_FOR to themselves! (broken
-	KDE apps)
-
-2000-12-06  John Harper  <jsh eazel com>
-
-	* sawfish/wm/user.jl: use safe-load when loading site-init and
-	rep-defaults files
-
-	* sawfish/wm/commands/viewport-extras.jl: new module, includes
-	some viewport navigation commands sent to the mailing list by
-	Dams Nadé <anvil amin unice fr>
-
-	* sawfish/wm/util/groups.jl (persistent-group-ids): use `nil'
-	instead of `""' to denote a null doc string
-	* sawfish/wm/workspace.jl (workspace-names): ditto
-
-	* sawfish/wm/state/iconify.jl (window-iconifiable-p): new
-	function, the old logic plus it checks for `never-iconify'
-	property
-
-	* sawfish/wm/state/maximize.jl (window-maximizable-p): check
-	for `never-maximize' property
-
-	* sawfish/wm/state/wm-spec.jl, sawfish/wm/state/gnome.jl: set
-	never-iconify and never-maximize properties of panel/gmc-icon
-	windows
-
-	* sawfish/wm/menus.jl (window-ops-menu): set `insensitive'
-	properties of iconify and maximize menus when appropriate
-
-2000-12-04  John Harper  <jsh eazel com>
-
-	* sawfish/wm/frames.jl (frame-style-directory): check if the
-	directory exists before returning the result. Fixes #4902
-
-	* version 0.34
-
-	* sawfish/wm/keymaps.jl (wm-modifier-value): moved to the
-	`novice' user-level
-
-2000-11-28  John Harper  <jsh eazel com>
-
-	* sawfish/wm/custom-defaults.jl: changed some bindings to use
-	`W-' modifier
-
-	* sawfish/wm/util/decode-events.jl (decode-modifier,
-	encode-modifier): new functions
-	(should-grab-button-event-p): groks the `W-' modifier
-
-	* sawfish/wm/ext/match-window.jl (match-window-properties):
-	removed ignore-when-cycling property (didn't I already do
-	this?)
-
-	* sawfish/wm/keymaps.jl: changed default bindings to use the
-	new `W-' modifier, the customizable `WM' modifier
-
-	* sawfish/wm/keymaps.jl (wm-modifier-value): new option. Has
-	type `modifier-list'. Added [de]serialization for this type
-
-	* sawfish/wm/customize.jl (customize-read-user-file): fixed for
-	new format of custom-default-file
-
-	* sawfish/wm/util/ping.jl (ping-window): fixed bug whereby
-	CALLBACK would get called twice if the ping is ponged before
-	the timer fires
-
-	* sawfish/wm/state/gnome.jl (gnome-window-class-hacks): broke
-	out the WM_CLASS based hacks for parts of the GNOME desktop.
-	Also made panel windows and gmc icons unplacable (otherwise, if
-	the ignore-program-position option is set the windows get
-	placed by the wm, even though they really shouldn't be)
-
-	* sawfish/wm/state/wm-spec.jl: added the unplacable panel hack
-	here also
-
-2000-11-27  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/wm-spec.jl: removed the evil hardcoded list
-	of properties in update-client-state by a `get' method in each
-	state function. Also added a PSEUDO keyword arg to
-	define-wm-spec-window-state for properties that should not be
-	set in the _NET_WM_STATE property
-
-	* sawfish/wm/ext/window-history.jl: save and restore
-	`maximized' state of windows. Fixes #4790
-
-	* sawfish/wm/ext/window-history.jl (window-history-apply): when
-	setting properties, check for `window-history-setter'
-	properties - a function to call to set the property
-
-	* sawfish/wm/ext/match-window.jl: added `maximized' pseudo
-	property. Fixes #4808
-
-	* sawfish/wm/util/display-wininfo.jl: new module, exports a
-	single function to display a message with some user-relevant
-	details of the window (currently icon and name)
-
-	* sawfish/wm/commands/x-cycle.jl (cycle-show-window-icons): new
-	option
-	(cycle-display-message): if cycle-show-window-icons is set,
-	use display-wininfo function
-	(remove-message): new function
-
-	The above two changes from a patch by Unai Uribarri
-	<unaiur telecable es>, with minor changes. Fixes #4265
-
-	* sawfish/wm/frames.jl, sawfish/wm/workspace.jl,
-	sawfish/wm/ext/audio-events.jl, sawfish/wm/util/groups.jl:
-	changed flags of some widgets
-
-	* sawfish/wm/swapper.jl, sawfish/wm/stacking.jl,
-	sawfish/wm/menus.jl, sawfish/wm/commands/x-cycle.jl,
-	sawfish/wm/ext/tooltips.jl, sawfish/wm/ext/match-window.jl,
-	sawfish/wm/ext/edge-flip.jl, sawfish/wm/gnome/match-window.jl,
-	sawfish/wm/placement/smart.jl, sawfish/wm/state/maximize.jl,
-	sawfish/wm/theming/make-theme.jl, sawfish/wm/util/gtkrc.jl:
-	Added some `(unused ...)' declarations to turn off some
-	meaningless warnings (needs a recent cvs librep for this to
-	actually work)
-
-2000-11-26  John Harper  <jsh eazel com>
-
-	* sawfish/wm/util/ping.jl: new module, implements the
-	_NET_WM_PING protocol of the new window manager spec. Exports
-	functions `window-supports-ping-p' and `ping-window'. (This
-	code is totally untested)
-
-	* sawfish/wm/state/wm-spec.jl: added code to monitor
-	_NET_WM_ICON_GEOMETRY; when present the `icon-position' window
-	property is set from its value. Fixes #4245
-
-2000-11-21  John Harper  <jsh eazel com>
-
-	* sawfish/wm/focus.jl: now that unfocusable windows don't
-	contain the click-to-focus keymap, use the state-change-hook to
-	be notified when the never-focus state changes
-
-	* sawfish/wm/workspace.jl, sawfish/wm/ext/audio-events.jl,
-	sawfish/wm/util/groups.jl: put titles of some list widgets into
-	the actual title of the list, not above the list widget
-
-	* sawfish/wm/ext/audio-events.jl (audio-events-alist): now in
-	`intermediate' user-level
-
-2000-11-20  John Harper  <jsh eazel com>
-
-	* sawfish/wm/stacking.jl (raise-window, lower-window,
-	stack-window-above, stack-window-below, restack-window,
-	window-on-top-p): use stacking-order instead of
-	stacked-mapping-order. Otherwise strange things can happen when
-	unmapped windows are present (e.g. fixes #4824 where raising a
-	nautilus window with (eq user-raise-type 'groups) also raises
-	the desktop window..)
-
-	* sawfish/wm/viewport.jl (move-window-to-current-viewport,
-	set-window-viewport): don't move sticky-viewport windows
-
-	* sawfish/wm/animation/outline.jl (make-outline-animator): new
-	exported function. Fixes #4816
-
-	* sawfish/wm/focus.jl: removed all code to support the
-	focus-click-through option on non-client windows (mfleming
-	convinced me it was a bad idea, and it fixes a hard bug)
-
-	* sawfish/wm/focus.jl (focus-within-click-event): new fluid,
-	set to t when calling a command from within the click-to-focus
-	event
-
-	* sawfish/wm/commands/raise-commands.jl (replay-pointer):
-	function to do the replaying, dependent on whether or not we're
-	in the click-to-focus event or not
-
-	* sawfish/wm/state/wm-spec.jl: support SKIP_PAGER state (linked
-	to the `window-list-skip' property)
-
-	(honour-client-state): set `no-history' property of panels
-
-	(honour-client-state): fixed typo of _NET_WM_WINDOW_STATE
-	instead of _NET_WM_STATE
-
-	(update-workspace-hints): for sticky windows, set
-	_NET_WM_DESKTOP to #xffffffff instead of deleting it
-
-	(define-wm-spec-window-state): records the names of all
-	registered states in `supported-states' variable
-	(supported-state-p): new function
-
-	(client-message-handler): deleted _NET_INSERT_DESKTOP and
-	_NET_DELETE_DESKTOP messages, they're not in the spec anymore?
-	Fixed paren bug in _NET_ACTIVE_WINDOW message handler
-
-2000-11-16  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/gnome.jl (gnome-honour-client-state): set
-	the `no-history' property of panel windows
-
-	* sawfish/wm/custom.jl: new defcustom option `:widget-flags'
-
-	* sawfish/wm/util/nokogiri.jl (nokogiri-report-slot): pass
-	widget-flags across
-
-	* sawfish/wm/workspace.jl, sawfish/wm/frames.jl,
-	sawfish/wm/ext/audio-events.jl, sawfish/wm/util/groups.jl:
-	marked some list options with `(expand framed)' flags
-
-	* sawfish/wm/state/mwm.jl (mwm-add-window): support the
-	min/max/close options of the mwm function hints
-
-	* sawfish/wm/state/iconify.jl: don't add minimize to the
-	toggles menu
-
-	* sawfish/wm/menus.jl: simplified the window-ops-menu, just
-	have minimize/maximize/close at the top of the menu, with other
-	stuff below
-
-	* sawfish/wm/menus.jl (menu-preprocessor): labels can now be
-	functions, they will be called (with any menu-args) to get the
-	actual string
-
-	* sawfish/wm/frames.jl (after-setting-default-frame): used as
-	:after-set function of default-frame-style. Checks that the new
-	frame style is available, signals an error otherwise
-
-	* sawfish/wm/custom.jl (define-custom-setter, custom-setter):
-	store these in a dedicated hash table
-
-	(custom-set-symbol): function to catch exceptions while
-	committing custom changes, then revert back to the old value if
-	necessary (resignalling the exception)
-
-	(custom-set-variable, custom-set-typed-variable): use
-	custom-set-symbol instead of custom-set directly
-
-	(custom-load): new function, parses and executes a custom file
-	by hand
-	(custom-eval): don't just call eval, deref the function and
-	apply it to the arguments
-
-	(custom-load-user-file): use custom-load instead of load
-
-	* sawfish/wm.jl: use sawfish-locale-directory when calling
-	bindtextdomain
-
-	* sawfish/wm/misc.jl (call-with-error-handler): new function
-
-	* sawfish/wm/windows.jl: fix typo in name of
-	uniquify-window-name command
-
-2000-11-15  John Harper  <jsh eazel com>
-
-	* sawfish/wm/menus.jl (window-ops-menu): renamed the `Delete'
-	item as `Close'
-
-	* sawfish/wm/menus.jl (window-ops-menu): deleted `Destroy' item
-
-	* sawfish/wm/ext/window-history.jl (window-history-clear): new
-	function and command
-
-	* sawfish/wm/ext/window-history.jl
-	(window-history-ignore-transients): new option, disables auto
-	history saving for transient windows (t by default)
-
-	* sawfish/wm/placement/smart.jl (sp-cost:overlap): changed the
-	function calculating this to (exp (- (/ overlap (*
-	(screen-width) (screen-height))))). Patch from Unai Uribarri
-	<unaiur telecable es>
-
-	* sawfish/wm/keymaps.jl (window-keymap): deleted C-M-Left and
-	C-M-Right bindings (send window to previous/next workspace).
-	They can be confusing when hit by mistake
-
-	* sawfish/wm/ext/error-handler.jl: expanded this to stash all
-	errors in a ring buffer. Functions `retrieve-errors' and
-	`display-errors' to access this buffer. Also added an option
-	error-destination controlling where error messages are
-	displayed (stderr, screen, /dev/null)
-
-	* sawfish/wm/defaults.jl: require sawfish.wm.ext.error-handler
-
-	* sawfish/wm/util/window-order.jl (on-viewport-change): don't
-	call window-order-focus-most-recent if using the `enter-exit'
-	focus mode
-
-2000-11-14  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/maximize.jl (unmaximize-window-1): added an
-	optional arg BEFORE, a thunk to call immediately before doing
-	the resize
-	(unmaximize-window): use the new BEFORE param to ensure that
-	the window's properties get updated before it's resized. This
-	way the theme will get the correct values of window-maximized-p
-	when it rebuilds the frame
-
-	* sawfish/wm/util/window-order.jl (on-viewport-change):
-	reinstated this function; this time it removes ordering
-	information from all viewport-sticky windows in the current
-	workspace/viewport pair
-
-	* sawfish/wm/commands/grow-pack.jl (gp-avoid-windows): ignore
-	unmapped windows
-
-2000-11-13  John Harper  <jsh eazel com>
-
-	* sawfish/wm/ext/match-window.jl (match-window-properties):
-	deleted obsolete ignore-when-cycling property
-
-	* version 0.33.1
-
-	* sawfish/wm/state/gnome.jl (gnome-honour-client-state): go
-	back to setting `avoid' manually for panel windows
-
-2000-11-13  John Harper  <jsh eazel com>
-
-	* sawfish/wm/ext/edge-flip.jl: import rep.io.timers
-
-	* sawfish/wm/state/transient.jl (transient-map-window): fix
-	stupid typo in `cond' statement breaking focus-on-map option
-	(#4698). Patch from Unai Uribarri Rodríguez
-	<unaiur telecable es>
-
-2000-11-12  John Harper  <jsh eazel com>
-
-	* sawfish/wm/ext/beos-window-menu.jl: fixed the code that was
-	supposed to add `unused' windows. It now also includes
-	iconified windows (even if they wouldn't normally be in the
-	menu)
-
-	* sawfish/wm/ext/beos-window-menu.jl (make-label): abbreviate
-	menu items the default amount (so that they match the parent
-	items if they get moved up a level)
-
-2000-11-10  John Harper  <jsh eazel com>
-
-	* sawfish/wm/focus.jl (focus-push-map, focus-pop-map): set the
-	ignore-fp-keymap property of windows to t while they have the
-	click-to-focus keymap. Fixes #4233
-
-	* sawfish/wm/focus.jl: add a function to the
-	after-initialization-hook to call focus-add-window on all
-	windows (map-notify-hook doesn't get called for these windows)
-
-2000-11-08  John Harper  <jsh eazel com>
-
-	* version 0.33
-
-2000-11-08  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/transient.jl (transient-map-window): fix
-	error when no window is focused
-
-2000-11-06  John Harper  <jsh eazel com>
-
-	* sawfish/wm/focus.jl: add focus-add-window to the
-	map-notify-hook not after-add-window-hook. When checking for
-	the `click-to-focus windows unfocusable' bug, only check mapped
-	windows, and use focus-push-map to recover, not custom hackery
-
-	* sawfish/wm/state/transient.jl (transient-map-window): cleaned
-	up control flow (removed unnecessary variable), and using
-	transient-of-p instead of checking manually (this means that
-	the transient-for = root-window convention is supported)
-
-2000-11-03  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/maximize.jl: immediately before exiting
-	unmaximize all maximized windows. But be careful not to reflect
-	this change in their properties (either wm-local or in the X
-	server). Fixes #4336
-
-	* sawfish/wm/state/wm-spec.jl (wm-spec-init): changed
-	_NET_SUPPORTING_WM_CHECK properties to type 'WINDOW. Also set
-	_NET_WM_NAME property on the identifying client window
-
-2000-11-02  John Harper  <jsh eazel com>
-
-	* sawfish/wm/ext/auto-raise.jl (rw-on-focus, rw-out-focus):
-	only do anything if (eq MODE 'normal); fixes #15526 in Red Hat
-	bugzilla. Not totally sure that this doesn't break anything,
-	but it's easily revertable if it does..
-
-	* sawfish/wm/frames.jl (frame-class-removed-p): new function
-
-	* sawfish/wm/state/maximize.jl (check-if-maximizable,
-	property-notify): new functions, added to add-window-hook and
-	property-notify-hook respectively. When WM_NORMAL_HINTS changes
-	in any way, check if the window is maximizable or not; then
-	hide (or reshow) the maximize button as necessary. Fixes #4260
-
-2000-11-01  John Harper  <jsh eazel com>
-
-	* sawfish/wm.jl: load sawfish.wm.state.maximize at startup,
-	since it adds things to hooks
-
-	* sawfish/wm/ext/edge-flip.jl (before-edge-flip-hook,
-	after-edge-flip-hook): new hooks
-
-	(before-flip, after-flip, edge-flip-while-moving): edge
-	flipping while dragging windows now obeys the edge-flip-delay
-	setting
-
-2000-10-31  John Harper  <jsh eazel com>
-
-	* sawfish/wm/state/maximize.jl: added a function to the
-	after-window-hook that checks for `queued-{vertical,horizontal}-
-	maximize' properties on windows. When found the window is
-	maximized. This gets around the problem of not being able to
-	maximize a window before it's been framed
-
-	* sawfish/wm/state/wm-spec.jl, sawfish/wm/state/gnome.jl: set
-	queued maximize properties if a newly-created window needs to
-	be maximize
-
-	* sawfish/wm/state/gnome.jl: now understands
-	WIN_HINTS_DO_NOT_COVER flag to be the same as the `avoid'
-	property
-
-2000-10-30  John Harper  <jsh eazel com>
-
-	* sawfish/wm/theming/make-theme-preview.jl: add the function
-	that watches for preview windows to after-add-window-hook not
-	before-add-window-hook to make sure that any given frame sticks
-
-	* sawfish/wm/state/transient.jl (transient-unmap-window): when
-	unmapping a transient, before deciding to focus on its parent,
-	look for the most recently focused window in the same group.
-	This may well be more intuitive in some circumstances
-
-	* sawfish/wm/util/window-order.jl (window-order-most-recent):
-	new keyword arg WINDOWS, a list of windows to restrict the
-	returned value to
-
-2000-10-29  John Harper  <jsh eazel com>
-
-	* sawfish/wm/placement/smart.jl (sp-make-grid): don't add root
-	window points if they're already in the list; add (1-
-	(screen-width)) etc, so that these points aren't chopped
-
-	(sp-get-windows): new optional parameter PRED, a predicate
-	function to use to select the windows to check for overlap.
-	Also included a fix from David Bustos <bustos its caltech edu>
-	to fix a typo in the window-mapped-p check
-
-	(sp-do-placement): new keyword arg #:window-filter, passed to
-	sp-get-windows
-
-	(place-window-best-fit-group): new placement mode
-	`best-fit-group'. Same as `best-fit', except that windows not
-	in the same group as the window being placed aren't included in
-	the overlap calculation (useful for transients)
-
-2000-10-28  John Harper  <jsh eazel com>
-
-	* sawfish/wm/custom-defaults.jl: added some more settings;
-	hopefully they give a better default configuration..
-
-	* sawfish/wm/custom.jl: added command line option
-	`--custom-file' to set the value of custom-user-file
-
-2000-10-26  John Harper  <jsh eazel com>
-
-	* sawfish/wm/workspace.jl, sawfish/wm/commands/describe.jl,
-	sawfish/wm/ext/3d-hack.jl: made some commands #:user-level
-	expert
-
-	* sawfish/wm/util/nokogiri.jl (nokogiri-report-commands): fixed
-	and/or typo
-
-	* sawfish/wm/util/groups.jl (persistent-group-ids): changed
-	type of this option from `(list string)' to `(list symbol)' as
-	it should have been
-
-2000-10-25  John Harper  <jsh eazel com>
-
-	* sawfish/wm/focus.jl (focus-click): the logic to ungrab the
-	pointer in non-click-through mode was reversed (i.e. broken)
-
-	* sawfish/wm/workspace.jl (ws-add-window): set swapped-in
-	property of sticky windows, otherwise they don't get swapped
-	out the first time a new workspace is selected
-
-2000-10-24  John Harper  <jsh eazel com>
-
-	* sawfish/wm/swapper.jl (workspace-swap-out,
-	workspace-swap-in): don't swap non-plist attributes of sticky
-	windows (this means that sticky geometry is fixed, probably as
-	it should be)
-
-	* sawfish/wm/util/window-order.jl: made the `order' property
-	workspace-local once more (there's a remark earlier in this
-	ChangeLog about that being non-intuitive, but it's better that
-	way for sticky windows)
-	(window-order-pop-low-sticky-windows): removed this hack, it's
-	not required now order is workspace-local
-
-	* sawfish/wm/workspace.jl (select-workspace): swap-in data for
-	all sticky windows as well as normal windows in the new
-	workspace
-
-	* sawfish/wm/ext/match-window.jl: fixed :require fields to use
-	sawfish.wm.ext.match-window instead of just match-window
-
-	* sawfish/wm/focus.jl (focus-enter-fun, focus-leave-fun):
-	accept an extra MODE parameter
-	(enter-exit mode): pointer-leave events only cause focus to be
-	jettisoned if (eq MODE 'normal)
-
-	* sawfish/wm/focus.jl (focus-click): call forget-button-press
-	after either replaying or ungrabbing pointer events (otherwise
-	following events are marked as click2, which won't trigger the
-	bindings in the click-to-focus-map)
-
-	* sawfish/wm/state/gnome.jl (gnome-honour-client-state):
-	magically set never-focus property of gmc-desktop-icon windows
-
-2000-10-23  John Harper  <jsh eazel com>
-
-	* sawfish/wm/focus.jl: added a hack to the idle-hook to check
-	that unfocused click-to-focus windows have the correct keymap
-	installed (it would be better to fix the cause not the
-	symptoms, but until then..)
-
-2000-10-22  John Harper  <jsh eazel com>
-
-	* sawfish/wm/placement.jl (place-window-interactively): after
-	calling accept-x-input, check that the window wasn't destroyed
-	before placing the window.. (patch from merlin)
-
-	* sawfish/wm/state/maximize.jl (maximize-find-workarea): new
-	parameter #:head
-
-	Integrated a patch from Geoff Reedy <vader21 imsa edu> to
-	support Xinerama better
-
-	* sawfish/wm/commands/x-cycle.jl (cycle-display-message): put
-	the message on the head associated with the window
-
-	* sawfish/wm/placement.jl (place-window-under-pointer): centre
-	on the head under the pointer, not the current head
-
-	* sawfish/wm/misc.jl (pointer-head): new function, returns the
-	head that the pointer is on
-
-2000-10-20  John Harper  <jsh eazel com>
-
-	* sawfish/wm/util/nokogiri.jl (nokogiri-report-commands): use
-	keys to pass back type and user-level of commands that have
-	them
-
-	* sawfish/wm/ext/shade-hover.jl (shade-hover-before): check for
-	windowp before window-get'ing
-
-	* sawfish/wm/keymaps.jl: use user-customizable raise commands
-	by default
-
-	* sawfish/wm/commands/x-cycle.jl,
-	sawfish/wm/commands/move-resize.jl,
-	sawfish/wm/commands/grow-pack.jl, sawfish/wm/ext/auto-raise.jl,
-	sawfish/wm/state/shading.jl, sawfish/wm/state/maximize.jl,
-	sawfish/wm/state/configure.jl,
-	sawfish/wm/util/display-window.jl: use raise-window* instead of
-	raise-window
-
-	* sawfish/wm/util/stacking.jl (raise-window*, lower-window*,
-	raise-lower-window*): new functions, they choose a raise mode
-	based on the customization option user-raise-type
-
-	* sawfish/wm/stacking.jl, sawfish/wm/commands/groups.jl,
-	sawfish/wm/state/transient.jl: put raise/lower commands at
-	'expert level
-
-	* sawfish/wm/commands/raise-commands.jl: new command
-	raise-and-pass-through-click, uses user's preferred raise mode
-
-	* sawfish/wm/stacking.jl: renamed raise-window, lower-window,
-	and raise-lower-window as raise-single-window, etc..
-
-	* sawfish/wm/commands.jl (apply-command-keys): abstracted
-	command #!key args here. New parameter #:user-level
-	(command-type, command-user-level): new functions
-
-2000-10-19  John Harper  <jsh eazel com>
-
-	* version 0.32
-
-	* sawfish/wm/windows.jl (mark-window-as-desktop): new function
-	* sawfish/wm/state/gnome.jl (gnome-honour-client-state): use
-	mark-window-as-desktop
-
-	* sawfish/wm/commands/x-cycle.jl: included patch from merlin
-	for a different reverse-cycling implementation, with minor
-	cleanups
-
-2000-10-18  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/windows.jl: added window-urgent-p to the gaol
-
-	* sawfish/wm/focus.jl (focus-click): in non-click-through mode,
-	ungrab the pointer so that the release event can't trigger
-	window decorations
-
-	* sawfish/wm/ext/match-window.jl (match-window-properties):
-	`dimensions' property was called `size' by mistake
-
-2000-10-14  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/placement/smart.jl: export the various sp-cost:
-	functions
-
-2000-10-12  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/ext/shade-hover.jl: miscellaneous improvements
-	inspired by a patch to the mailing list from Eli Barzilay
-	<eli barzilay org>. Unshading a hovered window doesn't flicker,
-	reshade the window if it loses focus
-
-	* sawfish/wm/commands.jl (call-command): allow pre-command-hook
-	to modify this-command and current-prefix-arg. If it sets
-	this-command to false then the command is ignored
-
-2000-10-11  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/stacking.jl (apply-group-order): swap do for let
-
-	* sawfish/wm/commands/x-cycle.jl (cycle-prefix): match `Foo -
-	...' as well as `Foo: ...'
-
-2000-10-09  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/stacking.jl (raise-windows, lower-windows):
-	rewritten to be more intelligent. These now search for the
-	required stacking order of the windows then restack the windows
-	in a single pass such that the minimum number of expose events
-	are generated on the windows.
-
-	[ Rob Hodges <s323140 student uq edu au> found the algorithm
-	and made the initial implementation of raise-windows. I
-	translated it to tail-recursive iteration and implemented
-	lower-windows along the same lines ]
-
-	* sawfish/wm/state/transient.jl (transient-of-p): only apply
-	the `(= WM_TRANSIENT_FOR Root) => transient for whole group'
-	rule to non-transient windows
-	(transient-children): new function
-
-	* sawfish/wm/commands/x-cycle.jl: added ::doc: style embedded
-	doc strings for the cycle commands
-
-	* sawfish/wm/state/maximize.jl (window-maximizable-p,
-	maximize-truncate-dims): fixed some bugs introduced by quoted
-	nil no longer being boolean false
-
-	* sawfish/wm/commands/x-cycle.jl (cycle-reverse-event): deleted
-	(define-cycle-command): new function, used to create a pair of
-	commands for cycling backwards and forwards through a given
-	list of windows
-	(cycle-begin): renamed from cycle-windows; search global-keymap
-	for bindings of the command that cycles in the opposite
-	direction to the currently executing command
-
-	* sawfish/wm/state/gnome.jl (gnome-honour-client-state):
-	SKIP_FOCUS no longer sets never-focus and ignored properties,
-	instead it just sets cycle-skip. SKIP_FOCUS defining whether
-	the window is focusable or not wasn't very clever, WM_HINTS
-	defines that
-
-	Added a `window-list-skip' property to allow windows to be
-	taken out of the windows menu
-
-	* sawfish/wm/state/ignored.jl (toggle-window-list-skip): new
-	function / command
-
-	* sawfish/wm/state/gnome.jl (gnome-honour-client-state):
-	if SKIP_WINLIST set, then set window-list-skip property
-	(gnome-set-client-hints): new function, updates _WIN_HINTS when
-	the user changes something. Currently just maps
-	window-list-skip to SKIP_WINLIST
-
-	* sawfish/wm/gnome/match-window.jl: no longer handles
-	SKIP_WINLIST, that's now tied to the window-list-skip property
-
-	* sawfish/wm/ext/window-history.jl (window-history-states):
-	added window-list-skip property
-
-	* sawfish/wm/ext/old-window-menu.jl,
-	sawfish/wm/ext/beos-window-menu.jl: check for window-list-skip
-	property
-
-	* sawfish/wm/ext/match-window.jl (match-window-properties):
-	added cycle-skip and window-list-skip properties
-
-	* sawfish/wm/commands/gnome.jl: implemented skip-winlist
-	commands in terms of window-list-skip property and
-	toggle-window-list-skip function
-
-2000-10-08  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/user.jl: catch and print errors while calling
-	custom-load-user-file
-
-	* sawfish/wm/ext/match-window.jl (match-window): ensure that
-	each property is a symbol before calling get-prop
-
-	* sawfish/wm/ext/auto-raise.jl (rw-on-focus): minimum timeout
-	is now one millisecond, not zero
-
-	* sawfish/wm/ext/auto-raise.jl (rw-on-focus): in the timer
-	callback, if disable-auto-raise is set, reset the timer for
-	another try later
-
-2000-10-07  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/ext/beos-window-menu.jl (group-name): only look
-	for window-class of an integer id if it's positive
-
-2000-10-05  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/windows.jl (window-in-cycle-p): use
-	window-really-wants-input-p instead of just checking
-	'never-focus property
-
-	* sawfish/wm/focus.jl (focus-click): on exit, if the window
-	isn't focused push the click-to-focus-map back onto the window
-
-	* sawfish/wm/windows.jl (ignore-window-input-hint): defaults to
-	false now that window-accepts-input-p defaults to true if no
-	WM_HINTS property
-
-2000-10-03  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/user.jl: fix typo when loading the `defaults' file
-	(patch from Ronald Wahl
-	<ronald wahl informatik tu-chemnitz de>)
-
-	* sawfish/wm/viewport.jl: fix command spec's of move-window-foo
-	commands (patch from Yoshiki Hayashi <yoshiki xemacs org>)
-
-2000-09-29  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/state/wm-spec.jl: fixed some minor bugs
-
-	(wm-spec-honour-client-state): treat _NET_WM_WINDOW_TYPE as a
-	vector of atoms, the first atom we have a type definition for
-	is the one we use
-
-	(define-wm-spec-window-type, define-wm-spec-window-type): new
-	functions
-
-2000-09-26  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/commands/x-cycle.jl: don't pass EVENT parameter
-	between commands. Export cycle-next function
-
-	* sawfish/wm/commands/x-cycle.jl: the reverse key is now used
-	to cycle one step `backwards'. The cycle-windows function now
-	has a keyword arg STEP defining the direction (and magnitude)
-	of cycle steps
-
-	* sawfish/wm/util/decode-events.jl (modifier-keysym-p): new
-	function
-
-	* sawfish/wm/commands/x-cycle.jl (cycle-windows): add the
-	modifiers of the invoking event to the cycle-reverse-event when
-	creating its binding
-
-	* sawfish/wm/util/decode-events.jl (decode-event): use a `do'
-	statement instead of while and setq
-
-2000-09-25  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/commands/x-cycle.jl (cycle-reverse-event): new
-	option, the name of the event that causes cycling to reverse
-	direction. (My rationale is that this is less fiddly to use
-	than, e.g., making M-S-TAB go backwards, and also is cleaner to
-	implement)
-
-	* sawfish/wm/misc.jl (current-head): fall back to checking the
-	pointer position if no head is found for the window
-
-	* sawfish/wm/windows.jl, sawfish/wm/frames.jl,
-	sawfish/wm/ext/shade-hover.jl: added some :tooltip's
-
-	* sawfish/wm/custom.jl (defcustom): new keyword `:tooltip
-	STRING'. Embed it into the doc string (following a `\n\n'
-	marker)
-
-2000-09-23  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/ext/3d-hack.jl: export 3d-make-cube and
-	3d-make-saw
-
-2000-09-22  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/gnome/integration.jl (gnome-use-capplet): fix typo
-	(patch from Christian Marillat <marillat christian wanadoo fr>)
-
-2000-09-20  John Harper  <john dcs warwick ac uk>
-
-	* version 0.31
-
-2000-09-19  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/user.jl: set *user-structure* to 'user
-	* sawfish/wm.jl: set *user-structure* (temporarily) to
-	'sawfish.wm, don't set *root-structure* (it's been removed)
-
-	* sawfish/wm/util/window-order.jl (on-viewport-change): use the
-	same hack for sticky windows used when changing workspaces
-
-2000-09-17  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/ext/3d-hack.jl (3d-hack): check if current-event
-	returns something before passing it to decode-event
-
-	* sawfish/wm/focus.jl (focus-click): only try to pass through
-	the click (or whatever) if current-event returns something
-
-2000-09-14  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/state/ignored.jl (toggle-window-cycle-skip): new
-	command, also added to the toggle menu
-
-	* sawfish/wm/ext/window-history.jl,
-	sawfish/wm/ext/match-window.jl: include the cycle-skip property
-
-	* sawfish/wm/commands/cycle.jl, sawfish/wm/commands/x-cycle.jl:
-	use window-in-cycle-p to decide which windows to include
-
-	* sawfish/wm/windows.jl (window-in-cycle-p): new function
-
-	[ adapted from a patch from Dave Dribin <yhdrib yahoo com> ]
-
-2000-09-13  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/ext/tooltips.jl (display-tooltip): the TEXT
-	argument may now be a function (which should produce a string
-	when called)
-
-	* sawfish/wm/ext/tooltips.jl (display-tooltip-after-delay): new
-	exported function
-
-2000-09-11  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/workspace.jl, sawfish/wm/windows.jl,
-	sawfish/wm/user.jl, sawfish/wm/server.jl, sawfish/wm/misc.jl,
-	sawfish/wm/menus.jl, sawfish/wm/gaol.jl, sawfish/wm/frames.jl,
-	sawfish/wm/customize.jl, sawfish/wm/commands.jl:
-	* sawfish/wm/commands/xterm.jl,
-	sawfish/wm/commands/viewport-linear.jl,
-	sawfish/wm/commands/move-resize.jl,
-	sawfish/wm/commands/help.jl, sawfish/wm/commands/describe.jl:
-	* sawfish/wm/ext/window-history.jl, sawfish/wm/ext/tooltips.jl,
-	sawfish/wm/ext/match-window.jl,
-	sawfish/wm/ext/error-handler.jl, sawfish/wm/ext/3d-hack.jl:
-	* sawfish/wm/gnome/menus.jl:
-	* sawfish/wm/session/save.jl, sawfish/wm/session/load.jl,
-	sawfish/wm/session/init.jl:
-	* sawfish/wm/util/with-output.jl, sawfish/wm/util/prompt.jl,
-	sawfish/wm/util/prompt-wm.jl, sawfish/wm/util/nokogiri.jl,
-	sawfish/wm/util/keymap.jl, sawfish/wm/util/gtkrc.jl,
-	sawfish/wm/util/compat.jl:
-
-	No need to explicitly open `rep.io.streams' anymore
-
-2000-09-10  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/util/gtkrc.jl (gtkrc-get-style): ungrab the X
-	server before running `gtk-style'. Otherwise it may not be able
-	to connect
-
-	* sawfish/wm/misc.jl (call-with-server-ungrabbed): new function
-
-2000-09-08  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm.jl:
-
-	* sawfish/wm/workspace.jl, sawfish/wm/windows.jl,
-	sawfish/wm/window-anim.jl, sawfish/wm/viewport.jl,
-	sawfish/wm/user.jl, sawfish/wm/swapper.jl,
-	sawfish/wm/stacking.jl, sawfish/wm/server.jl,
-	sawfish/wm/placement.jl, sawfish/wm/misc.jl,
-	sawfish/wm/menus.jl, sawfish/wm/keymaps.jl, sawfish/wm/gaol.jl,
-	sawfish/wm/frames.jl, sawfish/wm/focus.jl,
-	sawfish/wm/customize.jl, sawfish/wm/custom.jl,
-	sawfish/wm/commands.jl:
-
-	* sawfish/wm/commands/xterm.jl, sawfish/wm/commands/x-cycle.jl,
-	sawfish/wm/commands/viewport-linear.jl,
-	sawfish/wm/commands/move-resize.jl,
-	sawfish/wm/commands/help.jl, sawfish/wm/commands/gnome.jl,
-	sawfish/wm/commands/describe.jl:
-
-	* sawfish/wm/ext/window-history.jl, sawfish/wm/ext/tooltips.jl,
-	sawfish/wm/ext/shade-hover.jl, sawfish/wm/ext/match-window.jl,
-	sawfish/wm/ext/error-handler.jl, sawfish/wm/ext/edge-flip.jl,
-	sawfish/wm/ext/auto-raise.jl, sawfish/wm/ext/audio-events.jl,
-	sawfish/wm/ext/3d-hack.jl:
-
-	* sawfish/wm/gnome/menus.jl:
-
-	* sawfish/wm/session/save.jl, sawfish/wm/session/load.jl,
-	sawfish/wm/session/init.jl:
-
-	* sawfish/wm/state/wm-spec.jl, sawfish/wm/state/transient.jl,
-	sawfish/wm/state/shading.jl, sawfish/wm/state/open-look.jl,
-	sawfish/wm/state/mwm.jl, sawfish/wm/state/maximize.jl,
-	sawfish/wm/state/ignored.jl, sawfish/wm/state/iconify.jl,
-	sawfish/wm/state/gnome.jl, sawfish/wm/state/configure.jl:
-
-	* sawfish/wm/theming/make-theme.jl,
-	sawfish/wm/theming/make-theme-preview.jl:
-
-	* sawfish/wm/util/with-output.jl,
-	sawfish/wm/util/window-order.jl, sawfish/wm/util/prompt.jl,
-	sawfish/wm/util/prompt-wm.jl, sawfish/wm/util/prompt-extras.jl,
-	sawfish/wm/util/play-audio.jl, sawfish/wm/util/nokogiri.jl,
-	sawfish/wm/util/keymap.jl, sawfish/wm/util/gtkrc.jl,
-	sawfish/wm/util/groups.jl, sawfish/wm/util/compat.jl:
-
-	Open the necessary modules that aren't included in `rep'
-	structure anymore (rep.regexp, rep.system, rep.io.streams,
-	rep.io.files, rep.io.file-handlers)
-
-2000-09-07  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/user.jl (safe-load): convenience function to catch
-	errors from `load'. Used when loading user scripts
-
-	* sawfish/wm/ext/old-window-menu.jl (old-window-menu): fixed
-	the `do' iteration parameters
-
-	* sawfish/wm/customize.jl, sawfish/wm/custom.jl: added module
-	aliases
-
-	* sawfish/wm/menus.jl:
-	* sawfish/wm/state/iconify.jl: moved the `Iconify' window menu
-	item to the `Toggle' submenu, and called it `Minimized'
-
-	* sawfish/wm/workspace.jl, sawfish/wm/frames.jl:
-	* sawfish/wm/ext/old-window-menu.jl,
-	sawfish/wm/ext/beos-window-menu.jl:
-	* sawfish/wm/util/groups.jl: create radio-button menu-items
-	where appropriate
-
-	* sawfish/wm/ext/beos-window-menu.jl
-	(beos-window-menu-simplifies): new option, when t singleton
-	submenus are lifted to replace their parent item
-
-	* sawfish/wm/menus.jl (add-window-menu-toggle): new function,
-	adds items to the `Toggle' submenu of the window-ops-menu
-	(menu-preprocessor): menu items may be dotted to an alist of
-	options (sawfish-menu currently supports `(check . STATE)')
-	(menu-args): fluid providing arg-list for functions called
-	while preprocessing menus
-	(popup-window-menu): now takes a window as its sole arg, then
-	sets menu-args to the singleton list containing this value
-
-	* sawfish/wm/frames.jl, workspace.jl:
-	* sawfish/wm/ext/old-window-menu.jl,
-	sawfish/wm/ext/beos-window-menu.jl:
-	* sawfish/wm/util/groups.jl: use check-items where appropriate
-	when creating menus
-
-	* sawfish/wm/state/shading.jl, sawfish/wm/state/ignored.jl,
-	sawfish/wm/state/iconify.jl, sawfish/wm/state/gnome.jl: add
-	window-menu toggle items
-
-	* sawfish/wm/state/iconify.jl (window-iconified-p,
-	window-sticky-p):
-	* sawfish/wm/state/shaded.jl (window-shaded-p):
-	* sawfish/wm/state/ignored.jl (window-ignored-p): new functions
-
-	* sawfish/wm/frames.jl (frame-type-menu): broke this out of
-	sawfish.wm.menus
-
-	* sawfish/wm.jl: intern and export sawfish.wm.state.ignored
-
-2000-09-06  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/window-anim.jl, sawfish/wm/animation/outline.jl:
-	added structure aliases
-
-	* sawfish/wm/animation/outline.jl (anim-outline-entry): check
-	the 'icon-position property of the window before looking at
-	anim-outline-icon-coords
-
-	* sawfish/wm/custom.jl (custom-set-variable,
-	custom-set-typed-variable): use user-require to load :require'd
-	modules (in case they're bare code)
-
-	* sawfish/wm/misc.jl (user-require): new function
-
-2000-09-04  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/commands.jl (define-command): new keyword args DOC
-	and DOC-KEY
-	(command-documentation): new function, a bit of a kludge
-
-2000-09-03  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/misc.jl (quote-menu-item): function to translate
-	`_' to `__' in menu items (to avoid introducing unintended
-	keyboard accelerators)
-
-	* sawfish/wm/workspace.jl, sawfish/wm/frames.jl,
-	sawfish/wm/ext/old-window-menu.jl,
-	sawfish/wm/ext/beos-window-menu.jl, sawfish/wm/util/groups.jl:
-	use quote-menu-item when creating menus
-
-	* sawfish/wm/commands/describe.jl (describe-symbol): include
-	null STRUCTURE arg in call to `documentation'
-
-	* sawfish/wm/gaol.jl: added some more known-to-be-safe modules,
-	export define-gaol-structure
-
-2000-09-02  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/frames.jl (load-frame-style): name each gaol
-	containing a theme as `themes.FOO' for a theme called FOO. This
-	allows the theme's definitions to be inspected using the repl
-
-	* sawfish/wm/util/nokogiri.jl (nokogiri-report-slot,
-	nokogiri-report-group): use actual keywords in the results
-
-2000-09-01  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/gnome/integration.jl: when adding to the `Help'
-	menu, add an `About GNOME' item
-
-	* sawfish/wm/menus.jl (root-menu): add an `About Sawfish' item
-
-	* sawfish/wm/commands/help.jl (help:about): new command,
-	launches the new `sawfish-about' script
-
-	* sawfish/wm/commands/gnome.jl (gnome-about): new command,
-	launches the `gnome-about' program
-
-	* sawfish/wm/workspace.jl, sawfish/wm/util/groups.jl: tweaked a
-	few doc strings
-
-	* sawfish/wm/defaults.jl: aliased to sawmill-defaults
-
-	* sawfish/wm/keymaps.jl (pointer-motion-threshold): declare
-	this built-in customization option
-
-2000-08-31  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/menus.jl: action parts of menu items may now be
-	arbitrary lisp objects, instead of just those with a read
-	syntax. This is achieved by using a hash table to map
-	non-symbol objects to integer ``nicknames'' before passing the
-	menu structure to the helper process. When a nickname comes
-	back as the result, dereference the table to find the actual
-	object. The reason for this is to allow menu items to contain
-	closures, avoiding the gratuitous use of `eval' that was
-	happening
-
-	* sawfish/wm/ext/old-window-menu.jl,
-	sawfish/wm/ext/beos-window-menu.jl, sawfish/wm/workspace.jl,
-	sawfish/wm/frames.jl, sawfish/wm/util/groups.jl: use closures
-	instead of bare code in menu items
-
-2000-08-30  John Harper  <john dcs warwick ac uk>
-
-	Some work to help the desktop-in-a-window approach work
-	properly, as used by nautilus:
-
-	* sawfish/wm/focus.jl: use desktop-window-p to recognize
-	root/desktop windows. Make focusing work logically for desktop
-	windows
-
-	* sawfish/wm/windows.jl (desktop-window-p): new function, true
-	if arg is 'root or a window with 'desktop property set
-
-	* sawfish/wm/state/gnome.jl (gnome-honour-client-state): match
-	class `Nautilus/desktop_window' and set its 'desktop property.
-	Also set its 'keymap property to the root-window-keymap
-
-	* sawfish/wm/state/wm-spec.jl: set 'desktop and 'keymap
-	properties of TYPE_DESKTOP windows
-
-	* sawfish/wm/ext/shade-hover.jl (shade-hover-leave): use
-	desktop-window-p to decide when to ignore the event
-
-	* sawfish/wm/commands/x-cycle.jl (next): don't include windows
-	that are desktop-window-p in the list to be selected from
-
-2000-08-29  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/placement.jl (adjust-window-for-gravity): new
-	optional arg UNADJUST, passed to adjust-position-for-gravity
-	(place-window): if 'placed property is set, treat it like a
-	user-specified position
-	(unplace-window): new function added to remove-window-hook to
-	undo gravity compensation
-
-	* sawfish/wm/windows.jl (adjust-position-for-gravity): new
-	optional arg UNADJUST, when set, adjust the window in the
-	opposite directions to normal
-
-	[ these last two changes are adapted from E. Jay Berkenbilt
-	<ejb ql org> ]
-
-	* sawfish/wm/windows.jl (window-gravity): new function
-
-	* sawfish/wm/state/maximize.jl (do-horizontal, do-vertical):
-	fixed for non-zero current-head offsets
-
-	* sawfish/wm/state/maximize.jl (window-unmaximized-position,
-	window-unmaximized-dimensions): new functions, unused yet
-
-	* sawfish/wm/util/edges.jl (get-visible-window-edges): removed
-	`#:include-root' keyword, added `#:include-heads LIST-OR-t' and
-	`#:include-screen t' giving more control over what gets added
-
-	Changed all callers.
-
-2000-08-26  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/misc.jl (current-head-dimensions): if no current
-	head, return (screen-dimensions)
-	(current-head-offset): if no current head, return '(0 . 0)
-
-2000-08-25  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/custom.jl (defcustom): don't (erroneously) rely on
-	defvar evaluating the DEFAULT-VALUE form
-
-2000-08-21  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/gaol.jl: added x-gc-set-dashes
-
-2000-08-18  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/commands.jl (define-command): spec and type args
-	are now keyword parameters
-
-	* sawfish/wm/workspace.jl, sawfish/wm/windows.jl,
-	sawfish/wm/viewport.jl, sawfish/wm/swapper.jl,
-	sawfish/wm/stacking.jl, sawfish/wm/server.jl,
-	sawfish/wm/gaol.jl, sawfish/wm/frames.jl:
-	* sawfish/wm/commands/x-cycle.jl,
-	sawfish/wm/commands/viewport-linear.jl,
-	sawfish/wm/commands/slide-window.jl,
-	sawfish/wm/commands/size-window.jl,
-	sawfish/wm/commands/raise-commands.jl,
-	sawfish/wm/commands/move-resize.jl,
-	sawfish/wm/commands/grow-pack.jl,
-	sawfish/wm/commands/groups.jl, sawfish/wm/commands/gnome.jl,
-	sawfish/wm/commands/describe.jl:
-	* sawfish/wm/ext/window-history.jl, sawfish/wm/ext/tooltips.jl,
-	sawfish/wm/ext/edge-flip.jl:
-	* sawfish/wm/gnome/menus.jl:
-	* sawfish/wm/placement/smart.jl:
-	* sawfish/wm/session/load.jl:
-	* sawfish/wm/state/transient.jl, sawfish/wm/state/shading.jl,
-	sawfish/wm/state/maximize.jl, sawfish/wm/state/ignored.jl,
-	sawfish/wm/state/iconify.jl:
-	* sawfish/wm/util/prompt.jl, sawfish/wm/util/prompt-extras.jl,
-	sawfish/wm/util/nokogiri.jl, sawfish/wm/util/gtkrc.jl,
-	sawfish/wm/util/edges.jl, sawfish/wm/util/display-window.jl,
-	sawfish/wm/util/compat.jl:
-
-	Updated for new define-command interface
-
-2000-08-16  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/commands.jl: fixed bug of functions with
-	`(interactive)' not being commandp
-
-	* sawfish/wm/commands.jl: give interactive spec for
-	destroy-window command
-
-2000-08-16  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/workspace.jl, sawfish/wm/windows.jl,
-	sawfish/wm/stacking.jl, sawfish/wm/misc.jl,
-	sawfish/wm/menus.jl, sawfish/wm/frames.jl,
-	sawfish/wm/customize.jl, sawfish/wm/custom.jl,
-	sawfish/wm/commands.jl, sawfish/wm/animation/outline.jl,
-	sawfish/wm/commands/xterm.jl, sawfish/wm/commands/x-cycle.jl,
-	sawfish/wm/commands/describe.jl, sawfish/wm/ext/tooltips.jl,
-	sawfish/wm/ext/match-window.jl,
-	sawfish/wm/ext/beos-window-menu.jl,
-	sawfish/wm/ext/audio-events.jl, sawfish/wm/placement/smart.jl,
-	sawfish/wm/session/init.jl, sawfish/wm/state/transient.jl,
-	sawfish/wm/state/maximize.jl, sawfish/wm/state/configure.jl,
-	sawfish/wm/theming/make-theme-preview.jl,
-	sawfish/wm/util/with-output.jl,
-	sawfish/wm/util/window-order.jl, sawfish/wm/util/rects.jl,
-	sawfish/wm/util/prompt.jl, sawfish/wm/util/prompt-wm.jl,
-	sawfish/wm/util/prompt-extras.jl, sawfish/wm/util/keymap.jl,
-	sawfish/wm/util/groups.jl, sawfish/wm/util/edges.jl,
-	sawfish/wm/util/display-window.jl, sawfish/wm/util/compat.jl:
-
-	use #!optional and #!rest instead of deprecated &optional and
-	&rest
-
-2000-08-15  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/workspace.jl: some renaming, ws-move-window ->
-	move-window-to-workspace, ws-copy-window ->
-	copy-window-to-workspace, ws-insert-workspace -> insert
-	workspace, ws-move-workspace -> move-workspace (and exported),
-	ws-remove-workspace -> move-workspace
-	(insert-workspace): this command renamed as
-	insert-workspace-after
-
-	Updated all callers
-
-	* sawfish/wm/compat.jl: handle workspace renamings
-
-	* sawfish/wm/viewport.jl (select-workspace-and-viewport): new
-	function
-
-	* sawfish/wm/commands.jl (command-fun): renamed command-ref and
-	exported
-
-2000-08-14  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/gaol.jl (safe-functions): added
-	make-image-from-x-drawable
-
-	* sawfish/wm/state/configure.jl (configure-request-handler): be
-	ICCCM compliant when handling move requests -- honour the
-	gravity if given, or default to NorthWest. Previously was
-	always doing the equivalent of Static gravity (has this broken
-	[m]any apps?)
-
-2000-08-13  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/server.jl: server now reliably communicates errors
-	back to the client (as `(signal 'remote-sawfish (list DATA))'
-	where DATA is a string). Also renamed the sockets and X
-	properties. The X protocol now includes a version number
-
-2000-08-11  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/commands/grow-pack.jl (pack-warp-pointer): new
-	option. Update from Kai Grossjohann
-
-2000-08-10  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/placement.jl (adjust-window-for-gravity): use
-	adjust-position-for-gravity
-
-	* sawfish/wm/windows.jl (adjust-position-for-gravity): new
-	function (abstracted from adjust-window-for-gravity)
-
-	* sawfish/wm/commands.jl (function-spec): interactive spec in
-	bytecode subr is now 5th element, not 6th
-
-2000-08-08  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/ext/match-window.jl (safe-string-match): wrapper
-	for string-match that catches and prints regexp errors
-
-2000-08-03  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm.jl: include sawfish.wm.state.{transient,iconify,
-	shading} in the exports of this module
-
-	* sawfish/wm/state/shading.jl, sawfish/wm/state/maximize.jl:
-	added aliases
-
-	* sawfish/wm/commands/x-cycle.jl, sawfish/wm/ext/tooltips.jl:
-	misc fixes
-
-2000-07-31  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/custom.jl (define-custom-setter, custom-setter):
-	kludged to use structure- functions
-
-	* sawfish/wm/user.jl: configure this structure so that setq
-	binds unbound variables
-
-	* sawfish/wm.jl: removed obsolete reference to autoload-verbose
-
-2000-07-30  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/workspace.jl: export ws-copy-window
-
-	* sawfish/wm/custom.jl (custom-set-variable,
-	custom-set-typed-variable): convert values which are the symbol
-	`nil' to boolean false (let's hope nothing actually uses the
-	symbol `nil'!)
-
-	* sawfish/wm.jl, sawfish/wm/user.jl, sawfish/wm/defaults.jl:
-	user module is now called `user', not `sawfish.wm.user'
-
-	* sawfish/wm/customize.jl (customize-args): deleted this
-	variable
-
-2000-07-28  John Harper  <john dcs warwick ac uk>
-
-	* sawfish/wm/ext/audio-events.jl (audio-event-handler): export
-	this function
-
-	* sawfish/wm/ext/tooltips.jl (display-tooltip, remove-tooltip):
-	public interface of this module
-
-	* sawfish/wm/state/maximize.jl (maximize-avoid-avoided): new
-	option, when nil, avoided windows are covered when maximizing
-	(from a mailing list post by Jonas Linde <jonas init se>)
-
-	* sawfish/wm/user.jl: support --call, --load and --quit long
-	equivalents for -f, -l and -q
-
-	* sawfish/wm/util/display-window.jl
-	(display-window:uniconify-to-current-workspace): put in expert
-	user-level
-
-	* sawfish/wm/workspace.jl, sawfish/wm/state/iconify.jl
-	(uniconify-to-current-workspace, raise-windows-on-uniconify,
-	focus-windows-on-uniconify): moved from workspace to iconify,
-	raise option is put at expert user-level
-
-2000-07-27  John Harper  <john dcs warwick ac uk>
-
-	Non-trivial changes to modularize sawfish. Instead of one
-	unmaintainably huge namespace, each file gets its own module.
-	Use sawfish.wm. hierarchy for modules that only apply to the
-	wm. Other modules under sawfish. will appear soon. Modules can
-	be imported separately, or `sawfish.wm' can be imported to get
-	all core definitions
-
-	* sawfish/wm.jl: does initialization and creates the sawfish.wm
-	structure
-
-	* sawfish/wm/commands.jl: all command handling is now written
-	in Lisp. Fully compatible except for how commands are defined.
-	Since we have no unified namespace, the mapping from names ->
-	command definitions is maintained separately. define-command
-	and autoload-command add entries to this mapping.
-	define-command takes a name and a function, and optionally an
-	interactive spec and a custom-type spec. The old style of
-	defining commands still works, but only in the user module
-
-	* x-cycle.jl, workspace.jl, wm-spec.jl, with-output.jl,
-	window-outline.jl, window-order.jl, window-history.jl,
-	window-anim.jl, viewport.jl, viewport-linear.jl, transient.jl,
-	tooltips.jl, stagger-placement.jl, stacking.jl,
-	smart-placement.jl, sm-save.jl, sm-load.jl, sm-init.jl,
-	sm-common.jl, slide-window.jl, size-window.jl, shading.jl,
-	shade-hover.jl, server.jl, select-window.jl, sawmill.jl,
-	sawmill-gaol.jl, sawmill-defaults.jl, rects.jl,
-	raise-commands.jl, prompt.jl, prompt-wm.jl, prompt-extras.jl,
-	play-audio.jl, place-window.jl, open-look.jl,
-	old-window-menu.jl, nokogiri-sawfish.jl, mwm.jl,
-	move-resize.jl, move-cursor.jl, menus.jl, maximize.jl,
-	match-window.jl, make-theme.jl, make-theme-preview.jl,
-	keymaps.jl, keymap.jl, ignore-window.jl, iconify.jl, help.jl,
-	gtkrc.jl, grow-pack.jl, groups.jl, group-funs.jl, gnome.jl,
-	gnome-menu.jl, gnome-match.jl, gnome-int.jl, gnome-commands.jl,
-	functions.jl, frames.jl, focus.jl, error-handler.jl, edges.jl,
-	edge-flip.jl, describe.jl, decode-events.jl, cycle.jl,
-	customize.jl, custom.jl, custom-defaults.jl, cursors.jl,
-	configure.jl, compat.jl, beos-window-menu.jl, autoload.jl,
-	auto-raise.jl, audio-events.jl, anim-outline.jl, 3d-hack.jl:
-
-	Moved (and maybe renamed) these files under sawfish.wm module
-	hierarchy (also made most into modules)
-
-2000-07-24  John Harper  <john dcs warwick ac uk>
-
-	* version 0.30.3
-
-2000-07-23  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.jl: don't require 'define. Also, only load "environ"
-	when (< rep-interface-id 10) (cvs rep correctly autoloads this
-	from a different location)
-
-	* custom.jl (custom-add-to-group): don't require 'sort, it's
-	not necessary and fails in cvs rep
-
-	* window-outline.jl (draw-box-outline): ensure numbers are
-	exact after rounding
-
-	* anim-outline.jl (anim-outline-run): use integer arithmetic
-
-	* stacking.jl (make-constraint): check for 'transients-above
-	property on the window, else use global value
-	* match-window.jl (match-window-properties): added
-	'transients-above property
-
-2000-07-19  John Harper  <john dcs warwick ac uk>
-
-	* shading.jl (shading-add-window): reinstate code to set
-	'shaded property to nil before calling shade-window
-
-	* keymaps.jl (custom-set-keymap): don't pass REQ arg to
-	custom-set, just ignore it
-
-	* custom.jl (custom-set): removed REQ parameter, has to be
-	conditional on the value of the option
-	(custom-set-variable, custom-set-typed-variable): if both REQ
-	and VALUE are non-nil, require REQ. Make SYMBOL special before
-	setting it
-
-2000-07-18  John Harper  <john dcs warwick ac uk>
-
-	* custom.jl (custom-convert): fixed some stupid bugs when
-	recursing into `list', `pair' and `and' types
-
-2000-07-17  John Harper  <john dcs warwick ac uk>
-
-	* gnome-menu.jl: require 'menus when compiling (otherwise when
-	setting apps-menu, don't know that it's special)
-
-2000-07-16  John Harper  <john dcs warwick ac uk>
-
-	* wm-spec.jl: set 'fixed-position and 'never-focus properties
-	of TYPE_DESKTOP windows
-
-	* configure.jl: renamed the 'fixed-position property as
-	'client-set-position. Changed all users
-
-	* gnome.jl: support FIXED_POSITION hint, sets the
-	'fixed-position property
-
-	* move-resize.jl, slide-window.jl: when 'fixed-position is set,
-	don't allow the window to be moved
-
-	* workspace.jl: add 'fixed-position to those saved with the
-	session data
-
-2000-07-14  John Harper  <john dcs warwick ac uk>
-
-	* version 0.30.2
-
-2000-07-13  John Harper  <john dcs warwick ac uk>
-
-	Work to correct the problem that defcustom's with secondary
-	types that need converting to-from strings weren't being
-	converted, since only the outer type was being looked at:
-
-	* custom.jl (custom-serialize, custom-deserialize,
-	define-custom-serializer, define-custom-deserializer):
-	functions to do deep conversions across (type, value) pairs
-
-	(custom-set-typed-variable): similar to custom-set-variable,
-	but with an extra arg, the type of the variable. This will
-	slowly replace c-s-v in `custom' files. The type allows the
-	conversion to work even if the variable has not yet been
-	defined
-
-	(variable-type): new function
-
-	(custom-set-color, custom-set-font): removed, just conversion
-	functions now. Compatibility functions in compat.jl
-
-	* customize.jl (customize-set): emitted forms call
-	custom-set-typed-variable not custom-set-variable and include
-	type of variable (unless variable has a custom-set property)
-
-	* nokogiri-sawfish.jl (nokogiri-report-slot): serialize the
-	value to something that's printable (unless it has a custom-get
-	property)
-
-2000-07-13  John Harper  <john dcs warwick ac uk>
-
-	* match-window.jl: removed unused group-widget definition
-
-	* wm-spec.jl, gnome.jl: use ws-set-window-workspaces instead of
-	window-add-to-workspaces when honouring _WIN_WORKSPACE and
-	_NET_WM_DESKTOP properties
-
-	* gnome-int.jl: only redefine xterm-program if it's not been
-	customized
-
-2000-07-12  John Harper  <john dcs warwick ac uk>
-
-	* menus.jl (popup-menu): when writing the menu spec across the
-	pipe, format it to a string, then write that. This only does a
-	single system call
-
-	* custom.jl (custom-set): new function, wraps a thunk to do the
-	actual variable setting in the necessary pre- and post-fix
-	code. Also sets a property 'custom-user-value on all variables
-	that have been customized
-	(variable-customized-p): new function
-	(custom-set-variable): now in terms of custom-set
-
-	* keymaps.jl (custom-set-keymap): now in terms of custom-set
-
-	* viewport.jl (move-window-to-viewport): remember to correct
-	for 1.. to vs 0.. indexing
-
-	* transient.jl (transient-of-p): if WM_TRANSIENT_FOR is set to
-	the root window, only compare group ids if non-nil
-	(transient-parents, transient-group): ignore unmapped windows
-
-2000-07-11  John Harper  <john dcs warwick ac uk>
-
-	* menus.jl (popup-menu): catch errors and unset menu-active
-
-	* x-cycle.jl, workspace.jl, window-order.jl, viewport.jl,
-	transient.jl, stacking.jl, smart-placement.jl, sm-save.jl,
-	sm-load.jl, sawmill-gaol.jl, place-window.jl, grow-pack.jl,
-	group-funs.jl, gnome.jl, frames.jl, edges.jl: replace `(mapc
-	foo (managed-windows))' by `(map-windows foo)', and similar
-	for filter-windows variants
-
-	* functions.jl (map-windows): deleted, now a C function
-	(get-window-by-name, get-window-by-name-re): deleted optional
-	LST parameters; use filter-windows
-
-	Cleaned up frame style and window type management:
-
-	* frames.jl (define-frame-type-mapper): used to register a
-	function that maps (WINDOW FRAME-TYPE) -> FRAME-TYPE. Used by
-	find-frame-type-definition to factor window state into the type
-	asked for from the theme
-
-	(reframe-window): reframes a window, according to its current
-	'type and 'frame-style properties
-
-	(set-frame-style): sets 'frame-style property and acts on it
-	(set-window-type): sets 'type property and acts on it
-
-	(window-type): removed junk to handle decorate-transients
-	option. Window type is _never_ changed for window state
-
-	(set-window-frame-style, set-frame-for-window,
-	reframe-one-window): deleted
-
-	* shading.jl: don't mess with 'type property any more. But
-	register a frame type mapper to handle conversion to shaded
-	frames when 'shaded property is set
-
-	* transient.jl: register a frame type mapper to handle
-	decorate-transients option
-
-	* workspace.jl, wm-spec.jl, window-history.jl, sawmill.jl,
-	sawmill-gaol.jl, open-look.jl, mwm.jl, match-window.jl,
-	ignore-window.jl, groups.jl: updated all users of the changed
-	window frame & type interfaces
-
-	[ amongst other things, these changes make changing the type of
-	a window while it's shaded work correctly ]
-
-2000-07-10  John Harper  <john dcs warwick ac uk>
-
-	* keymap.jl (quote-event): new implementation that uses event
-	replaying to forward the events, so that it works with clients
-	that don't accept synthesized events. Adapted from code posted
-	to the mailing list by Timo Korvola in March (but without the
-	complexity of also grabbing the pointer)
-
-	* x-cycle.jl (cycle-windows): grab the keyboard synchronously,
-	then if the M-TAB sequence is terminated by a non-release event
-	that doesn't have a wm binding, replay it to the focused client
-	window. Also, when calling any tail commands, ensure that
-	current-event-window returns the newly-focused window
-
-2000-07-09  John Harper  <john dcs warwick ac uk>
-
-	* version 0.30
-
-2000-07-08  John Harper  <john dcs warwick ac uk>
-
-	* functions.jl (command-sequence): new command, allows the
-	bindings ui to bind _sequences_ of commands to a single event
-
-	* viewport.jl (activate-viewport-column,
-	activate-viewport-row): new commands
-
-2000-07-06  John Harper  <john dcs warwick ac uk>
-
-	* transient.jl (map-transient-group): new function
-
-	* iconify.jl (iconify-group-mode, uniconify-group-mode): new
-	options
-
-	* groups.jl (iconify-transient-group,
-	uniconify-transient-group): new commands
-
-	* workspace.jl, custom.jl, audio-events.jl: translate some
-	strings in defcustom types
-
-	* custom.jl (custom-option-alist): added `:type*' key, similar
-	to `:type' but value isn't quoted
-
-2000-07-05  John Harper  <john dcs warwick ac uk>
-
-	* stacking.jl (stacking-constraint:transients-above-parent):
-	handle transients with more than one parent window
-	(raise-windows, lower-windows): map across the list of windows
-	twice to ensure that the optimum layout is found
-
-	* transient.jl (transient-of-p, transient-parents): new
-	functions. All these functions now understand the convention of
-	setting WM_TRANSIENT_FOR to the root window to denote that the
-	window is a transient for the whole group
-
-	* sawmill.jl: load-all "autoload" not "autoload.jl"
-
-	* workspace.jl, viewport.jl (workspace-geometry): new
-	defcustom, replaces preallocated-workspaces and
-	viewport-dimensions (which are now just defvars)
-
-	* customize.jl (customize-read-user-file): delete items whose
-	`custom-obsolete' property is set
-
-	* compat.jl: set some custom-obsolete properties
-
-2000-07-03  John Harper  <john dcs warwick ac uk>
-
-	* move-resize.jl: use constrain-dimension-to-hints instead of
-	local hack
-
-	* functions.jl (constrain-dimension-to-hints): new function,
-	implements the size hints checking correctly (I was using
-	base-size instead of min-size in some places)
-
-	* stacking.jl (transients-above): stack above parents by
-	default
-
-	* keymaps.jl: use the commands that raise a window and its
-	transients by default
-
-	* transient.jl (indirect-transient-of-p, transient-group): new
-	functions
-
-	* transient.jl
-	({raise,lower,raise-or-lower}-window-and-transients): new
-	commands
-
-	* groups.jl ({raise,lower,raise-lower}-group): use the new
-	functions for stacking lists of windows
-
-	* stacking.jl (raise-windows, lower-windows,
-	raise-lower-windows): new functions for stacking groups of
-	windows
-
-	* raise-commands.jl (raise-transients-and-pass-through-click):
-	new command
-
-2000-07-02  John Harper  <john dcs warwick ac uk>
-
-	* window-history.jl (window-history-apply): use
-	resize-window-with-hints* to apply any saved dimensions. Fixes
-	bug of making windows too small
-
-	* functions.jl (resize-window-with-hints*): new function,
-	similar to resize-window-with-hints, but with dimensions
-	specified in pixels
-
-	* version 0.29
-
-2000-07-01  John Harper  <john dcs warwick ac uk>
-
-	* gnome-int.jl (gnome-use-capplet): make this an option
-
-	* workspace.jl (activate-workspace, send-window-to-workspace,
-	copy-window-to-workspace): customizable commands
-	(select-workspace:N, send-to-workspace:N, copy-to-workspace:N):
-	deprecated, moved to compat.jl
-
-	* viewport.jl (activate-viewport, move-window-to-viewport):
-	customizable commands
-
-	* viewport-linear.jl (set-viewport-linear,
-	set-window-viewport-linear): customizable commands. Deprecate
-	the rest
-
-	* nokogiri-sawfish.jl: Set `deprecated-command' property of
-	commands that I don't want to show up in the configurator
-	(nokogiri-report-commands): new function.
-
-	* keymaps.jl (custom-get-keymap, custom-set-keymap): allow
-	non-symbol commands to pass through to the configurator if they
-	specify the type of their argument list
-
-	* functions.jl (run-shell-command): new command, forks its
-	argument using `system', is customizable
-
-	* custom.jl (define-command-args): new function, associates a
-	custom type with a command, should describe the _list_ of
-	arguments that can be given to the function (i.e. an `and'
-	widget usually)
-
-2000-06-30  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-sawfish.jl (nokogiri-report-slot): convert
-	`file-name' -> `file' and `program-name' -> `program' for
-	backwards compatibility
-
-	* frames.jl (frame-type-fallback-alist): call
-	after-setting-frame-option when this option changes
-
-	* sawmill.jl: add ~/.sawfish/lisp to load-path
-
-	* groups.jl (send-group-to-workspace): remember to tell
-	ws-move-window which workspace to move _from_. Also, don't try
-	to move sticky windows
-
-2000-06-29  John Harper  <john dcs warwick ac uk>
-
-	* match-window.jl (match-window-grab-x-property): tidied up,
-	should handle non-string properties now
-
-	* place-window.jl (place-window-centered,
-	place-window-centered-on-parent, place-window-under-pointer):
-	clamp the placement position into the current workarea (as
-	defined by the windows that must not be covered)
-
-	* functions.jl (clamp, clamp*): new functions
-
-	* x-cycle.jl, workspace.jl, wm-spec.jl, viewport.jl,
-	transient.jl, place-window.jl, nokogiri-sawfish.jl,
-	move-resize.jl, maximize.jl, iconify.jl, functions.jl,
-	frames.jl, edge-flip.jl, customize.jl, autoload.jl,
-	audio-events.jl: various changes to defcustom's, mostly just
-	trying to improve the descriptions
-
-	* gnome.jl (gnome-honour-client-state): set `ignored' as well
-	`never-focus' for SKIP_FOCUS windows
-
-	* stacking.jl (mapped-stacking-order): new function, used to
-	ignore unmapped windows when restacking
-
-2000-06-28  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-sawfish.jl: server-side functions for nokogiri
-
-	* x-cycle.jl, workspace.jl, window-history.jl, window-anim.jl,
-	viewport.jl, tooltips.jl, stacking.jl, smart-placement.jl,
-	slide-window.jl, size-window.jl, shade-hover.jl, sawmill.jl,
-	play-audio.jl, nokogiri-sawfish.jl, move-resize.jl,
-	move-cursor.jl, maximize.jl, match-window.jl, keymaps.jl,
-	iconify.jl, group-funs.jl, gnome-match.jl, functions.jl,
-	frames.jl, focus.jl, edge-flip.jl, customize.jl, custom.jl,
-	configure.jl, autoload.jl, auto-raise.jl, audio-events.jl:
-	Suitable changes for new `nokogiri' config interface
-
-	* gnome.jl (gnome-honour-client-state): SKIP_FOCUS hint now
-	sets `never-focus' property, not `ignored'
-
-2000-06-27  John Harper  <john dcs warwick ac uk>
-
-	* groups.jl (raise-lower-group): try to be cleverer about
-	detecting when to raise and when to lower. But it's still based
-	on assumptions about the constraints..
-
-	* stacking.jl (window-on-top-p, raise-lower-window): removed
-	check for window visibility to latter
-
-	* raise-commands.jl (raise-group-and-pass-through-click): new
-	command
-
-	* groups.jl (raise-group, lower-group, raise-lower-group):
-	assume less, so they work better with the new stacking code
-
-2000-06-26  John Harper  <john dcs warwick ac uk>
-
-	* stacking.jl: rewritten to be totally `constraint' based.
-	(Actually these constraints are just predicates.) Anyway, this
-	lets me generalize the layer code into one rule, and to do
-	proper stacking of transients using other rules. (So, e.g.,
-	when (eq transients-above 'parents), transient windows are
-	actually only stacked _their own_ parents -- two people asked
-	me for this today)
-
-2000-06-24  John Harper  <john dcs warwick ac uk>
-
-	* iconify.jl (iconify-ignored): new option, whether or not to
-	allow ignored windows to be iconified, nil by default. (Closes
-	bugs.gnome #11114)
-
-2000-06-23  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (frame-type-fallback-alist): map `shaded' and
-	`shaded-transient' to `shaped' and `shaped-transient'
-	respectively
-
-	* shading.jl (shade-window): give windows `shaded' or
-	`shaded-transient' type while they are shaded (not `shaped', or
-	`shaped-transient')
-
-	* frames.jl (frame-part-classes): removed the cursor
-	definitions from the `-button' classes
-
-	* sawmill.jl: fixed bug of not load-all'ing site-init within
-	the `sawfish' structure
-
-2000-06-22  John Harper  <john dcs warwick ac uk>
-
-	* stacking.jl (restack-window): new function, given a window,
-	ensure that it has a consistent place in the stacking order
-	(stacking-after-map): don't call raise-window, just use
-	restack-window to ensure consistency
-
-	* functions.jl (member-if): new function
-
-2000-06-21  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (ws-add-window): if the window has a non-null
-	set of workspaces, clear it before adding the window to each of
-	these spaces, in case (/= logical-id actual-id)
-
-	* match-window.jl: in `workspace' setter, use
-	ws-window-set-workspaces not window-add-to-workspace; also the
-	`workspaces' property must contain logical workspace ids before
-	the add-window-hook has been run
-
-	* window-history.jl: moved customizations to `placement' group.
-	Changed menu items to be `Remember foo' not `Save foo'
-
-2000-06-20  John Harper  <john dcs warwick ac uk>
-
-	* configure.jl (windows-intersect-p, window-occludes-p): new
-	functions
-	(configure-request-handler): handle the newly complex `stack'
-	field of the request (with all relations and siblings)
-
-	[ patch from Brad Thompson <yak mit edu> ]
-
-	* window-history.jl (window-history-apply): ignore `dimensions'
-	attribute if the size-hints has a `user-size' property
-
-	* stagger-placement.jl: new placement mode
-
-	* smart-placement.jl (sp-best-fit): don't discard possible
-	placement with more than the minimum overlap, keep all points,
-	but add a cost component function sp-cost:overlap that includes
-	the overlap. Currently overlap is weighted to 75%, pointer and
-	focus locality combine to give the other 25%
-
-	* place-window.jl (place-window-centered-on-parent): ensure
-	that the chosen position is never negative
-
-2000-06-19  John Harper  <john dcs warwick ac uk>
-
-	* wm-spec.jl, decode-events.jl: s/0x/#x/
-
-	* window-history.jl: ensure that our addition to
-	before-add-window-hook is added at the end of the hook (i.e.
-	after the session-management function)
-
-2000-06-18  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.jl, sawmill-gaol.jl, describe.jl: remove any
-	rep-compatibility cruft, we require 0.12 now
-
-	* window-history.jl: set the options to automatically save
-	dimensions and state to nil (since the module may sometimes
-	misidentify the `same' window)
-
-2000-06-16  John Harper  <john dcs warwick ac uk>
-
-	* version 0.28.1
-
-2000-06-15  John Harper  <john dcs warwick ac uk>
-
-	* custom.jl (custom-declare-variable): allow variables to be
-	declare in the null (top-level) group
-
-	* window-history.jl (window-history-key): for transient
-	windows, include the window title in the key
-
-	* beos-window-menu.jl (group-name): use the class name to name
-	the group when possible
-
-	* old-window-menu.jl: new file, contains the original
-	window-menu function
-
-	* sawmill.jl: set window-menu to beos-window-menu by default
-
-2000-06-13  John Harper  <john dcs warwick ac uk>
-
-	* window-history.jl: don't save the `iconified' and `shaded'
-	states (they relate to the current instance of the window
-	only). Also when restoring window state, use the current value
-	of window-history-states to decided which properties to update
-
-	* iconify.jl (iconify-workspace-windows): new command
-
-2000-06-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.28
-
-	* frames.jl (find-frame-definition): detect and abort if
-	frame-type-fallback-alist contains closed cycles
-
-2000-06-10  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (frame-type-fallback-alist): added `icon' and
-	`dock' items
-
-	* menus.jl (root-menu): added `Help' sub-menu
-
-	* help.jl: new file, some functions to launch Info nodes, web
-	pages, etc..
-
-	* gnome-int.jl: added code to use GNOME help prog and url
-	launcher; also add a couple of GNOME menus to the Help menu
-
-	* gnome-commands.jl (gnome-www-page, gnome-help-browser): new
-	commands
-
-	* decode-events.jl: support `super' modifier
-
-2000-06-08  John Harper  <john dcs warwick ac uk>
-
-	* x-cycle.jl (cycle-windows): added a handler to catch unbound
-	(non-release) events, store them, exit the command, but first
-	tail-call the command bound to the saved event
-
-	* gnome-int.jl: require customize at compile-time so that
-	variables are defined..
-
-2000-06-05  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.jl: removed setting of fonts-are-fontsets, handled by
-	C main ()
-
-2000-05-31  John Harper  <john dcs warwick ac uk>
-
-	* window-history.jl: changed the option names, added a more
-	extensive menu, with commands to explicitly save state
-
-	* sawmill-defaults.jl: load window-history module
-
-	* move-resize.jl (move-resize-motion): call
-	while-{moving,resizing}-hook _before_ updating the status
-	message
-
-2000-05-30  John Harper  <john dcs warwick ac uk>
-
-	* smart-placement.jl (sp-prune-points): if the number of points
-	is less than the maximum, randomly add points to make up the
-	distance
-
-	(sp-cost-from-distance): made this function not depend on the
-	order of its input positions (doh!)
-
-	(sp-cost-components): reversed the order of the individual
-	cells
-
-	* stacking.jl (stacking-after-map): raise the window _after_
-	possibly moving it to a higher layer (else it may end up below
-	the other windows in its layer)
-
-2000-05-27  John Harper  <john dcs warwick ac uk>
-
-	* window-history.jl: added a custom property getter for `type',
-	it groks window shading
-
-2000-05-26  John Harper  <john dcs warwick ac uk>
-
-	* place-window.jl (acceptable-placement): require the `rects'
-	feature [ patch from John H. Palmieri
-	<palmieri math washington edu> ]
-
-2000-05-25  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (display-window:uniconify-to-current-workspace):
-	new option
-	* iconify.jl (display-window-without-focusing): bind
-	uniconify-to-current-workspace to the value of the above option
-	before uniconifying
-	[ adapted from from John N S Gill ]
-
-	* prompt-extras.jl: don't bind special variables in parameter
-	lists
-
-2000-05-22  John Harper  <john dcs warwick ac uk>
-
-	* edge-flip.jl (edge-flip-warp-pointer): new option, whether or
-	not to warp the pointer to the opposite screen edge after
-	flipping (from Paul Warren <pdw ferret lmh ox ac uk>)
-
-2000-05-19  John Harper  <john dcs warwick ac uk>
-
-	* window-history.jl: ignore null keys
-
-2000-05-18  John Harper  <john dcs warwick ac uk>
-
-	* window-history.jl (window-history-apply): don't reposition
-	windows whose `placed' property is already set
-
-2000-05-17  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-gaol.jl: added some more `x' functions
-
-	* smart-placement.jl (sp-cost): split each cost component into
-	a separate function, the variable sp-cost-components tells how
-	to combine them into a single value
-
-	* rects.jl (rectangle-center, rectangle-center*): new functions
-
-	* place-window.jl (place-transient-mode): defaults to
-	centered-on-parent
-
-2000-05-16  John Harper  <john dcs warwick ac uk>
-
-	* beos-window-menu.jl: new file, replaces window-menu by
-	something that creates sub-menus by window group
-
-	* window-history.jl: use a hash table to record history
-
-2000-05-15  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-gaol.jl (sawmill-safe-specials): added batch-mode
-
-	* frames.jl (frame-type-fallback-alist): variable mapping frame
-	types to type to try if the original type isn't available in
-	the chosen frame style
-	(find-frame-definition): iterate over frame types using the
-	above variable until a frame definition is found
-	(set-window-frame-style): use find-frame-definition
-
-	Note that for this to work, themes must return `nil' when they
-	don't support the requested frame type, until now, the
-	convention had been to return the default frame definition, so
-	most if not all themes will need changing. Themes defined using
-	the themer (or gimpmill?) will still work okay
-
-	* make-theme.jl (make-theme): rewritten the returned lambda to
-	conform to the new theme conventions
-
-2000-05-14  John Harper  <john dcs warwick ac uk>
-
-	* window-history.jl: various enhancements, including: only save
-	state file if data needs updating, window-history-forget
-	command to remove saved state for a window, customizations
-	controlling what gets saved (position, size, or other)
-
-	* frames.jl (set-window-frame-style, frame-style-menu): call
-	window-state-changed-hook, with states `frame-style' and `type'
-
-	* auto-raise.jl (raise-groups-on-focus): commented out this
-	option, it causes window groups to flicker (sometimes
-	repeatedly) in certain cases due to the extra focus events it
-	causes
-
-2000-05-12  John Harper  <john dcs warwick ac uk>
-
-	* gnome-menu.jl (gnome-menu-lang): now a list of strings, made
-	by destructuring the language code, e.g. if LANG=de_DE, then
-	the list will be ("de" "de_DE")
-
-	(gnome-menu-read-desktop-entry): match encountered languages
-	against all items in gnome-menu-lang
-
-	* gnome-menu.jl, sawmill.jl: search LANGUAGE, LC_ALL,
-	LC_MESSAGES, LANG for the language code to use, in that order
-
-	* describe.jl (describe-symbol): new command, replaces
-	describe-function and describe-variable
-
-	(apropos-function, apropos-variable): moved these here from
-	rep, this is necessary for rep 0.11+
-
-	* keymap.jl (describe-key): use describe-symbol instead of
-	describe-function
-
-	* with-output.jl (define-command-to-screen): new macro, defines
-	a command that will have its output redirected to the screen,
-	given the name of an existing command to call, and an
-	interactive spec
-
-2000-05-11  John Harper  <john dcs warwick ac uk>
-
-	* focus.jl (focus-enter-fun, focus-enter-fun): generate events
-	when the root window is entered/left, enter-root and leave-root
-	(enter-exit): unfocus the window when the root window is
-	entered, as well as when the window is left
-
-	* transient.jl (transient-unmap-window): fix bug of looking for
-	window under pointer _in_ click to focus mode, it should be
-	only done when _not in_ this mode
-
-2000-05-10  John Harper  <john dcs warwick ac uk>
-
-	* window-history.jl: new file, first attempt at remembering
-	window state across window instances, still quite rough
-
-	* version 0.27.1
-
-	* 3d-hack.jl (3d-rotate flatten): use inexact->exact on
-	transformed coordinates (fixes bug introduced by rounding
-	functions now preserving inexactness)
-
-	* maximize.jl (maximize-do-horizontal, maximize-do-vertical):
-	use current-head-dimensions and current-head-offset of the
-	maximized window to give the maximization bounds
-
-	(maximize-find-max-rectangle): new optional arg HEAD, the head
-	to constrain the rectangle to. Also, the output rectangle may
-	only span a single head
-
-	(maximize-do-both): constrain the maximized window to its
-	current head
-
-	* functions.jl (current-head, current-head-dimensions,
-	current-head-offset): all now take an optional window
-	parameter, which means to find the current head in relation to
-	this window (else use the focused window)
-
-	* functions.jl (get-window-by-name-re): new function
-
-	* sawmill.jl: after renaming .sawmill -> .sawfish, create a
-	symlink .sawmill in case user code refers to it
-
-2000-05-09  John Harper  <john dcs warwick ac uk>
-
-	* version 0.27
-
-	* transient.jl (transient-unmap-window): misc improvements,
-	should fix the reported problems in click-to-focus mode
-
-	* window-order.jl (window-order-most-recent): new function
-
-	* focus.jl (focus-click): only pass events through to the
-	window if they're not bound, _and_ none of their successor
-	events (move, release, etc) are bound
-
-	* decode-events.jl (should-grab-button-event-p): new function,
-	returns t if a button event needs to be grabbed so that the
-	events that follow it are received
-
-	* transient.jl (transient-map-window): only ever focus the
-	window if it's visible (i.e. on the current workspace and not
-	iconified)
-
-2000-05-08  John Harper  <john dcs warwick ac uk>
-
-	* viewport.jl (window-outside-workspace-p): handle non-zero
-	viewport origins correctly (I think)
-
-	* iconify.jl (ws-set-client-state): add this function to
-	`map-notify-hook' instead of `add-window-hook', since the wm
-	deletes WM_STATE when windows are withdrawn (one of the
-	alternatives suggested by the icccm). This fixes the Code
-	Crusader bug
-
-2000-04-30  John Harper  <john dcs warwick ac uk>
-
-	* shade-hover.jl (shade-hover-delay): changed range lower limit
-	from one to zero (from Nils Barth <nbarth fas harvard edu>)
-
-	* stacking.jl (raise-window): check that (/= pred w) before
-	using it to raise above (else, do nothing, since it means that
-	w is already on top)
-
-2000-04-29  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (workspace-swap-in): use move-resize-window-to
-	so that window reconfiguration happens in one step, not two
-
-	* edges.jl, rects.jl: removed uses of `named let' construct,
-	only later sub-versions of required rep 0.11 support it
-
-	* stacking.jl (raise-window): should have fixed long-standing
-	problem of raising managed windows above override_redirect
-	windows (e.g. menus) in certain cases
-
-2000-04-28  John Harper  <john dcs warwick ac uk>
-
-	* functions.jl (current-head): use focused window to determine
-	current head, only use pointer position if no focused window
-
-2000-04-27  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-gaol.jl: added window-icon-image to list
-
-	* rectangles.jl (rectangle-area, rect-1d-overlap): changed from
-	macros to functions
-	(rectangle-from-coords, rectangle-corners): new functions
-	(rectangle-heads): return the number of screen heads that a
-	given rectangle appears on
-
-	* smart-placement.jl (sp-least-overlap): ignore points where
-	the window appear on more than one screen head
-
-	* edges.jl (get-visible-window-edges): when :include-root
-	option is given, include edges of all the screen's heads
-
-	* place-window.jl (place-window-randomly,
-	place-window-centered): support multi-headed screens
-
-	* functions.jl (current-head, current-head-dimensions,
-	current-head-offset): convenience functions (uses pointer
-	position to define current head)
-
-	* functions.jl (screen-dimensions): new function
-
-2000-04-26  John Harper  <john dcs warwick ac uk>
-
-	* edge-flip.jl: moved `edge-flip' group under `workspaces'
-
-	* wm-spec.jl: first attempt at implementing the new GNOME/KDE
-	window manager spec. (this spec. is not yet finalised)
-
-	* sawmill.jl: require 'define for older compilers
-
-2000-04-25  John Harper  <john dcs warwick ac uk>
-
-	* sm-save.jl, sm-init.jl, sawmill.jl, play-audio.jl, menus.jl,
-	make-theme-preview.jl, gtkrc.jl, gnome-int.jl, frames.jl,
-	customize.jl, custom.jl, compat.jl, autoload.jl, Makefile.in:
-	s/sawmill/sawfish/ where appropriate
-
-2000-04-24  John Harper  <john dcs warwick ac uk>
-
-	* tooltips.jl: put `tooltips' customization group under `misc'
-
-2000-04-20  John Harper  <john dcs warwick ac uk>
-
-	* auto-raise.jl (raise-groups-on-focus): new option (in
-	focus/advanced)
-
-	* groups.jl (raise-group, lower-group): preserve the stacking
-	order of the group, then raise/lower the indicated window
-	(raise-lower-group): new command
-
-	* group-funs.jl (windows-by-group, windows-in-group): added an
-	optional parameter `BY-DEPTH', when t the windows are returned
-	by order of depth, not creation time
-
-2000-04-18  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (workspace-menu): fixed to put the focus marking
-	asterisk when using workspace names (from John N S Gill)
-
-2000-04-17  John Harper  <john dcs warwick ac uk>
-
-	* custom.jl: require 'define to work around broken compiler
-
-2000-04-15  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-gaol.jl (sawmill-safe-functions): added
-	custom-option-alist and custom-group-option-alist
-
-	* custom.jl (custom-groups, custom-required,
-	custom-quoted-keys, custom-option-alist,
-	custom-group-option-alist): these are now lexically bound
-
-2000-04-14  John Harper  <john dcs warwick ac uk>
-
-	* play-audio.jl (play-sample): run audio playing programs
-	asynchronously so they can't block the wm
-
-	* menus.jl (popup-menu): only set the frame-draw-mutex if
-	there's a clicked frame part. This is still a kludge..
-
-	* menus.jl: added some underscores marking menu accelerators
-
-	* place-window.jl (place-window-interactively): set
-	move-outline-mode to `box' not `nil' (from Timo Korvola)
-
-2000-04-09  John Harper  <john dcs warwick ac uk>
-
-	* version 0.26
-
-	* sawmill.jl: don't load sawmill-gaol until all functions it
-	exports have been defined; set *root-structure* and
-	*user-structure* to suitable values; support load-all variants;
-	try to decide when to `load' and when to `require' command line
-	arguments
-
-	* sawmill-gaol.jl: should now support both rep 0.12+ and
-	0.11- gaols
-
-	* tooltips.jl, edge-flip.jl, customize.jl, custom.jl: minor
-	tweaks to work with modularized rep
-
-2000-03-30  John Harper  <john dcs warwick ac uk>
-
-	* gnome-menu.jl (gnome-menu-read-desktop-entry): use
-	xterm-program when starting in terminals (from James Antill)
-
-2000-03-29  John Harper  <john dcs warwick ac uk>
-
-	* decode-events.jl (decode-event): fixed typo
-
-	* play-audio.jl (play-sample-program): new variable, a program
-	to call instead of the built-in primitive-play-sample function
-
-2000-03-28  John Harper  <john dcs warwick ac uk>
-
-	* play-audio.jl, audio-events.jl: audio support (mapping events
-	to samples, finding and playing samples)
-
-2000-03-27  John Harper  <john dcs warwick ac uk>
-
-	* smart-placement.jl (sp-avoided-windows-weight): increased by
-	an order of magnitude (mentioned by Dan Winship)
-
-	* place-window.jl (place-window-randomly): use
-	maximize-find-workarea then randomize within that part of the
-	screen
-
-	* maximize.jl (maximize-find-max-rectangle): new function,
-	broken out of maximize-do-both
-	(maximize-find-workarea): new function, a nicer interface to
-	maximize-find-max-rectangle
-
-	* iconify.jl (toggle-window-iconified): new function (from
-	Jens-Ulrik Petersen <jens-ulrik petersen nokia com>)
-
-2000-03-26  John Harper  <john dcs warwick ac uk>
-
-	* x-cycle.jl (cycle-class): use window-class (avoids error if
-	any window has no WM_CLASS property)
-
-	* functions.jl (window-class): new function
-
-	* sawmill.jl: require window-anim
-
-	* window-anim.jl, anim-outline.jl: support for animations after
-	window events, and a simple example animation (only does
-	anything when iconifying windows)
-
-	* 3d-hack.jl: finally added this display hack (now rep 0.11 is
-	required)
-
-2000-03-21  John Harper  <john dcs warwick ac uk>
-
-	* window-outline.jl (draw-window-outline,
-	erase-window-outline): these are now implemented in lisp
-
-	* iconify.jl (make-window-sticky): when sticking a window not
-	on the current viewport, move it to the current viewport (from
-	merlin merlin org)
-
-	* shading.jl (raise-windows-when-unshaded): new option
-	* shade-hover.jl (shade-hover-enter): use
-	raise-windows-when-unshaded to implement the shade-hover-raise
-	option
-
-	* sawmill-gaol.jl: added safe `x' plugin functions (e.g. no
-	window creation). Also workaround some rep versions not
-	including the case special form
-
-	* gtkrc.jl (gtkrc-light, gtkrc-dark, gtkrc-mid): new color list
-	variables
-
-	* iconify.jl (display-window): split into two functions, this
-	and display-window-without-focusing
-
-	* maximize.jl (maximize-window): call display-window-without-focusing
-	on the window before maximizing it (fixes the bug of sometimes
-	changing the window's viewport)
-
-2000-03-20  John Harper  <john dcs warwick ac uk>
-
-	* tooltips.jl (tooltips-background-color): made into a defcustom
-	(tooltips-foreground-color): new option
-	[ patch from Erik Assum <erik infostream se>, with different
-	default colors ]
-
-	* workspace.jl: defvar all hooks
-
-	* x-cycle.jl (cycle-windows): add code to enter-workspace-hook
-	to try to regrab the keyboard if we had previously grabbed on a
-	window (since the window will be unmapped, thus losing the
-	grab)
-
-2000-03-14  John Harper  <john dcs warwick ac uk>
-
-	* keymap.jl (describe-key): new command
-
-	* prompt-wm.jl: small update from davep
-
-	* sawmill.jl (fontset-languages-re): added ko and zh languages
-	to this list, fixed to match xx_foo codes
-
-	* keymaps.jl (global-keymap): removed A-x binding, many systems
-	have A- and M- on the same keys
-
-2000-03-13  John Harper  <john dcs warwick ac uk>
-
-	* iconify.jl (display-window): calls prompt-for-window when
-	called interactively
-
-	* prompt-wm.jl: new file (from Dave Pearson <davep davep org>)
-
-2000-03-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.25.2
-
-	* customize.jl (customize-read-user-file): if no user file,
-	read the custom-default-file (and thus preserve any unchanged
-	default options)
-
-	* functions.jl (locate-file): new function
-
-2000-03-11  John Harper  <john dcs warwick ac uk>
-
-	* stacking.jl, rects.jl, group-funs.jl, edges.jl, custom.jl:
-	added some doc strings
-
-	* stacking.jl (stack-window-below, stack-window-above): handle
-	the case where the two windows aren't in the same layer
-
-	* with-output.jl (with-output-to-screen): new macro (from
-	Jens-Ulrik Petersen and Dave Pearson)
-
-2000-03-10  John Harper  <john dcs warwick ac uk>
-
-	* stacking.jl: avoid calling restack-by-depth since it's often
-	flickery, instead raise-window, lower-window and
-	stacking-after-map do all their own work, only ever using
-	x-raise-window or x-lower-window
-
-	* sawmill-gaol.jl (sawmill-safe-functions): added input-focus
-
-	* transient.jl (transient-unmap-window): don't try to focus
-	parent windows not on the current viewport
-
-	* iconify.jl (display-window): Unconditionally uniconify the
-	window, and do it _before_ doing anything else
-
-	* sawmill.jl (fontset-languages-re): new variable. Used to test
-	if current language needs to use FontSets (i.e. multibyte
-	encoding)
-
-2000-03-08  John Harper  <john dcs warwick ac uk>
-
-	* move-resize.jl (move-resize-update-edges): new function,
-	updates the list of window edges for snapping
-	(move-resize-window): arrange for move-resize-update-edges to
-	be called after switching workspace or viewport
-
-	* keymaps.jl (custom-get-keymap, custom-set-keymap): filter out
-	and then restore bindings to non-symbol commands (avoids trying
-	to parse commands with unreadable printed representations)
-
-	* configure.jl (configure-request-handler): use fixed-position
-	property to decide whether or not to clamp window within the
-	workspace boundaries
-
-	* workspace.jl (ws-move-window, ws-copy-window): ignore cases
-	where (= DEST SRC), handle other cases properly
-
-	* workspace.jl (send-to-previous-workspace,
-	send-to-next-workspace, copy-to-previous-workspace,
-	copy-to-next-workspace, append-workspace-and-send,
-	prepend-workspace-and-send): new optional arg SELECT, whether
-	the destination space is selected. t when called interactively
-
-2000-03-07  John Harper  <john dcs warwick ac uk>
-
-	* gnome.jl (gnome-set-workspace): never place windows on
-	workspaces that don't exist (from the pager's POV). (from Rob
-	Hodges)
-
-	* workspace.jl (ws-move-window): don't remove the window if
-	source and destination are the same (from Rob Hodges)
-
-	* smart-placement.jl (sp-prune-points): fixed this function
-	(patch from Dan Winship <danw helixcode com>)
-
-2000-03-06  John Harper  <john dcs warwick ac uk>
-
-	* viewport.jl (move-viewport-to-window): only flip viewports if
-	the window is not actually on the current viewport (from merlin)
-
-	* version 0.25.1
-
-	* configure.jl (configure-request-handler): only force the
-	window onto the workspace if it didn't explicitly set its
-	position
-
-	* sawmill-gaol.jl (sawmill-safe-features): remembered to
-	replace / with `quotient'. Real / is available as `divide'
-
-2000-03-05  John Harper  <john dcs warwick ac uk>
-
-	* version 0.25
-
-	* transient.jl (transient-unmap-window): don't try to focus
-	parent windows if they're not mapped and visible
-
-2000-03-04  John Harper  <john dcs warwick ac uk>
-
-	* customize.jl (customize-ui-spec): don't put single widgets
-	into vboxes (they don't expand properly)
-
-	* x-cycle.jl (cycle-windows): if the window that the original
-	keyboard grab was made on is unmapped, grab on the root window
-
-2000-03-02  John Harper  <john dcs warwick ac uk>
-
-	* functions.jl (warp-cursor-to-window): clamp the warp
-	coordinates to be within the screen boundaries (from Merlin)
-
-	* prompt.jl (prompt-display-fun): function to somehow format
-	the prompt contents before displaying it
-	(prompt): use call-with-keyboard-grabbed
-
-	* prompt-extras.jl (pwd-prompt): new function
-
-	* functions.jl (call-with-keyboard-grabbed): new function,
-	allows nested keyboard grabbing to work correctly (only
-	ungrabbing when the outermost exits)
-
-	* keymap.jl (read-event): use call-with-keyboard-grabbed
-
-2000-02-29  John Harper  <john dcs warwick ac uk>
-
-	* keymaps.jl (global-keymap): bind A-x to cc-with-output-to-screen
-
-	* with-output.jl (call-with-output-to-screen,
-	call-command-with-output-to-screen): new functions
-
-	* prompt.jl: Method of requesting user input, with completion,
-	validation, etc. From Topi Paavola <tjp cc jyu fi> with a bunch
-	of my dirty hacks to make it act moslty like Jade's `prompt'
-
-	* prompt-extras.jl: Some functions ported from Jade to do more
-	esoteric prompting (files, directories, from a list, etc..)
-
-2000-02-28  John Harper  <john dcs warwick ac uk>
-
-	* shade-hover.jl (shade-hover-enter): allow shade-hover to be
-	enabled by window shade-hover property
-	* match-window.jl (match-window-properties): added shade-hover
-
-	* gnome-menu.jl: on startup, arrange to read the menus off disk
-	when the wm gets its first idle cycles -- this reduces latency
-	when first displaying the root-menu
-
-2000-02-27  John Harper  <john dcs warwick ac uk>
-
-	* edges.jl (edges-within-epsilon,
-	snap-window-position-to-edges): removed the need for separate
-	`hysteresis' state, much simpler now (from merlin merlin org)
-
-	* iconify.jl (uniconify-window): if the window is already in
-	the current workspace never remove it
-
-	* edges.jl (snap-window-position-to-edges): replaced the
-	HYSTERESIS parameter by STATE. This cons cells records previous
-	delta values and any currently snapped edges
-	(edges-within-epsilon): new parameter OLD-EDGE, any previously
-	snapped edge. Use this in resistance mode when the direction
-	changes, but the pointer is still past the edge
-	(adapted from merlin merlin org)
-
-	* move-resize.jl (move-resize-snap-state): replaces the
-	hysteresis variable
-
-2000-02-26  John Harper  <john dcs warwick ac uk>
-
-	* customize.jl (customize-ui-spec): when returning a sub-group
-	get all its children as well
-	* custom.jl: the iconify and maximize groups are now sub groups
-	of the new group min-max
-	(custom-menu-includes-all-settings): new variable
-	* gnome-int.jl: use the capplet for configuring again
-
-	* workspace.jl, viewport.jl, move-resize.jl, maximize.jl,
-	grow-pack.jl: change min/max :group keys
-
-2000-02-25  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.jl: define `quotient' as `/' unless already bound
-	(backwards compatibility)
-
-	* viewport.jl, viewport-linear.jl, tooltips.jl, size-window.jl,
-	shade-hover.jl, place-window.jl, move-resize.jl, functions.jl,
-	edge-flip.jl, configure.jl, auto-raise.jl: use `quotient'
-	instead of `/' where appropriate
-
-2000-02-24  John Harper  <john dcs warwick ac uk>
-
-	* grow-pack.jl: update from Kai
-
-	* x-cycle.jl (cycle-class): new command (from Kai Großjohann)
-
-2000-02-22  John Harper  <john dcs warwick ac uk>
-
-	* configure.jl (configure-choose-gravity): new method of
-	choosing gravity from window geometry
-	(configure-request-handler): deleted the equal-ratio thing,
-	it's too complex, too many grey areas and special cases
-
-	* grow-pack.jl: new file implements ctwm-like pack and grow
-	functions, from Kai Grossjohann
-
-2000-02-21  John Harper  <john dcs warwick ac uk>
-
-	* edges.jl (get-visible-window-edges): don't include edges from
-	unmapped windows, or windows on other viewports (bug pointed
-	out by Tigert)
-
-	* edges.jl (edges-within-epsilon): only snap open edges into
-	closed edges and vice versa (and only when moving towards the
-	edge)
-
-	* configure.jl (configure-request-handler): handle all sorts of
-	weird cases for the `equal-ratio' hack (from John N S Gill
-	<jng renre com>, with extra cases added by me)
-
-	* edges.jl (snap-window-position-to-edges): new arg HYSTERESIS,
-	a cons cell to buffer deltas in (adapted from merlin merlin org)
-	* move-resize.jl (move-resize-hysteresis): new variable
-
-2000-02-20  John Harper  <john dcs warwick ac uk>
-
-	* keymap.jl (quote-event): new command
-	* keymaps.jl (window-keymap): bind `C-M-q' to quote-event
-
-	* configure.jl (configure-request-handler): avoid
-	divide-by-zero errors
-
-	* edges.jl (edges-within-epsilon): support three modes of
-	snapping now: `magnetism' (snap in and out), `resistance' (snap
-	inwards), and `attraction' (snap outwards)
-	(snap-window-position-to-edges): two extra parameters, the
-	snapping mode, and the move deltas since the last call
-
-	* move-resize.jl (move-snap-mode): new option
-	(move-resize-motion): handle the new snapping methods,
-	including saving the previous pointer position
-	(move-resize-pos): removed this function
-
-	* sawmill.jl: changed the load order (again). Load all
-	libraries _before_ loading autoloads now
-
-2000-02-19  John Harper  <john dcs warwick ac uk>
-
-	* place-window.jl (define-placement-mode): new function, used
-	for defining placement modes
-	* smart-placement.jl: use define-placement-mode
-
-	* focus.jl: reorganized, focus modes are now implemented
-	modularly, each mode as a single function. Also enable focus
-	modes to be defined on a per-window basis
-	(define-focus-mode): new function
-
-	* match-window.jl (match-window-properties): allow focus-mode
-	to be settable
-
-	* size-window.jl (size-window-vertically-plus,
-	size-window-vertically-minus, size-window-horizontally-plus,
-	size-window-horizontally-minus): new commands, to resizing as
-	slide-window is to moving
-
-2000-02-18  John Harper  <john dcs warwick ac uk>
-
-	* smart-placement.jl (sp-prune-points): use a better medthod of
-	pruning
-	(sp-make-grid): ensure the screen edges aren't pruned
-
-	* match-window.jl (match-window-properties): added
-	`auto-gravity' option
-
-	* configure.jl: don't infer gravity from position, it doesn't
-	work too well. Instead keep position of window relative to each
-	screen edge constant (unless gravity is specified)
-
-2000-02-17  John Harper  <john dcs warwick ac uk>
-
-	* match-window.jl (match-window-properties): new boolean
-	property `unique-name'
-
-	* functions.jl (uniquify-name): new function
-	(uniquify-window-name): new command
-
-	* move-resize.jl (resize-edge-mode): new option `border-grab'
-
-2000-02-16  John Harper  <john dcs warwick ac uk>
-
-	* x-cycle.jl (cycle-windows): handle multiply-modified events
-	by decoding the event fully (adapted from Timo Korvola
-	<tkorvola e math helsinki fi>)
-
-	* decode-events.jl (string->keysym, modifier->keysyms): new
-	functions
-
-	* edge-flip.jl (edge-flip-only-when-moving): new option (from
-	Yaron M. Minsky <yminsky cs cornell edu>)
-
-2000-02-15  John Harper  <john dcs warwick ac uk>
-
-	* x-cycle.jl (cycle-prefix): new command, look for a
-	colon-delimited prefix in the name of the current window, then
-	cycle around windows matching that prefix
-
-2000-02-14  John Harper  <john dcs warwick ac uk>
-
-	* version 0.24
-
-	* workspace.jl: add calls to add-to-workspace-hook and
-	remove-from-workspace-hook (they must have got deleted)
-
-2000-02-11  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-defaults.jl: remove the custom-add-required thing,
-	and don't require tooltips (custom-defaults will do this)
-
-	* sawmill.jl: do the custom-add-required thing
-
-	* sawmill.jl: require 'configure
-
-	* configure.jl (choose-window-gravity-by-position): sets window
-	gravity by the sector of the screen that the centre of the
-	window is in
-	(configure-auto-gravity): customize option controlling if the
-	above function is called automatically
-
-	* configure.jl (configure-request-handler): ConfigureRequest
-	events are now handled in software. This handler also groks
-	window gravity (default gravity may now be overridden by the
-	`gravity' window property)
-
-	* place-window.jl (adjust-window-for-gravity): look for gravity
-	first in `gravity' window property
-
-	* place-window.jl (place-window-centered-on-parent): new window
-	placement mode, option `centered-on-parent'
-
-	* move-resize.jl (resize-edge-mode): replaces options
-	resize-by-frame-class and resize-add-edges. Also allows
-	twm-style resizing (adapted from Mark Probst
-	<schani mips complang tuwien ac at>)
-
-	* decode-events.jl (decode-event, encode-events): new
-	functions, map from opaque events to symbolic forms, and back
-
-	* workspace.jl (ws-insert-workspace): fix off-by-one error if
-	no BEFORE given (from Kirk Saranathan <ksaranat yahoo com>)
-
-	* custom.jl (custom-add-to-group): don't add options more than once
-
-2000-02-10  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (window-menu): don't separate extra windows from
-	normal windows if no normal windows (adapted from James Antill)
-
-2000-02-09  John Harper  <john dcs warwick ac uk>
-
-	* match-window.jl (match-window-properties): use
-	placement-modes to get the list of placement options
-
-	* place-window.jl (place-window-under-pointer): new placement
-	mode `under-pointer'
-	(place-window-modes): new variable, the list of all placement modes
-
-2000-02-08  John Harper  <john dcs warwick ac uk>
-
-	* customize.jl (customize-spec): translate group names
-
-	* sm-init.jl (sm-init): remove -clientId as well as
-	--sm-client-id options from saved-command-line-args
-
-	* tooltips.jl (tooltips-unmapped): remove tooltips when their
-	window is unmapped
-
-2000-02-06  John Harper  <john dcs warwick ac uk>
-
-	* maximize.jl: fixed single direction maximization toggle
-	commands
-
-	* tooltips.jl: option to display actual command documentation
-	in tooltips. Use a monospaced font by default, and align the
-	columns correctly
-
-2000-02-04  John Harper  <john dcs warwick ac uk>
-
-	* transient.jl (transient-map-window): look for
-	focus-when-mapped window property
-	* match-window.jl (match-window-properties): added
-	focus-when-mapped
-
-2000-02-03  John Harper  <john dcs warwick ac uk>
-
-	* move-resize.jl, menus.jl: fixed for variables becoming
-	functions
-
-	* custom.jl (custom-default-file): new variable
-	(custom-load-user-file): if no custom-user-file, then load
-	custom-default-file (if it's non-nil)
-	* custom-defaults.jl: new file
-
-	* match-window.jl (match-window-features): new variable, map
-	properties to features to load when they're set
-
-2000-02-01  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-defaults.jl: don't (setq tooltips-enabled t)
-
-	* move-resize.jl (move-resize-inhibit-configure): new option
-
-2000-01-31  John Harper  <john dcs warwick ac uk>
-
-	* x-cycle.jl: moved customization group to the focus tree
-
-2000-01-30  John Harper  <john dcs warwick ac uk>
-
-	* shade-hover.jl (shade-hover-before): only look for a binding
-	of the current-event if the current-event actually exists
-
-	* version 0.23
-
-	* gnome-menu.jl: avoid generating empty submenus
-
-	* workspace.jl (delete-empty-workspaces): avoid infinite loop
-	when empty workspaces at ends of interesting subsequence
-
-2000-01-29  John Harper  <john dcs warwick ac uk>
-
-	* shade-hover.jl (shade-hover-raise): new option, raise windows
-	as they're unshaded
-
-	* custom.jl (custom-menu): generate a tree of menu items, not
-	just a list of the top-level groups
-
-	* shade-hover.jl: defcustom-ized (in group Focus/Shade Hover)
-	* sawmill-defaults.jl: add shade-hover to the list of features
-	required by customize
-
-	* shade-hover.jl: use window enter/notify hooks instead of
-	frame parts. This means that the window stays unshaded until
-	the pointer leaves the _entire window_
-
-2000-01-28  John Harper  <john dcs warwick ac uk>
-
-	* menus.jl (root-menu): removed the `About' menu, it didn't
-	work anymore anyway..
-
-	* iconify.jl (display-window): call uniconify-window whenever
-	the window is iconified, not only if it's also sticky or the
-	uniconify-to-current-workspace option is set
-
-	* shade-hover.jl: new file, temporarily unshades windows while
-	the pointer is over their frame
-
-2000-01-27  John Harper  <john dcs warwick ac uk>
-
-	* smart-placement.jl (sp-normal-windows-weight): new variable
-
-	* custom.jl (custom-declare-group): don't set custom-group-doc
-	of group, it's not used anywhere and is redundant
-
-	* functions.jl (warp-to-window-x-offset,
-	warp-to-window-y-offset): customization options for
-	warp-cursor-to-window (patch from Kai Großjohann
-	<Kai Grossjohann CS Uni-Dortmund DE>)
-
-	* viewport.jl (window-absolute-position): if the window is in
-	the current viewport, return the _actual_ position, in case its
-	top or left edges are off the screen
-
-	* workspace.jl (ws-move-workspace): fixed this function
-	(realized that there are four cases to the id transforms)
-
-	* gnome-int.jl: don't use the gnome cc to invoke the
-	configurator for now, they're are some issues to be resolved
-
-	* customize.jl, custom.jl: custom groups are now organized as a
-	tree. Specify the list of nodes to identify a subtree.
-	Top-level groups are still addressable as single symbols. So,
-	e.g., there's now a group `(appearance advanced)'
-
-	* keymaps.jl (custom-keymap-group-widget): fixed for tree
-	organization
-
-	* workspace.jl, move-resize.jl, functions.jl, focus.jl: moved
-	some customizations to `advanced' subgroups
-
-	* sawmill-defaults.jl: add a default set of features to
-	custom-required, if the user wants anymore, or has a
-	.sawmillrc, they'll need to do it themselves
-	* tooltips.jl, match-window.jl, edge-flip.jl, auto-raise.jl:
-	don't add their features to custom-required anymore
-
-2000-01-26  John Harper  <john dcs warwick ac uk>
-
-	* functions.jl (delete-window-safely): new command, if the
-	window doesn't support the WM_DELETE_WINDOW protocol, just beep
-
-	* viewport-linear.jl (define-linear-viewport-commands): made
-	into a user-visible function
-
-2000-01-25  John Harper  <john dcs warwick ac uk>
-
-	* functions.jl (get-window-wm-protocols): new function, returns
-	a list of atoms
-	(delete-window): now defined in lisp
-
-	* slide-window.jl: provide 'slide-window
-
-	* move-cursor.jl: new file, commands to move the cursor
-	* move-resize.jl (move-resize-map): added bindings to cursor
-	movement commands
-
-2000-01-24  John Harper  <john dcs warwick ac uk>
-
-	* x-cycle.jl (x-cycle-next): ignore windows with never-focus
-	set, for obvious reasons
-
-	* raise-commands.jl (raise-or-pass-through-click): new function
-
-	* workspace.jl (window-menu): fix bug when calling make-label
-	for sticky windows
-
-2000-01-23  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl: removed `order' from the swapped properties,
-	doesn't work very intuitively
-
-	* gnome-menu.jl: support for the `TryExec' field (from
-	Ian <ijc25 cam ac uk>)
-
-	* raise-commands.jl: new file, moves the
-	raise-window-and-pass-through-click from stacking.jl, and
-	adds raise-and-pass-through-click-if-focused
-
-2000-01-22  John Harper  <john dcs warwick ac uk>
-
-	* x-cycle.jl, move-resize.jl: require at compile time those
-	modules whose variables we bind to
-
-	* maximize.jl (maximize-window, unmaximized-window): use
-	move-resize-window-to instead of separate calls
-
-2000-01-21  John Harper  <john dcs warwick ac uk>
-
-	* window-order.jl (window-order-focus-most-recent): ignore
-	windows with their `never-focus' property set
-
-	* ignore-window.jl (toggle-window-never-focus): new command
-	* menus.jl (window-ops-toggle-menu): added `Focusable' item
-
-	* edge-flip.jl (edge-flip-while-moving): only move non-sticky
-	windows to the new workspace when flipping
-
-	* move-resize.jl, menus.jl, frames.jl: removed all uses of
-	`beep' to signal user errors, either ignore the error, or
-	signal a real error
-
-2000-01-20  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (window-menu): include iconified windows, even
-	when they're ignored; shorten sticky entries as usual (patch
-	from James Antill)
-
-	* move-resize.jl (move-resize-window): set
-	synthetic-configure-mutex to t while moving
-
-	* move-resize.jl (move-resize-finished, move-resize-apply): use
-	move-resize-window-to to do simultaneous move&resize --
-	elminates flicker
-
-	* match-window.jl: in workspace setter function, convert the id
-	from logical to physical where needed. Also, commented out the
-	call to select the workspace
-
-	* workspace.jl (workspace-id-to-logical,
-	workspace-id-from-logical): functions for converting between
-	workspace ids and offsets
-
-	* gnome-match.jl: fix the property names I'd forgotten to change
-
-	* maximize.jl (maximize-truncate-dims): fixed the truncation
-	method
-
-2000-01-19  John Harper  <john dcs warwick ac uk>
-
-	* error-handler.jl: new file, displays rep errors in a message
-	window
-
-	* version 0.22
-
-	* sawmill-gaol.jl: added most new frame-part functions
-
-	* match-window.jl: adds its hook at the _end_ of
-	before-add-window-hook
-	* gnome.jl: adds its hook at the _start_ of
-	before-add-window-hook
-
-2000-01-18  John Harper  <john dcs warwick ac uk>
-
-	* gnome-match.jl: new file, adds skip-winlist and skip-tasklist
-	properties to window matching (from Ben Liblit
-	<liblit cs berkeley edu>)
-	* gnome.jl: if match-window has already been loaded, load
-	gnome-match, otherwise arrange for gnome-match to be loaded
-	immediately after match-window
-
-2000-01-15  John Harper  <john dcs warwick ac uk>
-
-	* iconify.jl (uniconify-window): when removing a window to put
-	it onto the current workspace, ensure it's not hidden
-	temporarily
-
-2000-01-14  John Harper  <john dcs warwick ac uk>
-
-	* gnome.jl (gnome-client-message-handler): change how
-	WIN_STICKY and WIN_SHADED states are handled, don't bother with
-	the cumbersome toggle method, just set the states directly
-
-	* functions.jl (call-after-property-changed): can now be given
-	a _list_ of X properties to monitor
-	(call-after-state-changed): new function, monitors a list of
-	window states (i.e. things like iconified, shaded, ...) and
-	calls a function when any of them change. The
-	window-state-change-hook now has a second argument (apart from
-	the window), the list of symbolic states that changed
-	* iconify.jl, ignore-window.jl, maximize.jl, shading.jl,
-	stacking.jl: call window-state-change-hook with the list of
-	changed states
-	* iconify.jl, gnome.jl: use call-after-state-changed to prevent
-	updating X properties that don't need changing
-	* sticky.jl (make-window-sticky, make-window-unsticky): merge
-	sticky and sticky-viewport properties more correctly
-	* sawmill-gaol.jl: add call-after-state-changed to the list of
-	safe functions
-	[ these are mostly by James Antill <james and org> ]
-
-	* sawmill.jl: load gettext _before_ loading standard libraries,
-	otherwise many strings aren't translated up correctly
-
-2000-01-12  John Harper  <john dcs warwick ac uk>
-
-	* tooltips.jl, move-resize.jl, menus.jl: updated for changes to
-	frame-part functions
-
-2000-01-11  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-defaults.jl: removed default-font setting
-
-	* frames.jl (mark-frame-style-editable, frame-style-editable-p,
-	edit-frame-style): new functions (keeps track of which themes
-	are defined using make-theme, and hence are editable)
-	(sawmill-themer-program): variable naming program to launch to
-	edit a theme
-
-	* custom.jl (custom-menu): if the current theme is editable,
-	add an entry for the edit-frame-style command
-
-	* sawmill-gaol.jl (sawmill-safe-functions): added
-	mark-frame-style-editable
-
-2000-01-10  John Harper  <john dcs warwick ac uk>
-
-	* gnome-menu.jl (gnome-menu-read-order): ensure that blank
-	lines in .order files are ignored
-
-	* keymaps.jl (window-keymap): bind move-window-interactively to
-	M-Button1-Move not M-Button1-Click1. Pointed out by Matt Krai
-	<krai ghs com>
-
-	* gnome-menu.jl (gnome-menu-read-desktop-entry): handle null
-	names when building menu items
-
-2000-01-09  John Harper  <john dcs warwick ac uk>
-
-        * iconify.jl (toggle-single-window-mode): set
-        raise-windows-on-uniconify to nil while executing this command
-
-	* version 0.21
-
-	* iconify.jl (toggle-single-window-mode): new function
-
-	* group-funs.jl (map-other-window-groups): new function
-
-	* gnome.jl (gnome-event-proxyer): only proxy root button clicks
-	if we don't want to keep the grab so as to receive future
-	events
-
-2000-01-08  John Harper  <john dcs warwick ac uk>
-
-	* make-theme.jl (make-theme): memoize images as they're loaded
-	so each one is only loaded once (no built-in image caching
-	anymore)
-
-	* frames.jl (reload-themes-when-changed): new defcustom
-	(theme-update-interval): new variable, defaults to 60 seconds
-
-	* frames.jl (reload-frame-style): new function, reload the
-	named style, then reframe any windows using it
-
-2000-01-07  John Harper  <john dcs warwick ac uk>
-
-	* make-theme.jl (make-theme): handle the new pattern output
-	from the themer (alist of states)
-
-	* frames.jl (highlight-when-unfocused): deleted the defcustom,
-	the variable has been removed
-
-	* workspace.jl (workspace-swap-in): swap in the saved
-	properties before the geometry, so that state is set by the
-	time the window-moved and window-resized hooks are run
-
-2000-01-04  John Harper  <john dcs warwick ac uk>
-
-	* gnome-int.jl: new file, sets some things, deletes some menu
-	items; tries to integrate further with GNOME
-
-	* sawmill-defaults.jl: if it looks like we're running under
-	GNOME, require gnome-int
-
-2000-01-03  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-gaol.jl (sawmill-safe-functions): added the
-	maximization predicates
-
-	* maximize.jl (unmaximize-window): ensure that the window isn't
-	maximized-p when it's moved and resized
-
-	* make-theme-preview.jl (make-theme-preview): new optional arg TYPE
-
-	* workspace.jl (ws-add-window-to-workspace): ensure that
-	iconified windows are hidden
-	(ws-add-window): fix adding of iconified sticky	windows
-
-	* iconify.jl (uniconify-window): fix the ``uniconify to current
-	workspace'' option by reordering conditions
-
-2000-01-02  John Harper  <john dcs warwick ac uk>
-
-	* make-theme.jl: image decls now have attributes
-
-1999-12-31  John Harper  <john dcs warwick ac uk>
-
-	* make-theme.jl, make-theme-preview.jl: initial support for GUI
-	theme builder
-	* sawmill-gaol.jl: make-theme is safe to call
-
-1999-12-24  John Harper  <john dcs warwick ac uk>
-
-	* gnome.jl (gnome-set-workspace): set _WIN_AREA properties on
-	client windows; by my reading of the spec this isn't correct,
-	but the GNOME tasklist applet seems to require it
-
-1999-12-21  John Harper  <john dcs warwick ac uk>
-
-	* move-resize.jl (move-resize-map): Any-RET now completes the
-	move or resize
-
-	* tooltips.jl (tooltips-timeout-enabled): support for removing
-	tooltips after a period of time (from Morgan Schweers
-	<mrs BEST COM>)
-
-	* edge-flip.jl (edge-flip-while-moving): fixed for new
-	ws-move-window function; also, let edge-flip-delay be zero, to
-	avoid nasty delayed effects
-
-1999-12-20  John Harper  <john dcs warwick ac uk>
-
-	* match-window.jl (match-window-grab-x-property): if a string,
-	quote regexp meta-characters
-
-1999-12-19  John Harper  <john dcs warwick ac uk>
-
-	* version 0.20
-
-	* match-window.jl (match-window): fix bug when matching against
-	zero-element vectors
-
-	* match-window.jl: added new pseudo property `ungrouped'
-	meaning to put windows in their own anonymous group
-
-	* menus.jl (window-ops-menu): removed/shortened a few items
-
-1999-12-18  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl: define copy-to-workspace:N commands.
-	Fixed some problems with the merge-when-empty feature
-
-1999-12-17  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (delete-window-instance): new command
-
-	* viewport-linear.jl: new file, based on code posted by Eric
-	Kidd <eric kidd pobox com> to the mailing list
-
-	* sawmill.jl: require iconify, set define-value if unbound
-
-	* menus.jl (menu-preprocessor): removed the deprecated
-	variable-expansion thing
-
-	* iconify.jl: new file, extracted from workspace.jl
-
-	* frames.jl, custom.jl, workspace.jl: use closures to create
-	dynamic commands
-
-1999-12-16  John Harper  <john dcs warwick ac uk>
-
-	* move-resize.jl (move-resize-pos): move the position
-	calculation to a separate function, fixes the problem of
-	showing incorrect details while snapping (from merlin merlin org)
-
-	* move-resize.jl (move-resize-apply): check that the window
-	isn't being placed totally off-screen in either dimension
-
-1999-12-15  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (workspace-swap-in): handle frame-style
-	specially (use knowledge that if frame-style property isn't
-	set, then we should use the default-frame-style)
-	(add-swapped-properties): new function
-	* sawmill.jl: require 'workspace earlier
-
-	* window-order.jl, stacking.jl, shading.jl, maximize.jl,
-	frames.jl: use add-swapped-properties
-
-	* gnome.jl (gnome-set-workspace): show windows on the workspace
-	theyre currently swapped into, not the closest to the current one
-
-	* sm-init.jl (sm-add-saved-properties): only add properties once
-
-1999-12-14  John Harper  <john dcs warwick ac uk>
-
-	* tooltips.jl (tooltips-delay): reduced to 500ms
-
-	* gnome.jl (gnome-set-workspace): don't set _WIN_WORKSPACE
-	property of sticky windows
-
-	* workspace.jl: rewritten to use a cleaner set of abstractions,
-	but more importantly to allow windows to appear on multiple
-	workspaces (and to have different properties on each)
-
-	* x-cycle.jl, window-order.jl, smart-placement.jl, menus.jl,
-	match-window.jl, gnome.jl: updated to use the new workspace
-	interface
-
-	* viewport.jl (window-absolute-position): new function
-
-	* functions.jl (map-windows): new macro, map a function over
-	all windows
-
-1999-12-13  John Harper  <john dcs warwick ac uk>
-
-	* gnome-menu.jl (gnome-menu-read-desktop-entry): recurse into
-	directories if the desktop file is called ".directory", not if
-	it has Type=directory (these may actually be files)
-
-	* tooltips.jl: ignore null keymaps; yellow background color
-
-	* sawmill-defaults.jl: turn on tooltips by default
-
-	* tooltips.jl: massively simplified how we know when to remove
-	the tooltip window--just hook into pre-command-hook and
-	frame-part-leave-hook
-
-	* stacking.jl (raise-window-and-pass-through-click): only call
-	forget-button-press if a frame part isn't clicked
-
-	* gnome-commands.jl (gnome-logout): should be --kill not --quit
-	(from Jens Finke <pearl darkride net>)
-
-1999-12-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.19
-
-	* x-cycle.jl: disable tooltips while cycling
-
-	* tooltips.jl: new file, implements tooltips for frame parts
-	with keymaps
-
-	* window-order.jl: hack around the annoying behaviour when
-	switching workspace with sticky windows existing
-
-	* move-resize.jl (move-resize-window): if
-	move-resize-raise-window is set, and mode is not opaque, then
-	raise the window _after_ the move/resize
-
-1999-12-10  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (window-in-workspace-p,
-	windows-share-workspace-p): new functions, first attempt at
-	abstracting workspace interface; only gnome.jl groks the
-	`workspace' property now (though others use it as a black box)
-
-	* x-cycle.jl, window-order.jl, stacking.jl, smart-placement.jl:
-	use window-in-workspace-p and windows-share-workspace-p
-
-	* select-window.jl, move-resize.jl: the foo-cursor-shape
-	variables may now contain actual cursor objects
-
-	* custom.jl (custom-menu): gettextized a string
-
-1999-12-09  John Harper  <john dcs warwick ac uk>
-
-	* gnome-menu.jl (gnome-menu-read-directory): sort entries whose
-	order wasn't specified by a `.order' file
-
-	* keymaps.jl (custom-set-keymap): ensure that we ungrab the
-	keymap _before_ destructively modifying the original value, not
-	afterwards
-
-	* workspace.jl (ws-set-client-state): WM_STATE property should
-	have two values, not only one
-
-	* customize.jl (default-bevel-percent): defcustom for this new
-	built-in variable
-
-1999-12-08  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.jl: recognize -clientId as a synonym for
-	--sm-client-id; always look for --disable-nls option
-
-	* menus.jl (window-ops-toggle-menu): into a separate variable
-
-	* match-window.jl: added `never-focus'; added `size' pseudo
-	property; negative `position' components count in from the
-	right/bottom
-
-	* gnome.jl (gnome-honour-client-state): recognize panel and gmc
-	icons by WM_CLASS. Set `never-focus' property of icons
-
-	* gnome-commands.jl (gnome-logout): new command
-
-	* functions.jl (window-really-wants-input-p): look for a
-	property `never-focus'
-	(resize-window-with-hints): resize window by increments
-
-	* focus.jl: add `never-focus' to the properties saved with the
-	session
-
-	* stacking.jl (raise-window-and-pass-through-click): call
-	forget-button-press so that double-clicks pass through okay
-
-1999-12-07  John Harper  <john dcs warwick ac uk>
-
-	* auto-raise.jl (raise-windows-on-focus): this may no longer be
-	a regexp, instead there's a window property `raise-on-focus'
-	allowing per-window settings
-	* move-window.jl, x-cycle.jl (move-resize-window,
-	cycle-windows): disable auto-raising when appropriate
-	* match-window.jl: added new property `raise-on-focus'
-
-	* frames.jl (define-frame-class): if creating a keymap, make
-	its variable special
-
-	* match-window.jl (match-window-grab-x-property): new function,
-	used by the ui to grab properties
-
-	* custom.jl (custom-declare-variable): fix conversion of old
-	`set' types to the new method
-
-1999-12-06  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (define-frame-class): if creating a keymap, add it
-	to the gaolled environment
-
-	* menus.jl (popup-apps-menu): fixed (from Gérard Milmeister
-	<gemi bluewin ch>)
-
-1999-12-05  John Harper  <john dcs warwick ac uk>
-
-	* version 0.18
-
-	* x-cycle.jl, move-resize.jl, keymap.jl: replaced show-message
-	by display-message
-
-	* menus.jl (window-ops-menu, root-menu): just use function
-	names of dynamic sub-menus, don't create closures
-
-1999-12-04  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (rebuild-frames-with-style,
-	reframe-windows-with-style): new functions
-
-	* maximize.jl (maximize-window): respect the window's size
-	hints, both to see if the window is maximizable, and to
-	truncate the maximized dimensions to an integral size
-
-1999-12-03  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (select-workspace): only hide/show windows whose
-	`placed' property is set
-
-	* x-cycle.jl (x-cycle-modifier-alist): support the Hyper
-	modifier
-
-	* workspace.jl (ws-after-removing-window): fix the logic
-	deciding when it's necessary to switch workspaces after merging
-
-	* x-cycle.jl (cycle-windows): grab the keyboard to the
-	currently focused window, prevents the ``lose focus with a
-	single bug''
-
-	* move-resize.jl (resize-add-edges): new option, controls
-	whether single direction resizes can be upgraded to two
-	directions
-
-	* smart-placement.jl (sp-max-queued-events): increased from 20
-	to 256, seems to still have the desired effect (passes the
-	`gimp /usr/share/pixmaps/*.png &' test)
-
-1999-12-02  John Harper  <john dcs warwick ac uk>
-
-	* match-window.jl: added pseudo-properties: position and
-	viewport
-
-	* workspace.jl, viewport.jl, gnome.jl, focus.jl: changed
-	property names: fixed-position => sticky-viewport, and
-	focus-proxy-click => focus-click-through
-
-	* menus.jl (menu-preprocessor): deprecated the ``expand
-	variables when first in list'' behaviour, it's too crufty to
-	live. Now we have lisp-1 behaviour it's possible to expand
-	variables when the list is dotted to them, as was previously
-	done only for functions
-	* gnome-menu.jl: changed how apps-menu is hijacked
-
-	* workspace.jl, transient.jl, stacking.jl, group-funs.jl,
-	functions.jl, frames.jl: removed all the auto-foo-alist and
-	bar-windows-re variables -- match-window can do all this stuff
-	in one place
-
-	* frames.jl (site-theme-directory): new variable, put in the
-	theme-load-path, set to ${prefix}/share/sawmill/themes by default
-
-1999-12-01  John Harper  <john dcs warwick ac uk>
-
-	* match-window.jl: added customize support
-
-	* custom.jl: deprecated the `(set SYMBOLS..)' type, replaced by
-	`symbol' with an extra tag `:options (SYMBOLS...)'
-	(custom-get-options, custom-add-option): new macros for
-	extending symbol-type defcustom's
-
-	* workspace.jl, stacking.jl, place-window.jl, move-resize.jl,
-	focus.jl, edge-flip.jl, customize.jl: work with the new
-	`symbol' custom type
-
-1999-11-30  John Harper  <john dcs warwick ac uk>
-
-	* match-window.jl: new file, a method of matching windows (by
-	their X properties) to sawmill window properties without the
-	need for custom hook functions. Will get a GUI at some point
-
-1999-11-29  John Harper  <john dcs warwick ac uk>
-
-	* functions.jl (warp-cursor-to-window): rewritten in lisp; also
-	when given no position it focuses on the inside top-left corner
-	of the frame, should overlay more frame styles
-
-	* maximize.jl (maximize-expand-edges): fix typos from updates
-	for single namespace (Gérard Milmeister <gemi bluewin ch>)
-
-	* workspace.jl: reworked the map-notify and unmap-notify hook
-	functions; they work again now
-
-	* compat.jl (show-message): implemented in terms of the new
-	display-message function
-
-1999-11-28  John Harper  <john dcs warwick ac uk>
-
-	* version 0.17
-
-	* menus.jl (window-ops-menu): added some more `Toggle' items
-
-	* ignore-window.jl: new file, mostly by Julian Missig
-	<julian linuxpower org> (X-ViRGE) controls the `ignored'
-	property of windows on-the-fly
-
-	* gnome.jl: call gnome-set-client-list from the
-	workspace-state-change-hook
-
-	* gnome-commands.jl: new file, a few commands to toggle the
-	skip-tasklist and skip-winlist hints
-
-1999-11-26  John Harper  <john dcs warwick ac uk>
-
-	* keymaps.jl (custom-set-keymap): catch and ignore errors when
-	parsing event descriptions
-
-	* place-window.jl (place-window): adjust position for window
-	gravity (mostly from merlin <merlin merlin org>)
-
-	* slide-window.jl: new file, commands to move windows/groups
-	incrementally
-
-1999-11-25  John Harper  <john dcs warwick ac uk>
-
-	* x-cycle.jl, workspace.jl, window-order.jl, viewport.jl,
-	transient.jl, stacking.jl, smart-placement.jl, sm-save.jl,
-	sm-load.jl, sm-init.jl, shading.jl, server.jl, sawmill.jl,
-	sawmill-gaol.jl, rects.jl, place-window.jl, open-look.jl,
-	mwm.jl, move-resize.jl, menus.jl, maximize.jl, keymaps.jl,
-	keymap.jl, gtkrc.jl, groups.jl, group-funs.jl, gnome.jl,
-	gnome-menu.jl, functions.jl, frames.jl, focus.jl, edges.jl,
-	edge-flip.jl, customize.jl, custom.jl, auto-raise.jl: updated
-	for single namespace and scheme-like function semantics
-
-1999-11-20  John Harper  <john dcs warwick ac uk>
-
-	* x-cycle.jl, workspace.jl, move-resize.jl, maximize.jl,
-	group-funs.jl, frames.jl, edge-flip.jl, customize.jl: rewrote
-	documentation for some options
-
-1999-11-19  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.jl: check LC_ALL and LC_MESSAGES before LANG
-
-	* gnome-menu.jl (gnome-menu-lang): look in LC_ALL before LANG
-	(gnome-menu-read-desktop-entry): accept wider language types
-
-	* sm-init.jl (sm-init): use process-id instead of getpid
-
-	* viewport.jl, custom.jl: remerged viewport and workspace
-	custom groups
-
-	* viewport.jl (window-outside-workspace-p): fixed for off left
-	or top of workspace
-
-	* sawmill.jl: load i18n support when $LANG is defined and != `C'
-
-1999-11-18  John Harper  <john dcs warwick ac uk>
-
-	* transient.jl, auto-raise.jl: change some custom docs
-
-	* workspace.jl, menus.jl, keymap.jl, group-funs.jl,
-	gnome-menu.jl, frames.jl, customize.jl: mark strings for i18n
-
-	* frames.jl (find-all-frame-styles): sort case-insensitively
-
-1999-11-17  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-gaol.jl (sawmill-safe-functions): removed window-put
-
-	* stacking.jl (raise-window-and-pass-through-click): new
-	command
-
-1999-11-15  John Harper  <john dcs warwick ac uk>
-
-	* gtkrc.jl: call gaol-rebuild-environment after being loaded
-
-	* sawmill-gaol.jl: added the gradient functions to the list
-	(since the gaol now handles non-fboundp functions)
-
-1999-11-11  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (themes-are-gaolled): new variable, set it to nil
-	to remove the gaol around loaded themes
-
-	* sawmill-gaol.jl: new file, customize rep's gaol for sawmill
-	* sawmill.jl: require sawmill-gaol
-
-	* functions.jl (call-after-property-changed): new function, a
-	safe alternative to property-notify-hook (only accepts closures)
-
-	* gtkrc.jl: add safe functions and variables to the gaol
-	(gtkrc-call-after-changed): safe alternative to gtkrc-changed-hook
-
-1999-11-10  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl, menus.jl, group-funs.jl, gnome-menu.jl,
-	frames.jl, custom.jl: updated for lexically scoped rep
-
-1999-11-09  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (ws-window-mapped): call ws-add-window to move
-	the window to the correct workspace
-
-	* place-window.jl: fix interactive placement
-
-	* gnome-menu.jl (gnome-share-directory): fix PATH searching
-
-1999-11-07  John Harper  <john dcs warwick ac uk>
-
-	* version 0.16
-
-	* gtkrc.jl: moved some code back to the gtk theme, since it's
-	pretty non-reusable; don't load bg pixmaps unless asked to by
-	the theme; new variable gtkrc-base
-
-1999-11-06  John Harper  <john dcs warwick ac uk>
-
-	* group-funs.jl: added a third type of group id: symbols for
-	user defined named groups, only these are session-managed
-	(auto-group-alist, persistent-group-ids): new variables
-
-	* functions.jl (get-window-by-id): deleted, now a subr
-
-	* group-funs.jl: moved all window groups functions froms
-	functions.jl to this new file. Added support for user-defined
-	groups--the `group' property may define the group-id of a
-	window (so far always an integer, but eq is okay)
-	* sawmill.jl: require 'group-funs
-
-	* menus.jl (window-ops-menu): slightly reorganised, added a
-	submenu for the window's group
-
-1999-11-05  John Harper  <john dcs warwick ac uk>
-
-	* x-cycle.jl (cycle-group): new command, cycle through all
-	windows in the group of the current window
-
-	* x-cycle.jl (x-cycle-next): abort immediately if there's no
-	windows to cycle through
-
-	* place-window.jl: placement modes are now defined by symbols
-	having the `placement-mode' property--a function to call
-
-	* smart-placement.jl (place-window-first-fit-or-interactive):
-	new placement mode, fall back to interactive placement if
-	there's not enough space for the window
-
-	* move-resize.jl (move-cursor-shape, resize-cursor-shape): new
-	variables
-	* select-window.jl (select-window-cursor-shape): new variable
-
-1999-11-04  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (iconify-whole-group, uniconify-whole-group):
-	new options
-	(make-window-sticky, make-window-unsticky): new commands
-	(uniconify-to-current-workspace, raise-windows-on-uniconify,
-	focus-windows-on-uniconify): moved to iconify group
-
-	* groups.jl: new file, provides window-group variants of many
-	window commands
-
-	* functions.jl (transients-are-group-members): new option, put
-	transient windows in the same group as their parent window
-
-	* custom.jl: added `iconify' group
-	* viewport.jl (uniconify-to-current-viewport): moved to iconify
-	group
-
-	* menus.jl (popup-menu): when specifying a position, ensure
-	that it's not less than zero
-
-	* functions.jl (windows-in-group, map-window-group): new
-	functions
-
-	* menus.jl (popup-menu): ungrab the keyboard as well as the
-	pointer
-
-1999-11-03  John Harper  <john dcs warwick ac uk>
-
-	* gtkrc.jl (gtkrc-background-colors): new variable, always set
-	to the list of background colors
-
-	* frames.jl (theme-suffix-regexps): fixed for `.tar' suffix
-
-1999-11-02  John Harper  <john dcs warwick ac uk>
-
-	* edge-flip.jl: reinstated the separate edge-flip custom group
-
-	* gnome-menu.jl: scan $PATH for gnome-share-directory, added
-	/etc/X11/applnk to list of directories, added code to merge
-	duplicated sub-menus
-
-	* move-resize.jl (move-resize-window): don't abort if it's not
-	possible to grab the keyboard, only the ESC binding depends on it
-
-	* edge-flip.jl (edge-flip-type): new option, allows the user to
-	choose to flip workspaces, not viewports
-
-1999-11-01  John Harper  <john dcs warwick ac uk>
-
-	* gnome-menu.jl: catch and ignore errors when opening files
-
-	* maximize.jl (maximize-fill-window): use dont-avoid-ignored
-	variable instead of non-existent avoid-ignored
-
-	* functions.jl (dont-avoid-ignored): set to t by default
-
-	* frames.jl (find-all-frame-styles): ignore duplicates
-
-1999-10-31  John Harper  <john dcs warwick ac uk>
-
-	* version 0.15
-
-	* move-resize.jl (move-resize-motion): use call-window-hook to
-	invoke the while-moving-hook and while-resizing-hook
-
-	* sawmill.jl (fallback-frame-style): now set to microGUI
-
-	* keymaps.jl (custom-set-keymap): preserve eq-ness of old and
-	new keymap when overwriting an existing keymap definition
-
-1999-10-30  John Harper  <john dcs warwick ac uk>
-
-	* custom.jl: added a viewport customization group
-	* viewport.jl, edge-flip.jl: options now in viewport group
-
-	* edge-flip.jl: only require things when they're actually
-	needed
-
-	* menus.jl: removed the unneeded custom-require autoload
-
-	* edge-flip.jl: let this be enabled/disabled via customization
-
-	* frames.jl (frame-style-directory): themes in tar files are
-	now expected to have a top-level directory with the same name
-	as the theme
-
-1999-10-29  John Harper  <john dcs warwick ac uk>
-
-	* move-resize.jl (move-resize-motion): when only one edge is
-	being resized, and the pointer moves past the end of that edge,
-	start resizing that edge as well
-
-	* workspace.jl (delete-empty-workspaces): new command
-
-	* focus.jl (focus-push-map, focus-pop-map): functions for
-	installing and remove the click-to-focus map, they preserve the
-	original keymap
-
-1999-10-28  John Harper  <john dcs warwick ac uk>
-
-	* smart-placement.jl (sp-make-grid): sort the grid (so
-	first-fit always works from top-left)
-
-	* viewport.jl (window-outside-viewport-p): don't include
-	windows at the left border of the next viewport (from Andreas
-	Degert <ad papyrus-gmbh de>)
-
-	* custom.jl: removed support for old-style ~/.sawmill-custom
-	files
-
-	* focus.jl (click-to-focus-keymap): only bind the first three
-	mouse buttons (the others are often apparently used for the
-	wheel thing)
-
-1999-10-27  John Harper  <john dcs warwick ac uk>
-
-	* rects.jl (rectangles-from-windows): replace the weight-alist
-	parameter by weight-fun, an optional function to return the
-	window's weight
-
-	* functions.jl (avoided-windows-re, window-avoided-p,
-	avoided-windows): moved from maximize.jl and generalized,
-	property to set is now `avoid' instead of `maximize-avoid'
-	* maximize.jl: use the common avoided windows mechanism
-	* gnome.jl: set `avoid' property not `maximize-avoid'
-
-	* smart-placement.jl (sp-important-windows,
-	sp-auto-weight-alist): deleted these variables, any windows
-	that aren't avoided-p get given weight sp-avoided-windows-weight;
-	other windows can have their `placement-weight' property set
-
-	* stacking.jl (transients-above): changed default value to none
-
-	* move-resize.jl: use query-button-press-pointer instead of
-	query-last-pointer
-
-	* maximize.jl (maximize-avoided-windows): don't include
-	unmapped windows
-
-	* maximize.jl (maximize-expand-edges): rewrote the (not
-	maximize-always-expands) case, so that it works (find the
-	largest gap)
-
-1999-10-26  John Harper  <john dcs warwick ac uk>
-
-	* sm-load.jl (sm-match-window-to-alist): match isn't successful
-	_unless_ either SM_CLIENT_ID or WM_COMMAND matches
-
-	* move-resize.jl (move-resize-motion): call while-moving-hook
-	or while-resizing-hook in between erasing the old outline and
-	drawing the new one
-
-	* edge-flip.jl (edge-flip-while-moving): make edge flipping
-	work while dragging windows
-
-	* maximize.jl (maximize-expand-edges): fix problem with
-	immediately adjacent edges being ignored
-
-	* functions.jl (uniquify-list): new function
-	* edges.jl, rects.jl (grid-from-edges, grid-from-rectangles):
-	uniquify the grid
-
-1999-10-25  John Harper  <john dcs warwick ac uk>
-
-	* version 0.14.2
-
-	* maximize.jl (maximize-do-both): sort grid before passing it
-	to rectangles-from-grid, this stops things going _really_
-	ballistic
-
-	* edge-flip.jl: new file, viewport flipping by pushing the
-	pointer against the screen edges
-
-	* viewport.jl (set-screen-viewport, move-viewport): document
-	that these now return t if they actually move the viewport
-
-	* version 0.14.1
-
-	* maximize.jl (maximize-do-both): only choose rectangles that
-	are fully on the screen
-
-	* rects.jl (rect-wholly-visible-p): new function
-
-	* rects.jl (rectangles-from-grid): fixed this function (only
-	traversing the list of y points once)
-
-	* smart-placement.jl (sp-do-placement): fix for when
-	sp-important-windows is nil
-
-	* maximize.jl (maximize-do-both): deleted unused `center'
-	variable
-	(maximize-window): delete the window itself from the list of
-	avoided windows
-	(both from Rob Hodges <s323140 student uq edu au>)
-
-1999-10-24  John Harper  <john dcs warwick ac uk>
-
-	* version 0.14
-
-	* workspace.jl (static-workspace-menus): expanded some items
-	* menus.jl (root-menu): swapped position of Workspace and
-	Window menus
-
-	* place-window.jl (place-window-interactively): swallow any
-	pending X events before doing the interactive placement
-
-	* frames.jl: reframe the window when it's shape changes (in
-	case it changed from unshaped to shaped, or vice versa)
-
-	* move-resize.jl (resize-by-frame-class): new option, link
-	edges moved when resizing to the clicked frame part, not to the
-	mouse position (so the behaviour matches the cursor shape)
-
-1999-10-23  John Harper  <john dcs warwick ac uk>
-
-	* menus.jl (window-ops-menu): cleaned up a bit; added some more
-	items
-
-	* stacking.jl (transients-above): replaces the
-	transients-above-parents option
-
-	* viewport.jl (uniconify-to-current-viewport): new option
-
-	* stacking.jl (raise-window-depth): add restack-by-depth to the
-	after-initialization-hook
-
-1999-10-22  John Harper  <john dcs warwick ac uk>
-
-	* maximize.jl (maximize-avoided-windows): look for a
-	maximize-avoid property
-
-	* gnome.jl (gnome-honour-client-state): for panel windows, set
-	the focus-proxy-click and maximize-avoid properties
-
-	* menus.jl: set frame-draw-mutex while menus are popped up
-
-	* keymaps.jl (menu-button-keymap): bind popup-window-menu to
-	`Button1-Click1' instead of `Button1-Off'
-
-	* sawmill.jl: if the root window has any property whose name
-	starts with `GNOME_', then require 'gnome
-
-	* menus.jl (popup-menu): if the menu is popped from a frame
-	part whose class ends in `-button', align the menu to the
-	bottom-left corner of the button
-
-1999-10-21  John Harper  <john dcs warwick ac uk>
-
-	* maximize.jl (maximize-ignore-when-filling): new option, other
-	cleanups
-
-	* custom.jl: added `maximize' group
-	* move-resize.jl (move-lock-when-maximized): now in maximize
-	group
-
-	* maximize.jl: handle 2D maximization separately, look for the
-	largest rectangle that doesn't contain any reserved windows
-
-	* rects.jl: new file, operations on rectangles, some functions
-	copied from smart-placement.jl and renamed, some new functions
-	* smart-placement.jl: use rects.jl
-
-	* edges.jl (grid-from-edges): new function
-
-1999-10-20  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (def-frame-class): new macro
-
-	* keymaps.jl (window-keymap): bind popup-window-menu to
-	button-press not button-release event
-
-	* move-resize.jl (move-lock-when-maximized): new option, lock
-	geometry on x/y/both axes depending how the window is maximized
-	* menus.jl (popup-menu): pass the server timestamp argument
-	across
-
-	* maximize.jl: discard/update maximized window state when
-	window is moved or resized
-
-	* move-resize.jl: call hooks before-move-hook, after-move-hook,
-	before-resize-hook, and after-resize-hook
-
-	* maximize.jl (maximize-avoided-windows-re): new option,
-	controls which windows shouldn't be obscured when maximizing.
-	Also added `maximize-fill' commands, these maximize a window
-	without obscuring any other windows. 2D maximization is treated
-	as two 1D maximizations, this is sub-optimal..
-	* menus.jl (window-ops-menu): added maximize-fill menus
-
-	* edges.jl (get-visible-window-edges): new arg :windows,
-	supplies the list of windows to include. The edge structure is
-	now (X Y1 Y2 OPEN-P) or equiv. where OPEN-P defines if the edge
-	opens or closes a window
-
-1999-10-19  John Harper  <john dcs warwick ac uk>
-
-	* move-resize.jl (move-resize-roundup): take an optional MAX
-	argument, from the window's size hints
-
-	* place-window.j: added `centered' placement style
-
-	* menus.jl (popup-menu): if the spec is a function, call it
-
-1999-10-18  John Harper  <john dcs warwick ac uk>
-
-	* viewport.jl: added window-order-focus-most-recent to the
-	viewport-moved-hook
-
-	* gtkrc.jl (gtkrc-apply-style): fall back to default-font if
-	the gtk style font isn't available
-
-1999-10-17  John Harper  <john dcs warwick ac uk>
-
-	* version 0.13
-
-	* stacking.jl, transient.jl: moved the code to handle raising
-	transient windows on mapping to stacking.jl, renamed
-	transient-layer-delta as transient-depth, this is now the
-	_minimum_ depth
-
-	* frames.jl: support for loading themes stored in tar files
-
-	* gnome.jl (gnome-honour-client-state): disable use of the
-	_WIN_MAXIMIZED_ hints, since it doesn't work properly, and it
-	breaks other stuff
-
-1999-10-15  John Harper  <john dcs warwick ac uk>
-
-	* transient.jl (transient-layer-delta): new variable
-	(transient-map-window): don't only raise windows with parents
-
-	* Makefile.in: use old method of compiling lisp files, just
-	call compile-lib-batch
-
-	* compat.jl: new file, provide some compatibility for obsolete
-	functions
-	* sawmill.jl: require 'compat
-
-	* workspace.jl: renamed ws-workspace-limits as workspace-limits
-	and ws-workspace-empty-p as workspace-empty-p
-
-1999-10-14  John Harper  <john dcs warwick ac uk>
-
-	* smart-placement.jl (sp-max-queued-events): new variable, acts
-	as a throttle, revert to random placement when more than this
-	many X events are pending
-
-	* transient.jl (transient-unmap-window): added to
-	iconify-window-hook
-
-	* frames.jl (set-frame-part-value): new function
-
-1999-10-13  John Harper  <john dcs warwick ac uk>
-
-	* sm-init.jl (sm-after-restore-hook): new hook
-
-	* window-order.jl: after loading session compress the stack
-	(window-order-compress): remove `order' properties of windows
-	not in the order stack
-
-	* move-resize.jl: typing `ESC' during move/resize cancels the
-	operation, restoring the original geometry
-
-	* workspace.jl (select-workspace): only call
-	window-order-focus-most-recent if not in enter-exit focus mode
-
-	* transient.jl (transient-unmap-window): unless enter-exit
-	focus mode, refocus the most recently focused window
-
-	* smart-placement.jl (sp-prune-points): try to prune the grid
-	of tested positions (otherwise the algorithm becomes
-	intractable for large numbers of windows)
-
-	* gnome.jl: don't use WIN_AREA to preserve window->viewport
-	mapping during restart
-
-	* viewport.jl: don't move all windows to single viewport on
-	exit
-	(move-window-to-current-viewport): only move if the window is
-	really outside the viewport
-
-	* stacking.jl: hook into map-notify-hook instead of
-	reparent-notify-hook (which isn't called any longer)
-
-	* gnome.jl (gnome-set-client-list): include ignored clients
-	(gnome-ignored-windows-in-client-list): new variable, defaults
-	to t
-
-1999-10-12  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (highlight-when-unfocused): declare this option
-
-	* viewport.jl (window-outside-workspace-p): fix bug
-
-	* workspace.jl (ws-move-window): only move a window if it's not
-	already on the destination workspace
-
-	* viewport.jl (window-viewport): new function
-
-	* gnome.jl: use _WIN_AREA properties on windows to preserve
-	window->viewport mapping during restart
-
-	* viewport.jl (viewport-before-exiting): add this to the
-	before-exit-hook instead of an anonymous function
-
-1999-10-10  John Harper  <john dcs warwick ac uk>
-
-	* version 0.12
-
-	* workspace.jl (ws-add-window): if window is iconified hide it
-	(ws-remove-workspace): twiddle first-interesting-workspace if
-	necessary
-
-	* workspace.jl (ws-saved-state): fixed
-
-	* customize.jl (default-font): add after-setting-frame-option
-	as :after-set function
-
-1999-10-08  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (select-workspace): grab the server while
-	hiding/showing windows, should decrease the actual number of
-	grabs required
-
-	* functions.jl (ignore-window-input-hint): t by default (law of
-	least-surprises..)
-
-1999-10-07  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (window-type): handle the decorate-transients
-	property here now, instead of in set-window-frame-style
-
-	* place-window.jl (place-window): ignore-program-position may
-	now be set for each window
-	(place-window-randomly): handle dimensions >= the screen
-	* smart-placement.jl (sp-do-placement): handle window
-	dimensions near or greater the screen size better
-
-	* workspace.jl (lock-first-workspace): enabled by default (too
-	many people think the other behaviour is a bug)
-
-	* viewport.jl (window-outside-viewport-p): new function
-
-	* window-order.jl (window-order): new optional arg ALL-VIEWPORTS
-
-	* x-cycle.jl (cycle-all-viewports): new option
-
-	* workspace.jl (lock-first-workspace): this option now locks
-	the last interesting workspace as well as the first
-	(ws-normalize-indices): normalise the first- and
-	last-interesting-workspace variables
-	(ws-load-state): don't treat saved workspace indices as logical
-	indices (this could merge workspaces)
-
-	* frames.jl (frame-style-menu): affect the current-event-window
-	instead of the input-focus
-
-	* gnome.jl: map _WIN_HINTS_SKIP_FOCUS to our ignored property,
-	remove hack of matching window names
-
-1999-10-06  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (window-type-remove-title,
-	window-type-remove-border): map shaped-transient to unframed
-
-	* gnome-menu.jl (gnome-menu-read-desktop-entry): bug fix when
-	type isn't specified
-
-	* menus.jl (popup-apps-menu): new command
-
-1999-10-05  John Harper  <john dcs warwick ac uk>
-
-	* gnome.jl: set the _WIN_UNIFIED_AREA root property; I'm using
-	this to tell desk-guide to move the viewport on all desktops at
-	once, this may have to change..
-
-	* x-cycle.jl (cycle-disable-auto-raise): new option
-
-	* x-cycle.jl: use the new window-order code for maintaining the
-	stack
-
-	* workspace.jl (ws-move-window): new optional arg, WAS-FOCUSED,
-	when t the window is refocused when moved to the new space
-	(select-workspace): new optional arg DONT-FOCUS, if nil the
-	most recently used window on the new workspace is focused
-
-	* workspace.jl: when moving windows, try to preserve focus
-	where desirable
-
-	* window-order.jl: new file, generalize interface to the stack
-	of most recently used windows kept by the cycle-windows
-	function
-
-	* focus.jl (focus-in-fun): unless focus-dont-push is set, add
-	the focused window to the top of the order stack
-
-	* version 0.11
-
-	* workspace.jl (lock-first-workspace): new option
-
-	* transient.jl: put transient-add-window in the
-	before-add-window-hook instead of the add-window-hook
-
-1999-10-04  John Harper  <john dcs warwick ac uk>
-
-	* functions.jl (window-really-wants-input-p): new function,
-	calls window-wants-input-p unless the
-	`ignore-window-input-hint' option, or window property, is t
-	* x-cycle.jl, workspace.jl, transient.jl, focus.jl: use
-	window-really-wants-input-p instead of window-wants-input-p
-
-	* x-cycle.jl (cycle-warp-pointer, cycle-focus-windows): new
-	options
-
-	* version 0.10.1
-
-	* smart-placement.jl (sp-do-placement): if no position with
-	padding, try without padding
-
-	* gnome.jl (gnome-set-workspace): delete the _WIN_WORKSPACE
-	property of sticky windows
-
-	* workspace.jl (ws-add-window): ensure that sticky windows are
-	added to no workspaces and are visible
-
-1999-10-03  John Harper  <john dcs warwick ac uk>
-
-	* version 0.10
-
-	* workspace.jl (auto-workspace-alist): new variable, maps
-	window names to the workspace they should start on
-
-	* gnome.jl (gnome-honour-client-state): when _WIN_WORKSPACE is
-	set, just set the window's `workspace' property
-
-	* smart-placement.jl (sp-important-windows-weight): new
-	variable, also, changed the weight from 1000 to 10
-	(sp-auto-weight-alist): new variable, map window names to
-	overlap weights
-	(sp-do-placement): truncate the window's dimensions to those of
-	the screen
-
-	* menus.jl: instead of saving and restoring the _focused_
-	window while the menu is popped, save the window that gave us
-	the current event, then reinstate it when dispatching the
-	selected command
-
-	* workspace.jl: replace all %f interactive decls by %W
-
-	* keymaps.jl: noted in doc strings that certain keymaps are
-	only useful for mouse-bindings
-
-	* viewport.jl (set-viewport): call viewport-moved-hook from
-	here, instead of set-screen-viewport
-
-1999-10-02  John Harper  <john dcs warwick ac uk>
-
-	* gnome-menu.jl: new file, read the GNOME menu entries and
-	replace the apps-menu
-
-	* workspace.jl (ws-saved-state, ws-load-state): normalize
-	workspace numbers to zero when saving/loading the session
-
-	* viewport.jl (set-window-viewport, move-window-viewport): new
-	functions
-	(move-window-left, move-window-right, move-window-up,
-	move-window-down): new commands
-
-1999-10-01  John Harper  <john dcs warwick ac uk>
-
-	* viewport.jl (move-viewport-to-window): new function
-	* x-cycle.jl, workspace.jl: call move-viewport-to-window when
-	necessary
-
-	* frames.jl (set-window-frame-style): if decorate-transients is
-	set and the window is a transient, only upgrade the type if it
-	hasn't been set explicitly
-
-	* keymap.jl (read-event): new function, grab the keyboard then
-	return the next event
-
-1999-09-30  John Harper  <john dcs warwick ac uk>
-
-	* gnome.jl (gnome-exit): delete _WIN_AREA and _WIN_AREA_COUNT
-	from the root window
-
-	* keymaps.jl (global-keymap): removed the C-Up and C-Down
-	bindings
-
-	* viewport.jl: new file, support virtual workspaces
-	* workspace.jl: deleted the workspace-columns hack, set
-	fixed-position property of sticky windows
-	* gnome.jl: handle _WIN_AREA properties
-	* sawmill.jl: require viewport
-
-	* transient.jl (transient-add-window): set fixed-position as
-	well in sticky windows
-
-	* sm-save.jl, sm-load.jl: don't save position of windows,
-	handled by viewport module
-
-	* workspace.jl (workspace-send-boundary-mode): new option
-	(send-to-workspace:X): new commands, 0 < X < 10
-
-1999-09-29  John Harper  <john dcs warwick ac uk>
-
-	* server.jl (server-eval): function to evaluate a string to a
-	result string
-	(server-net-init, server-net-exit): functions to enable/disable
-	the X property based server, disabled by default
-
-	* auto-raise.jl: in the focus-out-hook as well now, disable any
-	pending timer
-
-	* workspace.jl (workspace-names): new variable, not yet
-	customizable
-	* gnome.jl (gnome-set-workspace): set _WIN_WORKSPACE_NAMES if
-	necessary
-
-1999-09-28  John Harper  <john dcs warwick ac uk>
-
-	* customize.jl (customize-group-opt, customize-args): new
-	variables, control how the cutomize-program is called
-
-	* x-cycle.jl (cycle-windows): stop the cycling when the
-	invoking modifier is released with _any_ other modifiers held
-
-	* x-cycle.jl, workspace.jl, transient.jl, focus.jl: only give
-	windows the focus if they've said they want it (through the
-	input field of their WM_HINTS property)
-
-	* sm-init.jl (sm-init): don't set the `Environment' property,
-	I've had reports that it may prevent $SESSION_MANAGER being
-	connected with on restart
-
-	* move-resize.jl (move-resize-lost-window): hooked into the
-	unmap and destroy notify hooks, if the window being
-	moved/resized is gone, then quit
-
-1999-09-27  John Harper  <john dcs warwick ac uk>
-
-	* transient.jl (transients-above-parents): new option
-
-1999-09-26  John Harper  <john dcs warwick ac uk>
-
-	* version 0.9
-
-	* open-look.jl (ol-add-window): fix for single atom
-	_OL_WIN_ATTR property (wordperfect)
-
-	* sawmill.jl: set $DISPLAY to the display we opened (for our
-	subprocesses)
-
-1999-09-25  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl: remove the requirement that workspace indices
-	are always >= 0. This makes moving beyond the first inhabited
-	workspace a lot easier. Also removed the total-workspaces
-	variable, there's now a ws-workspace-limits function that
-	returns the first and last workspaces. Various other minor
-	changes..
-
-	* keymaps.jl, gnome.jl, cycle.jl: small changes for modified
-	workspace.jl
-
-	* customize.jl (customize-symbol-spec): file-name type now has
-	its own widget
-
-	* edges.jl (snap-window-position-to-edges): don't allow windows
-	to be snapped off screen
-
-	* move-resize.jl (move-snap-ignored-windows): new option
-
-1999-09-24  John Harper  <john dcs warwick ac uk>
-
-	* gtkrc.jl: abstracted the gtkrc code from the gtk theme
-
-	* gnome.jl (gnome-set-workspace): only set _WIN_WORKSPACE and
-	_WIN_WORKSPACE_COUNT on the root window when the values have
-	actually changed
-
-	* workspace.jl (jump-workspaces-forwards,
-	jump-workspaces-backwards): new commands
-	* keymaps.jl (global-keymap): bind c-down and c-up to the
-	jump-workspaces- commands
-
-1999-09-23  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (find-all-frame-styles): new optional arg: sorted,
-	whether or not to sort the list
-
-	* place-window.jl (place-window-mode): use best-fit placement
-	by default
-
-	* functions.jl (xterm): new command
-
-	* sm-init.jl (sm-init): encapsulates the connection process
-	* sawmill.jl: connect with the session manager last of all
-
-1999-09-22  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (window-menu): only include non-ignored windows
-
-	* smart-placement.jl (sp-cost): multiple x-edges by y-edges
-	instead of adding when calculating space usefulness
-
-1999-09-21  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (ws-add-window): if `workspace' property is
-	already set, then add to that workspace
-
-	* smart-placement.jl (sp-padding): new option--the number of
-	pixels to try and leave between window edges
-
-	* smart-placement.jl (sp-cost): now tries to maximize the
-	number of grid lines crossed, and the length of the shared
-	window edges
-
-	* smart-placement.jl: improved first-fit fallback algorithm,
-	looks for the position where the window has the smallest
-	overlap with all other windows
-
-1999-09-20  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.jl: set autoload-verbose to nil
-
-	* workspace.jl (preallocated-workspaces): fix bug in the
-	after-set function (calling unquoted hook)
-
-	* gnome.jl (gnome-client-message-handler): only handle
-	WIN_STATE and WIN_LAYER if we actually have a window object to
-	act on
-
-	* smart-placement.jl (place-window-best-fit): first attempt at
-	best-fit placement (cost function is still not right)
-	* place-window.jl: added best-fit option
-
-	* sawmill.jl: move setting a fallback frame style to outside
-	the condition-case
-
-	* x-cycle.jl: remove windows from stack when iconified
-
-	* workspace.jl (focus-windows-on-uniconify): new defcustom
-
-	* focus.jl (focus-click): since XAllowEvents () ignores passive
-	grabs when it replays events, manually search for a binding of
-	the focus-inducing click
-
-1999-09-19  John Harper  <john dcs warwick ac uk>
-
-	* version 0.7
-
-	* x-cycle.jl (x-cycle-next): if the next window was iconified,
-	display its name surrounded by square brackets
-
-	* smart-placement.jl (place-window-first-fit): do first-fit
-	window placement
-	* place-window.jl: added first-fit option
-
-1999-09-18  John Harper  <john dcs warwick ac uk>
-
-	* x-cycle.jl (x-cycle-modifier-alist): use alt-keysyms and
-	meta-keysyms, instead of hard-coding the names (which may not
-	work if, for example, `M' is generated by Alt_L and Alt_R)
-
-	* workspace.jl (next-workspace, previous-workspace): support
-	the cycling option again
-
-1999-09-17  John Harper  <john dcs warwick ac uk>
-
-	* x-cycle.jl: remove the possibility of the stack ids
-	overflowing
-
-	* keymap.jl (substitute-key-definition): renamed
-	substitute-keymap-command
-	(substitute-keymap-event): new function
-
-	* stacking.jl (raise-window): handle case where there's only
-	one window, the window being raised
-
-1999-09-16  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (select-workspace): only select the workspace if
-	it's not the current workspace
-
-	* workspace.jl: removed cycling functions
-	(ws-workspace-windows): renamed workspace-windows
-
-	* cycle.jl: new file, old cycle functions plus `previous'
-	variants
-
-	* x-cycle.jl: new file, stack-based window cycling
-	* keymaps.jl (global-keymap): bound M-TAB to cycle-windows
-
-1999-09-15  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (override-frame-part-classes): new variable
-
-	* workspace.jl (append-workspace-and-send,
-	prepend-workspace-and-send): new commands
-
-1999-09-14  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl, stacking.jl, shading.jl, move-resize.jl,
-	maximize.jl, frames.jl, focus.jl: changed interactive `f', `w'
-	and `W' codes to `%f', `%w' and `%W'
-
-	* frames.jl (auto-window-type-alist): new variable
-
-	* workspace.jl (unshade-selected-windows): new option
-
-	* gnome.jl (gnome-set-workspace): updated for new workspace
-	implementation
-
-	* workspace.jl: major rewrite, removed workspace-list variable,
-	workspaces are now just non-negative integers, no state stored
-	except in each window's plist and the current and last
-	workspace indices
-
-	* mwm.jl (mwm-add-window): remove some buttons when asked
-
-	* frames.jl (remove-frame-class, add-frame-class): only call
-	rebuild-frame if there's a frame to rebuild
-
-1999-09-13  John Harper  <john dcs warwick ac uk>
-
-	* gnome.jl (gnome-add-window): set `ignored' property of gmc
-	and panel windows
-
-	* focus.jl (click-to-focus-keymap): now `Any-Click1'
-
-	* move-resize.jl (move-resize-apply): don't snap when opaque
-	resizing
-
-1999-09-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.6
-
-1999-09-11  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (ws-honour-client-state): new function,
-	iconifies windows whose WM_STATE is IconicState
-
-	* frames.jl (frame-part-classes): appended `-button' to names
-	of `menu', `iconify', `close' and `maximize' classes
-
-	* workspace.jl (uniconify-window, display-window): handle
-	windows that don't have a workspace (i.e. are sticky)
-	(window-menu): add an extra menu for iconified windows that
-	aren't listed in any of the other menus (since they're not in
-	any workspace)
-
-	* sawmill.jl: rearranged loading order again
-
-	* sm-init.jl (sm-saved-window-properties): initialised to nil
-	(sm-add-saved-properties): new function
-	* frames.jl, maximize.jl, shading.jl, stacking.jl,
-	workspace.jl: tell the session manager which window properties
-	to save
-
-	* shading.jl (shading-add-window): reset window type to saved
-	type if possible
-
-	* menus.jl (popup-menu): be more careful about assuming that a
-	menu is already displayed
-
-1999-09-10  John Harper  <john dcs warwick ac uk>
-
-	* shading.jl: in add-window-hook, monitoring `shaded' property
-
-	* sawmill.jl: reorder module loading; always load shading
-
-	* frames.jl (frame-part-classes): alist associating frame part
-	"classes" and an alist of the properties they inherit
-	(remove-frame-class, add-frame-class): adding and removing
-	parts of frames (but only if the style allows it)
-
-	* gnome.jl (gnome-honour-client-state): don't try to act on the
-	state changes, just set the necessary window properties
-
-	* keymaps.jl (border-keymap): new keymap
-
-1999-09-09  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (set-window-frame-style): don't set the window's
-	`type' property if it's implicitly defined
-
-	* shading.jl: new file, implements window shading (displaying
-	only the title bar)
-	* menus.jl (window-ops-menu): add a toggle-shaded item
-	* keymaps.jl (title-keymap): bind button1-click2 to toggle
-	shading
-	* workspace.jl (display-window): unshade the window if necessary
-	* gnome.jl: support WIN_STATE_SHADED
-
-	* keymap.jl: new file, some keymap utility functions
-
-	* select-window.jl, move-resize.jl, focus.jl: change
-	make-sparse-keymap to make-keymap
-
-	* custom.jl (defcustom): new option `:range (MIN . MAX)' for
-	number type, either MIN or MAX may be nil, defaults to 0 and
-	unlimited respectively
-	* customize.jl (customize-symbol-spec): propagate :range option
-
-	* workspace.jl, move-resize.jl: specify ranges in numeric
-	options
-
-1999-09-08  John Harper  <john dcs warwick ac uk>
-
-	* server.jl (server-init): set the _SAWMILL_SERVER_WIN property
-	on the window itself as well as on the root
-
-1999-09-07  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (set-window-frame-style): don't bother wrapping in
-	save-stacking-order since set-window-frame preserves it anyway
-
-	* transient.jl (transient-unmap-window): if in click-to-focus
-	mode, and there's no parent window to focus, focus the topmost
-	window not the window under the pointer
-
-	* customize.jl: removed all the subprocess code, now we just
-	fork off the configurator using the system function and forget
-	about it
-
-	* server.jl (server-client-message-handler): for async
-	requests, delete the property immediately after reading it, not
-	after evaluating the form
-
-1999-09-06  John Harper  <john dcs warwick ac uk>
-
-	* move-resize.jl (move-resize-infer-anchor): if no edges have
-	been selected for moving, move the bottom and right
-
-	* stacking.jl (restack-by-depth): try to optimise the
-	restacking done, by comparing the old order with the new order
-
-	* move-resize.jl (move-resize-window): set frame-state-mutex to
-	`clicked' while dragging the window
-
-	* select-window.jl, move-resize.jl: call (allow-events
-	'async-pointer) since active-grabs are now done with
-	synchronous event handling
-
-	* gnome.jl (gnome-add-window): new function, set
-	focus-proxy-click to t in panel and gmc icons
-
-	* focus.jl (focus-proxy-click): new option, the same symbol can
-	also be set in a window's plist
-	(focus-in-fun): when in click-to-focus mode, ensure that all
-	non-focused windows have the click-to-focus keymap set
-
-	* focus.jl: map focus-add-window over all existing windows at
-	startup
-
-	* workspace.jl (display-window): focus the window
-
-1999-09-05  John Harper  <john dcs warwick ac uk>
-
-	* version 0.5
-
-	* workspace.jl (ws-index): renamed as workspace-index
-	(select-workspace): ignore negative indices
-
-	* gnome.jl (gnome-init): set the _WIN_AREA and _WIN_AREA_COUNT
-	properties (even though we only have one area), the gnome pager
-	doesn't take any notice if we just delete them
-
-	* frames.jl (frame-style-menu): added a `Default' option.
-	(set-window-frame-style): move the save-stacking-order macro
-	call to this function
-
-	* sm-init.jl (sm-saved-window-properties): save the frame-style
-	property
-
-	* frames.jl (auto-frame-style-alist): new variable
-	(check-frame-availability): new function
-	(set-window-frame-style): give a window a specified frame
-	(frame-style-menu): menu constructor for all frame styles
-
-	* menus.jl (window-ops-menu): added a `Frame style' submenu,
-	from the frame-style-menu constructor
-
-1999-09-04  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (custom-make-frame-style-widget): use the new
-	`frame-style' widget
-
-	* frames.jl (after-setting-frame-option): call
-	reframe-all-windows if always-update-frames is set
-
-	* move-resize.jl (move-show-position, resize-show-dimensions):
-	new options, when t the window attributes are displayed while
-	moving or resizing the window
-
-	* sm-init.jl (sm-init-properties): deleted this function, it's
-	now inlined into the initialisation section (since it's only
-	called once, why let it consume memory?)
-
-	* frames.jl (set-frame-for-window): only use the
-	decorate-transients option if the window actually _is_ a
-	transient. Also, store the final window type (so it can be
-	saved with the session)
-
-	* workspace.jl (preallocated-workspaces): new defcustom
-	(ws-add-window-to-space): abort if window is already in a
-	space, remember to hide the window if it's not visible
-	(ws-add-window): abort if window is in a space already
-	(ws-add-window-to-space-by-index): new function
-	(ws-remove-window): never delete the sole remaining workspace
-	(ws-add-workspace): if no workspaces exists, make the new one
-	current
-	(ws-save-session, ws-restore-session): session management hooks
-	to preserve the workspace that each window is on
-
-	* sm-save.jl (sm-get-window-state): fixed how the
-	sm-window-save-functions results are used
-
-	* gnome.jl (gnome-honour-client-state): honour the
-	_WIN_WORKSPACE property
-
-	* mwm.jl, open-look.jl, gnome.jl: moved functions from
-	add-window-hook to before-add-window-hook
-
-	* functions.jl (make-directory-recursively): new function
-	* customize.jl, custom.jl: when writing into `~/.sawmill', call
-	make-directory-recursively first
-
-1999-09-03  John Harper  <john dcs warwick ac uk>
-
-	* menus.jl (menu-program): this is now under the libexec dir
-
-	* sm-save.jl, sm-load.jl, sm-init.jl, sm-common.jl: the Lisp
-	portion of the session management code. Allows arbitrary Lisp
-	modules to save and reload their state as well as the standard
-	stuff
-	* sawmill.jl: require 'sm-init
-
-	* custom.jl: moved the custom file from ~/.sawmill-custom to
-	~/.sawmill/custom. The old file will be renamed at startup if
-	possible
-
-1999-09-02  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (uniconify-to-current-workspace): improved the
-	doc string
-
-	* menus.jl, customize.jl, custom.jl: removed the `menus' and
-	`custom' customization groups
-
-	* stacking.jl (stacking-order-by-depth, stack-window-below,
-	stack-window-above): new functions
-	(raise-window): use x-raise-window where possible, this removes
-	the ugly flicker (at least when raising into the top layer)
-
-	* version 0.4
-
-	* menus.jl (menu-stop-process): optional arg FORCE
-
-	* menus.jl (menu-start-process): redirect stderr to nil
-
-1999-08-31  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl, sawmill.jl, keymaps.jl: if batch-mode is
-	non-nil, don't do anything that would access the display when
-	initialising or shutting down
-
-	* workspace.jl: added symbolic NormalState and IconicState
-	constants
-
-	* workspace.jl (ws-set-client-state): new function, in
-	window-state-change-hook and add-window-hook
-
-1999-08-30  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.jl: load custom-set values before .sawmillrc (but
-	after sawmill-defaults if no .sawmillrc)
-
-1999-08-29  John Harper  <john dcs warwick ac uk>
-
-	* menus.jl (window-ops-menu): added some more sub-menus
-
-	* frames.jl: create commands to set the frame of a window to
-	each of the possible window types
-	(set-frame-for-window): new optional arg TYPE
-
-
-	* customize.jl (customize): require all the custom-require
-	features
-
-	* stacking.jl (window-on-top-p): new function
-
-	* move-resize.jl: resizing now chooses the direction to resize
-	in by the initial position of the pointer in relation to the
-	window frame. The window is divided into a 3x3 grid, the
-	pointer must be in one of the outer rectangles for the window
-	to resize in that direction
-
-	* server.jl, gnome.jl: only initialise these if not running in
-	batch-mode
-
-1999-08-28  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (user-theme-directory, system-theme-directory,
-	theme-load-path): new variables
-	(load-frame-style, find-all-frame-styles): new functions for
-	loading the new-style "themes"
-
-1999-08-27  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl: renamed ws-workspaces as workspace-list, and
-	ws-current-workspace as current-workspace
-
-1999-08-26  John Harper  <john dcs warwick ac uk>
-
-	* move-resize.jl: set frame-draw-mutex to t whilst
-	rubber-banding windows
-
-	* themes/simple.jl, themes/brushed-metal.jl,
-	themes/absolute-e.jl: reorder image definitions
-
-	* workspace.jl: define commands `select-workspace:X' for 1 <= X
-	<= 9
-
-	* stacking.jl (auto-depth-alist): match window names to depths
-
-	* focus.jl: add the click-to-focus keymap to new windows
-
-	* menus.jl: record the input focus when starting a menu, then
-	restore it afterwards
-
-	* place-window.jl (place-transient-mode): new variable
-
-	* customize.jl (customize-symbol-spec): propagate the :widget
-	attribute to `set' elements
-
-1999-08-25  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl (reframe-all-windows): preserve the original
-	stacking order
-
-	* functions.jl (save-stacking-order): new macro
-
-	* stacking.jl: new file, implements `depth' of windows
-	* gnome.jl: support the _WIN_LAYER hints
-
-	* keymaps.jl (maximize-button-keymap): new keymap
-
-	* select-window.jl (select-window): check that pointer-grab
-	actually succeeds
-
-	* workspace.jl (ws-remove-window): after deleting the last
-	workspace, don't select the first workspace, select the last
-
-1999-08-24  John Harper  <john dcs warwick ac uk>
-
-	* gnome.jl (gnome-init): use the new
-	`workspace-state-change-hook' instead of all the individual
-	hooks
-
-	* workspace.jl (move-workspace-forwards,
-	move-workspace-backwards): new commands, slide the current
-	workspace along the list of all workspaces
-
-	* customize.jl (customize): passing this function a group name
-	makes it customize that group only
-	* custom.jl (custom-menu): menu constructor including all
-	customize groups
-	(custom-declare-group): create an interactive function
-	`customize:FOO' for each group FOO
-	* menus.jl: use custom-menu for the customize menu
-
-1999-08-23  John Harper  <john dcs warwick ac uk>
-
-	* frames.jl: (window-type-remove-title, window-type-remove-border,
-	window-type-add-title, window-type-add-border): for windows
-	with no title and no border, use the new type `unframed', not
-	`shaped-transient'
-	* themes/simple.jl, themes/brushed-metal.jl,
-	themes/absolute-e.jl: set `unframed' windows to the `nil-frame'
-
-	* server.jl (server-init): new function
-
-	* version 0.3a
-
-	* move-resize.jl: query the _current_ mouse position, not the
-	last seen in an event
-
-	* menus.jl: menus now work asynchronously, some hackery to get
-	the focus back before calling the selected command
-
-	* maximize.jl (unmaximize-window): optional arg DIRECTION as
-	with maximize-window, allows selective unmaximization
-
-	* gnome.jl: support the MAXIMIZED window states
-
-	* server.jl: for asynchronous requests delete the property
-	after reading it (so the client knows when it can continue)
-
-	* edges.jl (snap-window-position-to-edges): minor fix
-
-1999-08-22  John Harper  <john dcs warwick ac uk>
-
-	* version 0.3
-
-	* server.jl: new file, handle ClientMessages initiating
-	sawmill-client requests
-	* sawmill.jl: require server
-	* sawmill-defaults.jl: don't call server-open anymore
-
-	* maximize.jl: new file, window maximization
-	* menus.jl (window-ops-menu): added maximize commands
-
-	* customize.jl (customize-sentinel): write out the custom
-	script when the process exits
-
-	* auto-raise.jl (rw-on-focus): handle case where timeout is
-	zero
-
-	* move-resize.jl (move-resize-window): temporarily bind
-	unbound-key-hook to nil, otherwise the gnome code may cause
-	havoc
-
-	* functions.jl (with-server-grabbed): new macro
-
-	* move-resize.jl (move-resize-window): put the call to
-	ungrab-server back into the tail of the unwind-protect where it
-	should be; also be aware that move-resize-mode may have changed
-
-	* place-window.jl (place-window): fix the `interactive'
-	placement mode
-
-	* open-look.jl, mwm.jl: new files, implement some of the Motif
-	and OpenLook window hints
-	* sawmill.jl: require mwm and open-look
-
-	* frames.jl (window-type): moved from transient.jl; if the
-	window has a `type' property, this is assumed to be the window
-	type
-	(window-type-remove-title, window-type-remove-border,
-	window-type-add-title, window-type-add-border): new functions
-
-1999-08-21  John Harper  <john dcs warwick ac uk>
-
-	* focus.jl (focus-mode): new variable, replaces sloppy-focus.
-	Implemented click-to-focus mode
-
-	* move-resize.jl (move-window-interactively,
-	resize-window-interactively): use the `W' interactive decl
-
-	* workspace.jl (ws-client-msg-handler): handle WM_CHANGE_STATE
-	messages (i.e. iconification requests)
-
-	* gnome.jl: new file, replaces the libgnome.so dl
-
-1999-08-20  John Harper  <john dcs warwick ac uk>
-
-	* move-resize.jl (move-resize-window): fix error when there's
-	no current-event
-
-	* workspace.jl (next-window): new command, cycles through all
-	uniconified windows on all workspaces
-
-1999-08-19  John Harper  <john dcs warwick ac uk>
-
-	* edges.jl: new file, some utilities for dealing with window
-	edges
-	* move-resize.jl (move-snap-edges, move-snap-epsilon):
-	variables controlling window edge snapping whilst moving
-
-	* custom.jl (custom-add-to-group): ensure that only one
-	instance of any symbol is added to the group
-
-1999-08-16  John Harper  <john dcs warwick ac uk>
-
-	* version 0.2
-
-	* transient.jl (transient-unmap-window): if the window being
-	unmapped is focused, and there's no transient-parent to focus
-	on, then focus on the window under the pointer (in case the
-	pointer isn't in the unmapped window)
-
-1999-08-15  John Harper  <john dcs warwick ac uk>
-
-	* keymaps.jl: keymaps are now customizable
-
-	* customize.jl (customize-ui-spec): call each group's :widget
-	function if defined
-	(about): a new group, just contains a label with some
-	info/legalese
-
-	* custom.jl (custom-declare-variable): new keyword :before-set,
-	similar to :after-set
-	(custom-declare-group): this now takes a list of keywords as
-	with defcustom. The only keyword currently is :widget, a
-	function to call to layout the page containing the user
-	interface elements of the group
-
-1999-08-14  John Harper  <john dcs warwick ac uk>
-
-	* keymaps.jl: add a label to the `bindings' group noting that
-	keybindings aren't implemented
-	* custom.jl: added group `bindings'
-
-	* transient.jl (focus-windows-when-mapped): new variable, any
-	newly-mapped window is given the input focus
-
-1999-08-13  John Harper  <john dcs warwick ac uk>
-
-	* themes/simple.jl: defined the missing three frame types;
-	border colors are now configurable
-
-	* keymaps.jl (iconify-button-keymap): Button3 is now bound to
-	`popup-window-menu'
-
-	* customize.jl (customize-symbol-spec): use the `color' widget
-	for colors
-
-	* transient.jl (transients-get-focus): moved to custom group
-	`focus'
-
-	* custom.jl (custom-declare-variable): remember to check for
-	:widget keyword
-
-	* workspace.jl (ws-merge-workspaces): call the
-	delete-workspace-hook after deleting the source workspace
-
-1999-08-12  John Harper  <john dcs warwick ac uk>
-
-	* place-window.jl (place-window): for random placement, use the
-	dimensions of the window frame not the client window
-
-	* transient.jl (transient-unmap-window): new function, used to
-	return the focus from a transient to its parent when the
-	transient window gets unmapped
-
-	* move-resize.jl (move-resize-window): fix the bug whereby the
-	first motion event was ignored (making the pointer and window
-	get out of sync). If the command is called from a motion event,
-	then look at the position of the _previous_ pointer event, and
-	start moving from there
-
-1999-08-11  John Harper  <john dcs warwick ac uk>
-
-	* customize.jl (customize-stop-process): only kill the process
-	when it's actually running
-
-	* custom.jl (defcustom): new tag :after-set defines a function
-	to call after setting the variable
-
-	* frames.jl (decorate-transients): controls whether transient
-	windows get reduced or normal frames
-
-1999-08-09  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-defaults.jl: remove some settings that are normally
-	set by customize
-	* sawmill.jl: load absolute-e if no frame otherwise specified
-
-	* simple.jl, brushed-metal.jl, absolute-e.jl: moved to the new
-	`themes' subdirectory
-
-	* frames.jl: new file, inherited the frame setting logic from
-	transient.jl. Removed the frameset idea, now we have `frame
-	styles' which are functions; they return the frame to use for a
-	given window. Also support customization of the default	style
-	* transient.jl: moved frame stuff to frames.jl
-
-	* custom.jl, customize.jl: new custom properties `custom-set',
-	`custom-get' and `custom-widget'; inherited from type if not
-	set in each symbol. New types `font' and `color'. New group
-	`appearance'
-
-1999-08-07  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (raise-selected-windows,
-	warp-to-selected-windows): new variables
-
-	* custom.jl: new file, inspired by Emacs' customize system.
-	This file allows Lisp libraries to declare their configurable
-	settings (and their types)
-
-	* customize.jl: new file, this uses the defcustom information
-	to present the user a graphical configuration interface. These
-	settings are stored in ~/.sawmill-custom and loaded on
-	initialisation
-
-	* workspace.jl, transient.jl, place-window.jl, move-resize.jl,
-	menus.jl, focus.jl, auto-raise.jl: changed some defvar's to
-	suitable defcustom's
-
-	* sawmill.jl: load custom settings
-
-1999-08-06  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (display-window): raise the chosen window
-
-1999-08-03  John Harper  <john dcs warwick ac uk>
-
-	* version 0.1
-
-1999-08-02  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (ws-add-window-to-space): abort if the window is
-	marked as being sticky
-
-	* workspace.jl: call window-state-change-hook when the window's
-	``state'' (i.e. sticky, iconified, ..) changes
-
-	* workspace.jl (toggle-window-sticky): new command
-	(ws-remove-window): new optional argument DONT-HIDE
-
-	* keymaps.jl (window-keymap): bind "M-Button2" to
-	popup-window-menu
-
-	* workspace.jl: where appropriate use call-window-hook instead
-	of call-hook
-
-	* workspace.jl (transients-on-parents-workspace): new variable
-	(merge-next-workspace, merge-previous-workspace,
-	insert-workspace): new commands, in the workspace menu
-	(popup-workspace-list, popup-window-list): new commands
-
-	* transient.jl (transients-get-focus): new variable, when t
-	mapping transient windows whose parent is focused passes the
-	focus to the transient
-
-	* place-window.jl (place-window): fix a missing
-	close-parenthesis
-
-1999-08-01  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (ws-remove-window): fix the bug whereby deleting
-	the last workspace didn't nullify ws-current-workspace. Also
-	ensure that both remove-from-workspace and
-	delete-workspace-hook are only called _after_ the deletion has
-	occurred. remove-from-workspace now gets two args: window and
-	workspace
-
-1999-07-31  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl: new hook `delete-workspace-hook'
-
-	* transient.jl (ignored-window-names, sticky-window-names): new
-	variables, lists of regexps
-
-	* sawmill-defaults.jl: removed the user-add-window function,
-	added some comments about getting GNOME support
-
-	* place-window.jl (ignore-program-positions): program specified
-	window positions are ignored if this is set. User specified
-	positions are never ignored
-
-	* keymaps.jl: bind the root menu to Button2 not Button1
-
-1999-07-30  John Harper  <john dcs warwick ac uk>
-
-	* menus.jl (menu-program-stays-running): if this variable is a
-	number, it defines how long (in seconds) that a menu subprocess
-	is allowed to stay running between menus being required.
-	Default is one minute
-
-1999-07-29  John Harper  <john dcs warwick ac uk>
-
-	* simple.jl, brushed-metal.jl, absolute-e.jl: changes for
-	framesets
-
-	* transient.jl: introduce the frameset idea, an alist of frames
-
-	* auto-raise.jl: new file, uses a timer to work correctly
-	(raise-windows-on-focus): can now be a regexp matching window
-	names to raise
-	* focus.jl: removed the auto-raise stuff
-
-1999-07-28  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (next-workspace-window): new command
-
-	* focus.jl (focus-raise): synchronise the server before timing
-	out
-
-1999-07-28  Stewart Perry  <scp dcs warwick ac uk>
-
-	* focus.jl (raise-windows-on-focus, raise-window-timeout): new
-	variables, auto-raise functionality
-
-1999-07-28  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-defaults.jl: set the frame to `nil-frame' to turn off
-	the frame, not to nil
-
-	* transient.jl (transient-add-window): only set the frame if
-	it's currently nil, set it to default-frame if not transient or
-	shaped
-
-	* simple.jl, brushed-metal.jl, absolute-e.jl: frames are
-	defined as lists now
-
-	* absolute-e.jl: added shaped and shaped-transient frames
-
-	* transient.jl: now looks for shaped windows as well as
-	transients
-
-1999-07-26  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (raise-window-on-uniconify): new variable
-
-	* menus.jl (apps-menu): new variable, the "Applications" item
-	of the root menu
-
-1999-07-25  John Harper  <john dcs warwick ac uk>
-
-	* workspace.jl (cycle-through-workspaces,
-	delete-workspaces-when-empty, uniconify-to-current-workspace,
-	static-workspace-menus): new variables
-	(workspace-menu, window-menu): dynamic menu constructors
-	(iconify-window, uniconify-window): new commands
-
-	* sawmill.jl: load some more libraries
-
-	* place-window.jl: this uses the new place-window-hook. But
-	random placement is still the only working option
-
-	* move-resize.jl: now obeys most of the window's size hints
-	(all but the aspect ratios)
-
-	* menus.jl: implement popup menus using the sawmill-ui script
-
-	* functions.jl (get-window-by-name, get-window-by-id): new
-	functions
-
-	* keymaps.jl: some more bindings
-	(root-window-keymap): new keymap
-
diff --git a/lisp/sawfish/gtk/ChangeLog.pre-1.5.0 b/lisp/sawfish/gtk/ChangeLog.pre-1.5.0
deleted file mode 100644
index d8b77b1..0000000
--- a/lisp/sawfish/gtk/ChangeLog.pre-1.5.0
+++ /dev/null
@@ -1,200 +0,0 @@
-2003-08-16  John Harper  <jsh unfactored org>
-
-	* widgets/font.jl.in, widgets/font.jl: this file is now
-	generated by configure so it can now if pango was configured or
-	not
-
-2003-08-13  John Harper  <jsh unfactored org>
-
-	Integrated patch from Shun-ichi TAHARA <jado flowernet gr jp>:
-
-	* widgets/font.jl (use-xft): use Gtk+ 2.2 logic for
-	interpreting this variable
-
-	* widgets/font.jl: support pango font type
-
-2003-07-29  John Harper  <jsh unfactored org>
-
-	* widget.jl (make-string-item): fold nil to "" when setting
-	gtk-entry value. Should fix #87917
-
-2002-11-09  John Harper  <jsh unfactored org>
-
-	* version 1.2
-
-2002-11-03  John Harper  <jsh unfactored org>
-
-	* widgets/font.jl (make-font-item): use XLFD fonts when
-	GDK_USE_XFT isn't set. (I couldn't test this, since the GTK
-	font selector totally fails to work for me when this
-	environment variable isn't set)
-
-2002-11-03  John Harper  <jsh unfactored org>
-
-	* widgets/font.jl (make-font-item): support for new typed font
-	descriptions. Convert the Xft description to and from the Pango
-	descriptions used by GtkFontSelection. Needs some work to
-	handle XLFD fonts as well when $GDK_USE_XFT isn't set
-
-	* widget.jl, stock.jl.gtk: fixed some button-box issues
-
-2002-11-02  John Harper  <jsh unfactored org>
-
-	* widgets/pair.jl (make-pair-item): added another (!) optional
-	arg, PACKING. It defines how the widgets are packed into their
-	containing box
-
-2002-05-21  John Harper  <jsh unfactored org>
-
-	* Merged from HEAD:
-
-	2002-05-14  John Harper  <jsh unfactored org>
-
-	* widgets/font.jl (make-font-item): made entry uneditable
-
-2002-04-21  John Harper  <jsh unfactored org>
-
-	* Merged changes from HEAD
-
-	2002-04-18  John Harper  <jsh unfactored org>
-
-	* widgets/scheme-boolean.jl, Makefile.in: new widget, a boolean
-	but returns #f and #t (though it accepts nil and t still).
-	Implemented as a toggle button. Adapted from merlin
-	<merlin merlin org>
-
-	* widget.jl (make-choice-item): if IDX is null, select the
-	first item. Patch from merlin <merlin merlin org>
-
-2002-04-14  John Harper  <jsh unfactored org>
-
-	* widgets/list.jl: return false from button_press_event and
-	key_press_event handlers, fixes #75866
-
-2002-04-13  John Harper  <jsh unfactored org>
-
-	* stock.jl.gtk, stock.jl.gnome: s/gtk-signal-/g-signal/
-
-2002-04-01  John Harper  <jsh unfactored org>
-
-	* widget.jl, widget-test.jl: 
-	* widgets/list.jl, widgets/font.jl, widgets/file.jl,
-	widgets/color.jl: s/gtk-signal-/g-signal-/
-
-2002-02-13  John Harper  <jsh unfactored org>
-
-	* stock.jl.gtk, stock.jl.gnome (stock-button): new
-	gtk-button-new-from-stock in both cases now
-
-2002-02-12  John Harper  <jsh unfactored org>
-
-	* widget.jl, stock.jl.gtk, color-preview.jl: 
-	* widgets/list.jl, widgets/file.jl: 
-
-	Ported to current gnome2 rep-gtk
-
-2002-01-29  John Harper  <jsh unfactored org>
-
-	* widget.jl, widget-test.jl, widget-dialog.jl, stock.jl.gtk,
-	stock.jl.gnome, color-preview.jl: 
-	* widgets/pair.jl, widgets/list.jl, widgets/font.jl,
-	widgets/file.jl, widgets/color.jl, widgets/alist.jl: 
-
-	Changed module names for gnome2 rep-gtk
-
-2001-01-05  John Harper  <jsh eazel com>
-
-	* version 0.35
-
-2000-12-30  John Harper  <jsh eazel com>
-
-	* widget.jl (make-choice-item): options for the `choice' widget
-	can now be formatted as `(SYMBOL "REAL-NAME")' as well a
-	`SYMBOL'. The REAL-NAME string will be displayed when given
-
-2000-12-22  John Harper  <jsh eazel com>
-
-	* widgets/list.jl: never destructively modify the list, fixes
-	some weird bugs. E.g. it allows invalid event descriptions to
-	be caught and reverted (fixing #5323)
-
-2000-12-04  John Harper  <jsh eazel com>
-
-	* version 0.34
-
-2000-11-28  John Harper  <jsh eazel com>
-
-	* widget.jl (make-symbol-item): connect to the changed signal
-	_after_ calling set-popdown-strings, since that can raise the
-	signal (which we don't want yet)
-
-2000-11-27  John Harper  <jsh eazel com>
-
-	* widget.jl (make-choice-item): `value' defaults to first item
-	in the menu (as in GTK+)
-
-	* widgets/font.jl (make-font-item): expand text entry when
-	packing it
-
-2000-11-17  John Harper  <jsh eazel com>
-
-	* widget.jl (make-choice-item): call _ function when printing
-	option names
-
-2000-11-16  John Harper  <jsh eazel com>
-
-	* widgets/alist.jl: use prin1 style printing (i.e. no double
-	quotes in strings, etc)
-
-2000-11-14  John Harper  <jsh eazel com>
-
-	* widgets/list.jl (make-list-item): connect to
-	`key_press_event' of the clist, on `RET' edit the current item
-
-2000-10-11  John Harper  <john dcs warwick ac uk>
-
-	* widget.jl (string->symbol): use intern not read-from-string
-
-2000-09-25  John Harper  <john dcs warwick ac uk>
-
-	* widget.jl (tooltip-split, tooltip-set): new functions
-	(make-widget): if the widget advertised that it takes a doc
-	string, then handle any tooltip embedded in that string
-
-2000-09-20  John Harper  <john dcs warwick ac uk>
-
-	* version 0.31
-
-2000-09-11  John Harper  <john dcs warwick ac uk>
-
-	* widget.jl, widget-test.jl, ChangeLog: 
-	* widgets/list.jl, widgets/color.jl, widgets/alist.jl: 
-
-	No need to explicitly open `rep.io.streams' anymore
-
-2000-09-08  John Harper  <john dcs warwick ac uk>
-
-	* widget.jl, widget-test.jl: 
-	* widgets/list.jl, widgets/color.jl, widgets/alist.jl: 
-
-	Open the necessary modules that aren't included in `rep'
-	structure anymore (rep.regexp, rep.system, rep.io.streams,
-	rep.io.files, rep.io.file-handlers)
-
-2000-09-01  John Harper  <john dcs warwick ac uk>
-
-	* stock.jl.gtk, stock.jl.gnome (about-dialog, make-url-widget):
-	new functions
-
-	* widgets/program.jl, widgets/pair.jl, widgets/list.jl,
-	widgets/font.jl, widgets/file.jl, widgets/color.jl,
-	widgets/alist.jl, widgets/.cvsignore: 
-
-	* widget.jl, widget-test.jl, widget-dialog.jl, stock.jl.gtk,
-	stock.jl.gnome, color-preview.jl: 
-
-	Moved here from the `nokogiri' directory. The plan is to use
-	some of these modules in other programs, e.g sawfish-themer
-
-
- -- See ../ui/ChangeLog for older history
diff --git a/lisp/sawfish/ui/ChangeLog.pre-1.5.0 b/lisp/sawfish/ui/ChangeLog.pre-1.5.0
deleted file mode 100644
index 7f9868f..0000000
--- a/lisp/sawfish/ui/ChangeLog.pre-1.5.0
+++ /dev/null
@@ -1,568 +0,0 @@
-2002-11-10  John Harper  <jsh unfactored org>
-
-	* shell.jl (add-active-slots): new function, used to add slots
-	into the active-slots list. Ensures that slots aren't added
-	more than once (which was the cause of #88718 and other similar
-	bugs)
-
-2002-11-09  John Harper  <jsh unfactored org>
-
-	* version 1.2
-
-2002-11-03  John Harper  <jsh unfactored org>
-
-	* widgets/match-window.jl, widgets/keymap.jl: 
-
-	* shell.jl, widgets/match-window.jl, widgets/keymap.jl: some
-	small UI tweaks
-
-2002-11-02  John Harper  <jsh unfactored org>
-
-	* widgets/keymap.jl (make-keymap:binding-item): fix packing of
-	"Grab" button
-
-	* widgets/command.jl (make-command-item): set minimum size of
-	text and clist widgets
-
-2002-05-29  John Harper  <jsh unfactored org>
-
-	* more merging:
-
-	2002-05-29  John Harper  <jsh unfactored org>
-
-	* widgets/frame-style.jl (make-frame-style-item): added a 200ms
-	delay before installing new themes, avoids overloading X when
-	dragging over the combo box menu. Should fix #81723
-
-2002-05-21  John Harper  <jsh unfactored org>
-
-	* Merged changes from HEAD:
-
-	2002-05-06  John Harper  <jsh unfactored org>
-
-	* i18n.jl: patch from Christophe Fergeau
-	<teuf users sourceforge net> to call bindtextdomaincodeset
-	function. Modified to only call it if it exists
-
-2002-04-21  John Harper  <jsh unfactored org>
-
-	* Merged changes from HEAD:
-
-	2002-04-20  John Harper  <jsh unfactored org>
-
-	Removed user levels, button configuration:
-
-	* wm.jl, user-level.jl, slot.jl, shell.jl, main.jl.in,
-	apply.jl, Makefile.in: 
-
-	* widgets/command.jl: 
-
-	2002-04-18  John Harper  <jsh unfactored org>
-
-	* widgets/match-window.jl: use optional scheme-boolean widgets
-	to display booleans. Adapted from merlin <merlin merlin org>
-
-2002-04-01  John Harper  <jsh unfactored org>
-
-	* shell.jl, group.jl, layouts/keymaps.jl,
-	widgets/match-window.jl, widgets/icon.jl,
-	widgets/frame-style.jl, widgets/event.jl, widgets/command.jl:
-	s/gtk-signal-/g-signal-/
-
-2002-03-03  John Harper  <jsh pixelslut com>
-
-	* shell.jl: display using a tree of notebook pages for now
-
-	* widgets/frame-style.jl (make-frame-style-item): removed
-	debugging spew
-
-2002-02-13  John Harper  <jsh unfactored org>
-
-	* widgets/frame-style.jl (make-frame-style-item): go to great
-	lengths to avoid picking up fucked changes from the combo's
-	entry widget
-
-2002-02-12  John Harper  <jsh unfactored org>
-
-	* slot.jl, shell.jl, main.jl.in, layout.jl, group.jl: 
-	* layouts/keymaps.jl: 
-	* widgets/match-window.jl, widgets/keymap.jl,
-	widgets/frame-style.jl, widgets/command.jl: 
-
-	Ported to current gnome2 rep-gtk
-
-2002-01-29  John Harper  <jsh unfactored org>
-
-	* slot.jl, shell.jl, layout.jl, group.jl, apply.jl: 
-	* layouts/keymaps.jl: 
-	* widgets/workspace-geometry.jl, widgets/match-window.jl,
-	widgets/keymap.jl, widgets/icon.jl, widgets/frame-style.jl,
-	widgets/event.jl, widgets/command.jl: 
-
-	Changed module names for gnome2 rep-gtk
-
-2001-09-07  John Harper  <jsh pixelslut com>
-
-	* layouts/keymaps.jl (layout-keymaps): fixed bug of keymap
-	popup menu being displayed even if there are no keymaps to
-	configure
-
-	* shell.jl (display-flattened): fixed bug of `--flatten
-	--single-level' combination not working properly
-
-2001-08-23  John Harper  <jsh pixelslut com>
-
-	* widgets/match-window.jl (make-match-window:matchers): search
-	the translated X properties for the real atom name when
-	grabbing properties, don't pass the (translated) property name
-
-2001-07-02  John Harper  <jsh pixelslut com>
-
-	* version 0.99
-
-2001-04-20  John Harper  <jsh eazel com>
-
-	Extra i18n work. Adapted from a patch by Vlad Harchev
-	<hvv hippo ru>
-
-	* layouts/keymaps.jl (beautify-keymap-name): try to localize
-	the name before returning it
-	* widgets/keymap.jl (beautify-symbol-name): ditto
-	* widgets/match-window.jl (beautify-symbol-name): ditto
-
-	* widgets/match-window.jl (make-match-window:matchers):
-	localizes all property names before starting, then uses that
-	list of properties
-
-2001-02-13  John Harper  <jsh eazel com>
-
-	* version 0.37
-
-2001-02-07  John Harper  <jsh eazel com>
-
-	* widgets/event.jl (make-event-item): strip leading and
-	trailing white space from the event name in the `ref' method
-
-2001-01-27  John Harper  <jsh eazel com>
-
-	* shell.jl (display-flattened-group): translate the real name
-	of the group before making it the title of the notebook page
-
-2001-01-05  John Harper  <jsh eazel com>
-
-	* version 0.35
-
-2000-12-18  John Harper  <jsh eazel com>
-
-	* widgets/modifier-list.jl (validp): don't allow () as a valid
-	modifier list
-
-2000-12-04  John Harper  <jsh eazel com>
-
-	* version 0.34
-
-2000-11-28  John Harper  <jsh eazel com>
-
-	* widgets/modifier-list.jl: new widget, manages a list of
-	modifier key names
-
-	* layouts/keymaps.jl: only put slots whose names end in
-	`-keymap' into the popup menu, just stack any others in the
-	vbox
-
-	* shell.jl (display-flattened): if the layout widget is a
-	container, give it a non-zero border-width
-
-2000-11-27  John Harper  <jsh eazel com>
-
-	* widgets/frame-style.jl (make-frame-style-item): reversed
-	order of combo box and label; don't set usize of text box
-
-	* layout.jl: renamed `expand' flag as `expand-vertically';
-	added an `expand-horizontally' flag; changed `framed' flag to
-	use a vbox instead of a frame widget
-
-2000-11-21  John Harper  <jsh eazel com>
-
-	* layout.jl (layout-box): don't set the border of the box
-	(document-slot): when checking whether a doc string is given or
-	not, also check if the value is the null string
-
-	* widgets/command.jl (update-params): when ref'ing commands
-	without arguments, remember to use command-name to remove any
-	keywords in the command definition. Fixes #4827
-
-2000-11-17  John Harper  <jsh eazel com>
-
-	* main.jl.in: don't initialize backtrace-on-error
-
-2000-11-16  John Harper  <jsh eazel com>
-
-	* slot.jl: added a `flags' field to the slot structure, used to
-	store flags for when displaying widgets
-
-	* layout.jl: check slot-flags, handle `expand' and `framed'
-
-	* wm.jl (wm-locale-dir): dereference sawfish-locale-directory
-	on the remote side, instead of using bindtextdomain
-
-2000-11-14  John Harper  <jsh eazel com>
-
-	* widgets/workspace-geometry.jl (monitor-pixbuf-file): search
-	load-path for the `../monitor.png' file, instead of just
-	assuming that it's relative to the first item of the list
-
-2000-11-08  John Harper  <jsh eazel com>
-
-	* version 0.33
-
-2000-11-06  John Harper  <jsh eazel com>
-
-	* group.jl, shell.jl: fixed some bugs introduced by the change
-	to refresh groups after slot commits
-
-2000-11-02  John Harper  <jsh eazel com>
-
-	* group.jl (fetch-group, select-group): added keyword parameter
-	FORCE that overrides certain checks
-
-	(refresh-groups-for-slots): new exported function; given a list
-	of slots it will resync any groups that contain any of these
-	slots
-
-	* apply.jl (do-apply): call refresh-groups-for-slots after
-	committing any changes
-
-2000-11-01  John Harper  <jsh eazel com>
-
-	* group.jl: some internal reorganization (may help reloading
-	group info..)
-
-2000-10-26  John Harper  <jsh eazel com>
-
-	* widgets/command.jl: now supports #:user-level's in commands
-
-2000-10-20  John Harper  <jsh eazel com>
-
-	* widgets/command.jl: support (but currently ignore)
-	user-levels associated with commands
-
-	* user-level.jl (user-level-is-appropriate-p): new function
-
-2000-10-10  John Harper  <john dcs warwick ac uk>
-
-	* apply.jl (apply-changes-for): catch errors from
-	wm-apply-changes and display them in a dialog after reverting
-	the changed slots
-
-2000-09-25  John Harper  <john dcs warwick ac uk>
-
-	* widgets/keymap.jl (make-keymap:binding-item): add a `Key:'
-	label to the event widget
-
-	* widgets/event.jl (make-event-item): don't prefix the widget
-	with a `Key:' label, it's more useful without it
-
-	* layout.jl (document-slot): handle adding any tooltip embedded
-	in the slots documentation string
-
-2000-09-20  John Harper  <john dcs warwick ac uk>
-
-	* version 0.31
-
-2000-09-12  John Harper  <john dcs warwick ac uk>
-
-	* shell.jl (initialize-shell): unless creating a plug, put the
-	root widget inside a raised frame
-
-2000-09-11  John Harper  <john dcs warwick ac uk>
-
-	* slot.jl, shell.jl, main.jl.in, group.jl, ChangeLog: 
-	* layouts/keymaps.jl: 
-	* widgets/match-window.jl, widgets/keymap.jl,
-	widgets/frame-style.jl, widgets/command.jl: 
-
-	No need to explicitly open `rep.io.streams' anymore
-
-2000-09-08  John Harper  <john dcs warwick ac uk>
-
-	* slot.jl, shell.jl, main.jl.in, layout.jl, i18n.jl, group.jl,
-	apply.jl: 
-
-	* layouts/keymaps.jl: 
-
-	* widgets/workspace-geometry.jl, widgets/match-window.jl,
-	widgets/keymap.jl, widgets/icon.jl, widgets/frame-style.jl,
-	widgets/command.jl: 
-
-	Open the necessary modules that aren't included in `rep'
-	structure anymore (rep.regexp, rep.system, rep.io.streams,
-	rep.io.files, rep.io.file-handlers)
-
-2000-09-04  John Harper  <john dcs warwick ac uk>
-
-	* main.jl.in: /bin/sh on solaris 8 doesn't like to pass
-	environment settings on the same line as exec stmts. So set
-	REP_LOAD_PATH, export it, then run `rep'
-
-	* wm.jl (wm-documentation): use the `command-documentation'
-	function
-
-2000-09-02  John Harper  <john dcs warwick ac uk>
-
-	* group.jl (update-group): ':layout is now #:layout
-
-	* slot.jl (make-slot): use keyword params
-	(fetch-group): removed unused first arg
-
-2000-09-01  John Harper  <john dcs warwick ac uk>
-
-	* wm.jl, user-level.jl, slot.jl, shell.jl, main.jl.in,
-	layout.jl, i18n.jl, group.jl, config.jl, apply.jl: 
-
-	* layouts/keymaps.jl: 
-
-	* widgets/workspace-geometry.jl, widgets/match-window.jl,
-	widgets/keymap.jl, widgets/icon.jl, widgets/frame-style.jl,
-	widgets/event.jl, widgets/command.jl: 
-
-	Moved to `sawfish.ui' branch of the module namespace
-
-	* widgets/gtk/workspace-geometry.jl, widgets/gtk/icon.jl: GTK+
-	only versions of widgets that normally require GNOME
-
-2000-08-21  John Harper  <john dcs warwick ac uk>
-
-       * nokogiri-shell.jl: connect to delete_event from capplet
-       again; but connect to a function that returns t (to avoid
-       destroying the widget) and sets a 10-second timeout to call
-       on-quit
-
-2000-08-16  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-widgets/icon.jl: fixed bug in 'set method when
-	called with false argument
-
-2000-08-16  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-wm.jl, nokogiri-widget.jl, nokogiri-widget-test.jl,
-	nokogiri-widget-dialog.jl, nokogiri-shell.jl,
-	nokogiri-no-gnome.jl, nokogiri-gnome.jl,
-	nokogiri-widgets/workspace-geometry.jl,
-	nokogiri-widgets/pair.jl, nokogiri-widgets/match-window.jl,
-	nokogiri-widgets/list.jl, nokogiri-widgets/keymap.jl,
-	nokogiri-widgets/alist.jl: 
-
-	use #!optional and #!rest instead of deprecated &optional and
-	&rest
-
-2000-08-14  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-shell.jl (initialize-shell): only hook to
-	`delete_event' signal if window isn't a plug (avoids race
-	condition found by Havoc Pennington)
-
-2000-08-03  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-widget.jl (make-number-item): added backwards
-	compatibility for (eq min/max 'nil)
-
-2000-07-31  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-widgets/list.jl: changed the buttons to be `delete,
-	edit, add', not `delete, edit, insert'. `Add' inserts after the
-	current selection, this behaves more sanely when adding a
-	sequence of values
-
-2000-07-30  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-main.jl.in: handle --help option
-
-2000-07-27  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-wm.jl: use sawfish.client plugin instead of calling
-	external program
-
-2000-07-24  John Harper  <john dcs warwick ac uk>
-
-	* version 0.30.3
-
-2000-07-23  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-widgets/font.jl: fix structure name in definition
-
-	* nokogiri-widgets/match-window.jl (print-matcher): be more
-	cautious, reports of broken input
-
-2000-07-14  John Harper  <john dcs warwick ac uk>
-
-	* version 0.30.2
-
-2000-07-11  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-no-gnome.jl, nokogiri-widgets/workspace-geometry.jl:
-	use `Rows' and `Columns' as labels instead of `Y' and `X'
-
-	* nokogiri-no-gnome.jl (workspace-geometry): fixed bug of not
-	including `number' widget for number of workspaces
-
-2000-07-09  John Harper  <john dcs warwick ac uk>
-
-	* version 0.30
-
-	* nokogiri-widget-dialog.jl: put the title above the widget,
-	not beside it
-
-	* nokogiri-widget.jl: new widget type `quoted'
-
-2000-07-08  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-widgets/pair.jl (make-pair-item): added optional arg
-	REVERSED, when non-nil, the layout order of the widgets is
-	swapped
-
-	* nokogiri-widgets/event.jl, nokogiri-widgets/command.jl:
-	factored these out of the `keymap' widget, since they may be of
-	use individually
-
-2000-07-07  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-widgets/list.jl: set the clist to `browse' mode, and
-	keep it frozen while modifying it
-
-	* nokogiri-widgets/list.jl (edit-item): save the original value
-	of the selection, since it may get changed asynchronously
-
-2000-07-06  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-widget.jl (list-index): made this function terminate
-	even if the item isn't in the list!
-
-	* nokogiri-no-gnome.jl, nokogiri-gnome.jl (simple-dialog): new
-	function, replaces ok-cancel-dialog, uses GnomeDialog if possible
-	* nokogiri-dialog.jl: deleted
-
-	* nokogiri-widget-dialog.jl (widget-dialog): use simple-dialog,
-	new optional arg MAIN_WINDOW
-
-	* nokogiri-widgets/match-window.jl, nokogiri-widgets/list.jl,
-	nokogiri-widgets/keymap.jl, nokogiri-widgets/alist.jl: updated
-	to use simple-dialog and new widget-dialog arg
-
-	* nokogiri-widgets/list.jl: make the `insert' button insert
-	instead of appending, make `delete' preserve the selection,
-	only allow `delete' or `edit' when the selection is set
-
-2000-07-05  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-interfaces.jl.in (*nokogiri-directory*): new special
-	variable
-
-	* monitor.png: install this locally instead of relying on GNOME
-	version
-	* nokogiri-widgets/workspace-geometry.jl (monitor-pixbuf): use
-	the local version
-
-	* Makefile.in: support GNOME and non-GNOME installations
-
-	* nokogiri-widgets/workspace-geometry.jl: new widget, uses
-	GNOME canvas to draw workspace/viewport representation
-
-	* nokogiri-widgets/pair.jl: new optional arg, USE-VBOX
-
-	* nokogiri-widgets/icon.jl: new widget, mostly from Bruce
-	Miller <docmad md prestige net>
-
-	* nokogiri-widgets/frame-style.jl: accepts a doc string
-
-	* nokogiri-widget-test.jl (test-widget): added optional arg
-	INITIAL-VALUE
-
-	* nokogiri-no-gnome.jl, nokogiri-gnome.jl: new files
-
-	* nokogiri-interfaces.jl.in: contains all module interfaces
-
-	* nokogiri-wm.jl, nokogiri-widget.jl,
-	nokogiri-widget-dialog.jl, nokogiri-user-level.jl,
-	nokogiri-slot.jl, nokogiri-shell.jl, nokogiri-layout.jl,
-	nokogiri-i18n.jl, nokogiri-group.jl, nokogiri-dialog.jl,
-	nokogiri-config.jl, nokogiri-color-preview.jl,
-	nokogiri-apply.jl: moved module interfaces to
-	nokogiri-interfaces.jl.in
-
-	* nokogiri-widget.jl (widget-accepts-doc-string,
-	widget-accepts-doc-string-p): functions to allow passing of doc
-	strings to widgets
-
-	* nokogiri-dialog.jl: use stock-button, don't grab the window
-	(e.g. it breaks GnomeIconEntry)
-
-	* nokogiri-shell.jl (initialize-shell): use stock-button to
-	create buttons
-
-	* nokogiri-slot.jl (make-slot-widget): pass doc strings to
-	widgets that accept them
-
-2000-07-03  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-group.jl (make-group-tree): translate real-name
-
-2000-07-02  John Harper  <john dcs warwick ac uk>
-
-	* version 0.29
-
-2000-07-01  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-shell.jl (*nokogiri-single-level*): new defvar
-	* nokogiri-main.jl.in: new option, --single-level
-
-	* nokogiri-widgets/keymap.jl: set the documentation widget
-	uneditable
-
-	* nokogiri-widgets/frame-style.jl: use a GtkText widget to
-	display the theme README
-
-	* nokogiri-apply.jl (revert-slot-changes): when updating widget
-	values, call update-dependences on the slot
-
-	* nokogiri-shell.jl (initialize-shell): when possible, use
-	gtk-window-set-default-size instead of gtk-widget-set-usize
-
-	* nokogiri-dialog.jl: set the TRANSIENT_FOR hint of the dialog
-	when the necessary Gtk+ function is available
-
-	* nokogiri-widgets/keymap.jl: support commands with arguments
-
-	* nokogiri-wm.jl (wm-command-list): use nokogiri-report-commands
-	(wm-documentation): require `lisp-doc' on server-side
-
-	* nokogiri-widget.jl: removed all setting of borders from
-	widgets
-	(labelled): move the label to the left of the widget
-
-	* nokogiri-dialog.jl: don't show-all the passed-in widget
-
-2000-06-28  John Harper  <john dcs warwick ac uk>
-
-	* nokogiri-shell.jl: when flattening the group tree for the
-	GNOME capplet, use a notebook widget, not a series of frames
-	(less vertical height, so removes the need to make the
-	top-level widget a scrolled window)
-
-	* nokogiri-wm.jl, nokogiri-widget.jl, nokogiri-widget-test.jl,
-	nokogiri-widget-dialog.jl, nokogiri-user-level.jl,
-	nokogiri-slot.jl, nokogiri-shell.jl, nokogiri-main.jl.in,
-	nokogiri-layout.jl, nokogiri-i18n.jl, nokogiri-group.jl,
-	nokogiri-dialog.jl, nokogiri-config.jl,
-	nokogiri-color-preview.jl, nokogiri-apply.jl,
-
-	nokogiri-layouts/keymaps.jl,
-
-	nokogiri-widgets/program.jl, nokogiri-widgets/pair.jl,
-	nokogiri-widgets/match-window.jl, nokogiri-widgets/list.jl,
-	nokogiri-widgets/keymap.jl, nokogiri-widgets/frame-style.jl,
-	nokogiri-widgets/font.jl, nokogiri-widgets/file.jl,
-	nokogiri-widgets/color.jl, nokogiri-widgets/alist.jl: 
-
-	First check-in to main repository of new `nokogiri' config
-	interface
diff --git a/man/news.texi b/man/news.texi
index 613bddd..d89be80 100644
--- a/man/news.texi
+++ b/man/news.texi
@@ -137,6 +137,8 @@ To use the old style, put @code{(define-special-variable customize-program "sawf
 @item Move 'avoid' window-matcher from placement to state [Teika Kazura]
 
 @item Updated compat.jl [Teika Kazura]
+
+ item Removed all old ChangeLog files [Christohper Bratusek]
 @end itemize
 @end itemize
 
diff --git a/po/ChangeLog.pre-1.5.0 b/po/ChangeLog.pre-1.5.0
deleted file mode 100644
index 5dc7288..0000000
--- a/po/ChangeLog.pre-1.5.0
+++ /dev/null
@@ -1,323 +0,0 @@
-2009-03-19  Jorge Gonzalez  <jorgegonz svn gnome org>
-
-	* es.po: Updated Spanish translation
-
-2009-03-16  Inaki Larranaga Murgoitio  <dooteo euskalgnu org>
-
-	* eu.po: Updated Basque translation.
-
-2009-02-28  Jorge Gonzalez  <jorgegonz svn gnome org>
-
-	* es.po: Updated Spanish translation by Jacinto Capote Robles
-
-2008-08-04  Janek Kozicki <cosurgi gmail com>
-	* this file is deprecated now. From now on all changes are in ../Changelog
-
-2006-12-14  Pema Geyleg  <pgeyleg gmail com>
-
-	* dz.po: Added Dzongkha Translation.
-
-2006-11-19  Djihed Afifi <djihed gmail com> 
-
-	* ar.po: Added Arabic Translation.
-	* LINGUAS: Added ar.
-
-2006-09-25  Pawan Chitrakar  <pchitrakar gmail com>
-
-	* ne.po: Updated Nepali Translation
-
-2006-08-29  Christophe Merlet  <redfox redfoxcenter org>
-
-	* fr.po: Updated French translation.
-
-2006-07-19  Satoru SATOH <ss gnome gr jp>
-
-	* ja.po: Updated Japanese translation. Converted 
-	its encoding: EUC-JP -> UTF-8.
-
-2006-07-09  Nickolay V. Shmyrev  <nshmyrev yandex ru>
-
-	* ru.po: Updated Russian translation
-	by Valek Filippov <frob df ru>.
-
-2006-06-15  Hendrik Richter  <hendrikr gnome org>
-
-	* de.po: Updated German translation.
-
-2006-04-06  Priit Laes  <amd store20 com>
-
-	* et.po: Translation updated by Tõivo Leedjärv.
-
-2006-01-10  Clytie Siddall <clytie riverland net au>
-
-	* vi.po: Updated Vietnamese translation.
-
-2005-12-06  Kjartan Maraas  <kmaraas gnome org>
-
-	* nb.po: Updated Norwegian bokm�l translation.
-	* no.po: Same
-
-2005-07-28  Frank Arnold  <farnold cvs gnome org>
-
-	* de.po: Fixed typo spotted by Jens Seidel <jensseidel users sf net>.
-
-2005-07-28  Ilkka Tuohela  <hile iki fi>
-
-	* fi.po: Bulk change to some Finnish translations.       
-
-2005-07-07  Frank Arnold  <farnold cvs gnome org>
-
-	* de.po: Some additional fixes.
-
-2005-07-04  Hendrik Richter  <hendi gnome-de org>
-
-	* de.po: Fixed German translation by
-	Jens Seidel <jensseidel users sf net>.
-
-2005-05-24  Pawan Chitrakar  <pawan nplinux org>
-
-	* ne.po: added nepali translation
-
-2005-04-14  I�aki Larra�aga  <dooteo euskalgnu org>
-
-	* eu.po: Updated Basque translation.
-
-2005-04-01  Steve Murphy  <murf e-tools com>
-
-        * rw.po: Added Kinyarwanda translation.
-
-2005-03-16  Adam Weinberger  <adamw gnome org>
-
-	* en_CA.po: Updated Canadian English translation.
-
-2005-01-13  Frank Arnold  <farnold cvs gnome org>
-
-	* de.po: Updated German translation.
-
-2004-11-26  Satoru SATOH <ss gnome gr jp>
-
-	* ja.po: Updated Japanese translation
-
-2004-09-26  Adam Weinberger  <adamw gnome org>
-
-	* en_CA.po: Updated Canadian English translation.
-
-2004-09-09  Pablo Saratxaga  <pablo mandrakesoft com>
-
-	* wa.po: Updated Walloon file
-
-2004-08-21  Francisco Javier F. Serrador  <serrador cvs gnome org>
-
-	* es.po: Updated Spanish translation.
-
-2004-05-02  Vincent van Adrighem  <adrighem gnome org>
-
-	* nl.po: Translation updated by Tino Meinen.
-
-2004-04-25  Adam Weinberger  <adamw gnome org>
-
-	* en_CA.po: Added Canadian English translation.
-
-2004-04-18  Danilo Å egan  <dsegan gmx net>
-
-	* sr.po, sr Latn po: Added Serbian translation.
-
-2004-04-16  Gareth Owen  <gowen72 yahoo com>
-
-	* en_GB.po: Updated British English translation
-
-2004-04-16  Miloslav Trmac  <mitr volny cz>
-
-	* cs.po: Updated Czech translation.
-
-2004-04-05  Pablo Saratxaga  <pablo mandrakesoft com>
-
-	* wa.po: Updated Walloon file
-
-2004-03-31  Gareth Owen  <gowen72 yahoo com>
-
-	* en_GB.po: Updated British English translation
-
-2004-01-18  Christophe Merlet  <redfox redfoxcenter org>
-
-	* fr.po: Updated French translation.
-
-2004-01-16 Alastair McKinstry <mckinstry computer org>
-
-	* ga.po: Updated Irish translation.
-
-2003-10-25  Metin Amiroff  <metin karegen com>
-
-	* az.po: Updated Azerbaijani translation.
-
-2003-09-07  Pauli Virtanen  <pauli virtanen hut fi>
-
-	* fi.po: Fix to Finnish translation from Tommi Vainikainen.
-
-2003-08-17  Pauli Virtanen  <pauli virtanen hut fi>
-
-	* fi.po: Updated Finnish translation from Tommi Vainikainen.
-
-2003-07-07  Evandro Fernandes Giovanini <evandrofg ig com br>
-
-	* pt_BR.po: Updated Brazilian Portuguese translation
-	from Alexandre Folle de Menezes <afmenez terra com br>.
-
-2003-07-07  Pablo Saratxaga  <pablo mandrakesoft com>
-
-	* wa.po: Updated Walloon file
-
-2003-04-06  Duarte Loreto <happyguy_pt hotmail com>
-
-	* pt.po: Updated Portuguese translation.
-
-2003-03-25  John Harper  <jsh unfactored org>
-
-	* version 1.3
-
-2003-01-24  Stanislav Visnovsky  <visnovsky nenya ms mff cuni cz>
-
-	* sk.po: Updated Slovak translation.
-
-2003-01-23  Yuriy Syrota  <rastaman renome.rovno.ua>
-
-	* uk.po: Updated Ukrainian translation by
-	Maxim Dzumanenko <mvd mylinux com ua>.
-	
-2003-01-01  Daniel Yacob  <locales geez org>
-
-        * am.po: Updated Amharic file.
-
-2002-12-29  Daniel Yacob  <locales geez org>
-
-        * am.po: Updated Amharic file.
-
-2002-12-27  Daniel Yacob  <locales geez org>
-
-        * am.po: Updated Amharic file.
-
-2002-12-21  Daniel Yacob  <locales geez org>
-
-        * am.po: Updated Amharic file.
-
-2002-12-18  German Poo Caaman~o <gpoo ubiobio cl>
-
-	* es.po: Updates Spanish translation
-
-2002-12-10  Daniel Yacob  <locales geez org>
-
-        * am.po: Updated Amharic file.
-
-2002-12-01  Gustavo Maciel Dias Vieira  <gdvieira zaz com br>
-
-	* pt_BR.po: Updated Brazilian Portuguese translation by Alexandre
-	Folle de Menezes <afmenez terra com br>.
-
-2002-11-19  Kjartan Maraas <kmaraas gnome org>
-
-	* no.po: Updated Norwegian (bokmål) translation.
-	
-2002-11-16  Christian Neumair  <chris gnome-de org>
-
-	* de.po: Updated German translation.
-	* Changelog: Removed in favour of ChangeLog.
-
-2002-11-11  Simos Xenitellis  <simos74 gmx net>
-
-	* el.po: Updated Greek translation from Kostas Papadimas
-	<pkst gmx net> and reviewed translation.
-
-2002-11-09  Dmitry G. Mastrukov  <dmitry taurussoft org>
-
-	* be.po: Updated Belarusian translation
-	* from Belarusian team <i18n infonet by>.
-
-2002-11-09  Jordi Mallach  <jordi sindominio net>
-
-	* ca.po: Updated Catalan translation.
-
-2002-11-05  Tõivo Leedjärv  <toivo linux ee>
-
-	* et.po: Updated Estonian translation.
-
-2002-11-05  Vincent van Adrighem <V vanAdrighem dirck mine nu>
-
-    * nl.po: Dutch translation updated
-
-2002-11-05  Christian Rose  <menthos menthos com>
-
-	* sv.po: Updated Swedish translation.
-
-2002-11-04  Stanislav Visnovsky  <visnovsk nenya ms mff cuni cz>
-
-	* sk.po: Updated Slovak translation.
-
-2002-11-03  Dmitry G. Mastrukov  <dmitry taurussoft org>
-
-	* be.po: Added Belarusian translation
-	* from Belarusian team <i18n infonet by>.
-
-2002-11-01  Daniel Yacob  <locales geez org>
-
-        * am.po: Added Amharic file.
-
-2002-10-18  Andras Timar  <timar gnome hu>
-
-        * hu.po: Updated Hungarian translation.
-
-2002-09-29  Yanko Kaneti <yaneti declera com>
-
-	* bg.po: Updated Bulgarian translation by 
-	Sava Chankov <sava fmi uni-sofia bg>
-
-2002-09-19  Fatih Demir <kabalak gtranslator org>
-
-	* tr.po: Committed updated Turkish translation by Ã?Â?mer.
-
-2002-08-29  Christian Neumair  <christian-neumair web de>
-
-	* de.po: Updated German translation.
-
-2002-08-23  Peteris Krisjanis <peteris krisjanis os lv>
-
-	* lv.po: Updated Latvian translation.
-
-2002-08-20  Gustavo Noronha Silva  <kov debian org>
-
-	* pt_BR.po: translation update.
-
-2002-08-09  Christian Meyer  <chrisime gnome org>
-
-	* de.po: Updated German translation.
-
-2002-07-31  Dmitry G. Mastrukov  <dmitry taurussoft org>
-
-	* ru.po: updated Russian translation.
-
-2002-07-29  Fatih Demir <kabalak gtranslator org>
-
-	* tr.po: Committed updated Turkish translation.
-
-2002-06-19  Hasbullah Bin Pit <sebol ikhlas com>
-
-        * ms.po: Updated Malay Translation.
-
-2002-07-14  Jordi Mallach  <jordi sindominio net>
-
-	* ca.po: Updated Catalan translation.
-
-2002-07-05  Christophe Fergeau <teuf users sourceforge net>
-
-	* fr.po: Updated French translation.
-
-2002-06-25  Hasbullah Bin Pit <sebol ikhlas com>
-
-	* ms.po: Updated Malay Translation.
-
-2002-06-25  Vincent van Adrighem <V vanAdrighem dirck mine nu>
-    * nl.po: Dutch translation updated
-
-2002-06-16  Vincent van Adrighem <V vanAdrighem dirck mine nu>
-
-    * nl.po: Dutch translation updated
-
diff --git a/scripts/ChangeLog.pre-1.5.0 b/scripts/ChangeLog.pre-1.5.0
deleted file mode 100644
index ba58ee6..0000000
--- a/scripts/ChangeLog.pre-1.5.0
+++ /dev/null
@@ -1,139 +0,0 @@
-2008-08-04  Janek Kozicki <cosurgi gmail com>
-	* this file is deprecated now. From now on all changes are in ../Changelog
-
-2003-04-02  John Harper  <jsh unfactored org>
-
-	* sawfish-menu.jl: handle case where menu doesn't get realized
-	and so we shouldn't enter gtk-main. Fixes longstanding (for
-	ever!) "menu already active" bug (#89139). Patch from Jan Hudec
-	<bulb ucw cz>
-
-2002-04-09  John Harper  <jsh unfactored org>
-
-	* sawfish-menu.jl (create-menu): handle accelerators. Adapted
-	from Mayurnath Puli <mayurnath puli wipro com>
-
-2002-04-01  John Harper  <jsh unfactored org>
-
-	* sawfish-menu.jl.in: s/gtk-signal-/g-signal-/
-
-2002-02-12  John Harper  <jsh unfactored org>
-
-	* sawfish-menu.jl: 
-
-	Ported to current gnome2 rep-gtk
-
-2002-01-29  John Harper  <jsh unfactored org>
-
-	* sawfish-menu.jl, sawfish-about.jl.in: 
-
-	Changed module names for gnome2 rep-gtk
-
-2001-05-09  John Harper  <jsh pixelslut com>
-
-	* sawfish-about.jl.in: don't add the link to the iwc.org site,
-	since it disappeared a while ago..
-
-2001-02-13  John Harper  <jsh eazel com>
-
-	* version 0.36
-
-	* sawfish-about.jl.in, Makefile.in: install sawfish.png as
-	sawfish-logo.png, then reference that file (ensures that the
-	session manager splash screen doesn't pick up this file as the
-	progress icon for sawfish - looks hideous)
-
-2001-01-05  John Harper  <jsh eazel com>
-
-	* version 0.35
-
-2000-12-18  John Harper  <jsh eazel com>
-
-	* sawfish-menu.jl (create-menu): recognize a new menu item
-	attribute: `(shortcut . NAME)'. Adapted from Unai Uribarri
-	<unaiur telecable es>
-
-2000-12-10  John Harper  <jsh eazel com>
-
-	* sawfish-client.jl: `sawfish-client' is now an alias for
-	`sawfish-client -'
-
-2000-12-04  John Harper  <jsh eazel com>
-
-	* version 0.34
-
-2000-11-22  John Harper  <jsh eazel com>
-
-	* sawfish-about.jl.in: fixed __localedir__ substitution not
-	being in a string
-
-2000-11-16  John Harper  <jsh eazel com>
-
-	* sawfish-about.jl.in, Makefile.in: substitute __localedir__
-	into the script
-
-2000-10-20  John Harper  <jsh eazel com>
-
-	* sawfish-about.jl.in: changed email address, (c) message
-
-2000-09-24  John Harper  <john dcs warwick ac uk>
-
-	* sawfish-menu.jl: don't bother calling gtk_set_locale, this
-	will be done automatically when the gtk plugin is loaded
-
-2000-09-23  John Harper  <john dcs warwick ac uk>
-
-	* sawfish-about.jl.in: added link to sawfish homepage
-
-2000-09-20  John Harper  <john dcs warwick ac uk>
-
-	* version 0.31
-
-2000-09-17  John Harper  <john dcs warwick ac uk>
-
-	* sawfish-menu.jl (create-menu): added `(insensitive . BOOL)'
-	option to allow ghosted menu items
-
-2000-09-08  John Harper  <john dcs warwick ac uk>
-
-	* sawfish-about.jl.in: Open the necessary modules that aren't
-	included in `rep' structure anymore (rep.regexp, rep.system,
-	rep.io.streams, rep.io.files, rep.io.file-handlers)
-
-2000-09-07  John Harper  <john dcs warwick ac uk>
-
-	* sawfish-menu.jl: added a `(group . ID)' option, radio-items
-	are created such that all items with the same ID are in the
-	same radio group
-
-	* sawfish-menu.jl: menu items can now be dotted to an alist of
-	options. Currently the only option is `(check . BOOL)'
-
-2000-09-04  John Harper  <john dcs warwick ac uk>
-
-	* Makefile.in: make sawfish-about.jl depend on ./Makefile
-
-	* sawfish-about.jl.in: hacked the `exec' line to work with
-	solaris /bin/sh
-
-2000-09-03  John Harper  <john dcs warwick ac uk>
-
-	* sawfish-client.jl: print a copyright banner when starting the
-	repl
-
-	* sawfish-client.jl (do-eval): remember to update current-repl
-	after reading the new structure over the connection
-
-	* sawfish-client.jl (rl-completion-generator): use
-	repl-completions function to generate completions
-
-2000-09-01  John Harper  <john dcs warwick ac uk>
-
-	* sawfish-about.jl.in: an `about' program for sawfish, uses the
-	GnomeAbout dialog when possible (via sawfish.gtk.stock)
-
-	* sawfish.png: logo for the about program, borrowed from
-	http://iwc.org/volunteers/archives/Oct98/spec_pg0.htm
-
-	* sawfish-menu.jl, sawfish-client.jl: moved here from ../src
-
diff --git a/src/ChangeLog.pre-1.5.0 b/src/ChangeLog.pre-1.5.0
deleted file mode 100644
index 1a51926..0000000
--- a/src/ChangeLog.pre-1.5.0
+++ /dev/null
@@ -1,3778 +0,0 @@
-2008-08-04  Janek Kozicki <cosurgi gmail com>
-	* this file is deprecated now. From now on all changes are in ../Changelog
-
-2006-05-15  John Harper  <jsh unfactored org>
-
-	* frames.c, events.c: merged changes from Philip Langdale to
-	propagate input shape of client window to frame
-
-2006-05-08  John Harper  <jsh unfactored org>
-
-	* sawmill.h: frame x/y should be signed (from Yoshiaki Kasahara)
-
-2005-06-26  Philip Langdale <philipl mail utexas edu>
-
-	* sawmill.h: Add StructureNotify to the root window event mask.
-
-	* events.c (configure_notify): Add a configure-notify-hook and
-	emit it on the expected occasions. Respond to configureNotify
-	events on the root window by calling into Xrandr (if the
-	extension is available) and updating the cached screen 	size
-	and xinerama information.
-
-	* functions.c, sawmill_subrs.h (update_xinerama_info): Refactor
-	xinerama discovery into a separate function so it can be called
-	on Xrandr screen size change events.
-
-2005-02-11  John Harper  <jsh unfactored org>
-
-	* windows.c (Fwindow_frame_id): new function to return the
-	window id of the window's frame (adapted from patch from Philip
-	Langdale <philipl mail utexas edu>)
-
-	* frames.c (list_frame_generator): integrated patch from Amit
-	Gurdasani <amitg alumni cmu edu> to detect windows with ARGB
-	visuals and use that for the frame window as well
-
-2005-02-06  John Harper  <jsh unfactored org>
-
-	* functions.c (Fsync_server): added optional arg WAIT (when
-	true, calls Xsync not XFlush)
-
-2005-01-04  John Harper  <jsh unfactored org>
-
-	* sawmill_subrs.h, main.c, display.c: cleaned up some global
-	variables
-
-	* x.c, windows.c, selection.c, images.c, frames.c, events.c:
-	fix compiler warnings
-
-	* events.c (property_notify): handle STRING properties through
-	the XmbTextPropertyToTextList () function, needed to convert
-	from Latin-1 to current locale (patch from Jean-Christophe
-	Dubacq <jean-christophe dubacq ens-lyon org> via Christian
-	Marillat)
-
-2004-11-15  John Harper  <jsh unfactored org>
-
-	* keys.c: applied patch from Tuukka Hastrup iki fi to support
-	buttons 8 and 9
-
-2004-10-17  John Harper  <jsh unfactored org>
-
-	* fonts.c (Fget_font_typed): fix typo when checking for match
-	with existing font objects (from rbasch mit edu, #155334)
-
-2004-02-19  John Harper  <jsh unfactored org>
-
-	* keys.c (find_meta): reset global modifier variables to zero
-	before scanning keymap (suggested by Michal Maru¹ka
-	<mmc maruska dyndns org>)
-
-2003-10-29  John Harper  <jsh unfactored org>
-
-	* functions.c (Fget_x_property): patch from David Mosberger to
-	fix reading `negative' unsigned values on 64-bit platforms
-	(with a special case I added to read XA_INTEGER properties)
-
-2003-08-18  John Harper  <jsh unfactored org>
-
-	* windows.c, sawmill_subrs.h, events.c, display.c: cleaned up
-	some code
-
-2003-08-13  John Harper  <jsh unfactored org>
-
-	Integrated patches from Shun-ichi TAHARA <jado flowernet gr jp>:
-
-	* fonts.c: check for GDK_USE_XFT and choose a different default
-	font (Xft "Sans") if it's set
-
-	* fonts.c: added `Pango' font class
-
-2003-07-17  John Harper  <jsh unfactored org>
-
-	* x.c, windows.c, frames.c, events.c: fixed gcc 3.3 type
-	punning warnings
-
-	* frames.c (list_frame_generator): propagate save-under setting
-	from client window to its frame (patch from Michal Maru¹ka
-	<mmc maruska dyndns org>)
-
-2003-05-06  John Harper  <jsh unfactored org>
-
-	* fonts.c (x_draw_string): don't try to return a void value,
-	from Albert Chin
-
-2003-03-27  John Harper  <jsh unfactored org>
-
-	* windows.c (add_window): set w->name to the null string (patch
-	from Michal Maru¹ka <mmc maruska dyndns org>)
-
-2003-03-25  John Harper  <jsh unfactored org>
-
-	* version 1.3
-
-2003-02-21  John Harper  <jsh unfactored org>
-
-	* events.c (button_press): don't cache the clicked frame part
-	while evaluating the event - it may get garbage collected.
-	Fixes valgrind errors while repeatedly shading/unshading
-	windows (which should fix #69817)
-
-2003-02-19  John Harper  <jsh unfactored org>
-
-	* events.c (gravity_notify): empty function to avoid warnings
-	about unhandled events
-
-2003-01-09  John Harper  <jsh unfactored org>
-
-	Merged from HEAD:
-
-	* windows.c (install_window_frame, remove_window_frame):
-	integrated patch from Michal Maru¹ka to set client's window
-	gravity to StaticGravity while it's reparented
-
-2002-12-24  John Harper  <jsh unfactored org>
-
-	* gtk-style.c (print_rc_style): removed code to print font
-	names, was protected by #if condition that fails for gtk 2.2
-
-2002-11-13  John Harper  <jsh unfactored org>
-
-	Merged from HEAD:
-
-	* windows.c (remove_window): only call focus_off_window () when
-	not being called from the X error handler. Fixes #98405
-
-2002-11-09  John Harper  <jsh unfactored org>
-
-	* version 1.2
-
-2002-11-03  John Harper  <jsh unfactored org>
-
-	* merged color changes from HEAD:
-
-	* sawmill.h (Lisp_Color): now contains alpha value
-
-	* colors.c (Fget_color_rgb, Fget_color): both now take an extra
-	ALPHA parameter
-	(Fcolor_rgb, Fcolor_rgb_8): both now return an extra element in
-	the list, the alpha value
-
-	* fonts.c (xft_draw): use alpha field in color, instead of
-	defaulting to fully opaque
-
-	* images.c, functions.c, frames.c, cursors.c: updated callers
-
-2002-11-02  John Harper  <jsh unfactored org>
-
-	* merged font changes from HEAD:
-
-	2002-11-02  John Harper  <jsh unfactored org>
-
-	* fonts.c, sawmill.h: different font rendering methods are now
-	better abstracted, using the Lisp_Font_Class structure
-
-	(get-font-typed, font-type-exists-p, font-type): new functions,
-	allows a font to be loaded from a type+name combination,
-	instead of just a name, which may be ambiguous when multiple
-	renderers are being used
-
-	Current types are "xlfd" for traditional X fonts, and "Xft" for
-	Xft client-side rendered fonts. The old get-font function
-	always tries to load xlfd fonts, for backwards compatibility
-
-	For now, Xft fonts can be used like this:
-
-	(when (and (boundp 'font-type-exists-p)
-		   (font-type-exists-p "Xft"))
-	  (setq default-font (get-font-typed "Xft" "Trebuchet MS-11")))
-
-	2002-11-02  John Harper  <jsh unfactored org>
-
-	* fonts.c (x_draw_string): now takes an explicit foreground
-	color parameter, instead of using the one in the gc
-
-	* x.c, sawmill_subrs.h, functions.c, frames.c: updated callers
-
-2002-10-20  John Harper  <jsh unfactored org>
-
-	* more merging:
-
-	2002-10-20  John Harper  <jsh unfactored org>
-
-	* windows.c, sawmill_subrs.h, sawmill.h, events.c: removed code
-	to read WM_TRANSIENT_FOR property, handled by Lisp code now
-
-	2002-10-19  John Harper  <jsh unfactored org>
-
-	* keys.c (find_meta): use our own nconc function
-
-	2002-10-03  John Harper  <jsh unfactored org>
-
-	* functions.c (Fget_x_text_property, Fset_x_text_property):
-	deleted, these are now written in lisp
-
-2002-09-30  John Harper  <jsh unfactored org>
-
-	* merging from HEAD:
-
-	2002-10-01  John Harper  <jsh unfactored org>
-
-	* property-cache.c (property_cache_ref): fixed silly bug
-	(returning nil not null before cache is initialized)
-
-	2002-09-29  John Harper  <jsh unfactored org>
-
-	* sawmill.h, fonts.c: refactored some of the font loading code
-
-	2002-09-28  John Harper  <jsh unfactored org>
-
-	* events.c (configure_request): for `position' configuration,
-	pass nil x or y if unset (instead of just ignoring it). Part of
-	fixing #83431
-
-	2002-09-28  John Harper  <jsh unfactored org>
-
-	Some performance optimizations, especially avoiding server
-	round trips:
-
-	* property-cache.c: new file, cache results of
-	[gs]et-x-property (doesn't do [gs]et-x-text-property yet)
-
-	* functions.c, frames.c, events.c: use/maintain the property
-	cache
-
-	* frames.c (apply_mask, configure_frame_part): turn off
-	graphics exposure events in GCs
-	* functions.c (refresh_message_window): same
-	* images.c (paste_image_to_drawable): same
-
-	* frames.c (set_frame_part_bg): don't reshape frames every time
-	we redraw the background, too expensive
-
-	2002-09-21  John Harper  <jsh unfactored org>
-
-	* stacking-list.c: replaced assert () instances by non-terminal
-	macros, i.e. they'll print a message but not abort the program.
-	Lame-ass way of "fixing" #81027
-
-	* sawmill.h (return_if_fail, return_val_if_fail,
-	nonterminal_assert): new macros
-
-	* windows.c (Fwindow_size_hints): accept min size == 0 and set
-	it to one, should fix #77639
-
-	2002-09-01  John Harper  <jsh unfactored org>
-
-	* server.c (server_accept_connection): don't pass null pointers
-	to accept (), it's been reported to cause crashes (patch
-	suggested by Sergey Bratus <sergey cs dartmouth edu>)
-
-2002-06-28  John Harper  <jsh unfactored org>
-
-	* version 1.1
-
-2002-05-06  John Harper  <jsh unfactored org>
-
-	* More merging from HEAD:
-
-	2002-04-22  John Harper  <jsh unfactored org>
-
-	* functions.c (Fset_x_text_property): added optional fourth arg
-	ENCODING-ATOM. To allow #67397 to be fixed
-
-	* events.c: more focus change fallout
-
-2002-04-21  John Harper  <jsh unfactored org>
-
-	* Merged changes from HEAD:
-
-	2002-04-21  John Harper  <jsh unfactored org>
-
-	* events.c (events_init): pointer-motion-threshold isn't set
-
-	2002-04-17  John Harper  <jsh unfactored org>
-
-	Work to fix fallout from fix for #67958 (focus getting lost
-	sometimes):
-
-	* windows.c (pending_focus_window): deleted this variable
-
-	(focus_off_window): if the window is the one that's currently
-	focused, call XSetInputFocus to immediately transfer focus to
-	our window that gets the focus if nothing else has it. This
-	avoids us getting left with nothing focused (e.g. if we send
-	WM_TAKE_FOCUS to a window that doesn't accept the focus)
-
-	* windows.c (commit_queued_focus_change): disabled call to
-	check_for_lost_focus ()
-
-	* windows.c (find_window_by_id, x_find_window_by_id): don't do
-	debugging printing here
-	* events.c (handle_input_mask): print names of windows when
-	debugging is enabled
-
-	2002-04-12  John Harper  <jsh unfactored org>
-
-	* windows.c (remove_window, install_window_frame,
-	remove_window_frame): update pending_focus_window and
-	queued_focus_id as necessary (fixes a "lost focus" bug)
-
-	2002-04-09  John Harper  <jsh unfactored org>
-
-	* windows.c (commit_queued_focus_change, focus_on_window,
-	focus_off_window): removed broken "timestamp - 1" kludge.
-	Instead defer both sending WM_TAKE_FOCUS and focusing windows
-	until idle time. Fixes #67958
-
-	* events.c (button_press, motion_notify): only accept pointer
-	events we're expecting (either directly on one of our windows,
-	or while the pointer is grabbed)
-	(mark_pointer_grabbed, ungrab_pointer): new functions
-	* main.c, keys.c, functions.c, frames.c: call ungrab_pointer ()
-	instead of XUngrabPointer (). Fixes #44239
-
-	* images.c (bevel_pixel): use integer arithmetic
-	* sawmill.h: define CLAMP macro
-
-	* main.c (main): if DEBUG == 1, put stdout into line buffering
-	mode
-
-	2002-04-08  John Harper  <jsh unfactored org>
-
-	* libclient.c (unix_server_init): print an error message if
-	connect () fails
-
-	2002-04-03  John Harper  <jsh unfactored org>
-
-	* display.c (error_handler): only interpret BadWindow and
-	BadDrawable errors as meaning that a window died. May fix
-	#74799
-
-	2002-04-02  John Harper  <jsh unfactored org>
-
-	* events.c (Fx_server_timestamp): added another arg STORE. When
-	true, save the timestamp for later use.. needed for #77041
-
-	2002-03-19  John Harper  <jsh unfactored org>
-
-	* functions.c (message_event_handler): only redraw on the final
-	expose event
-
-2002-03-19  John Harper  <jsh unfactored org>
-
-	* Merged changes from HEAD:
-
-	2002-03-01  John Harper  <jsh pixelslut com>
-
-	* windows.c (manage_windows): unmap the window before faking
-	the call to the map-request event handler. Fixes #67601 (causes
-	the expected map-notify event to be sent when we later map it)
-
-	2002-02-17  John Harper  <jsh unfactored org>
-
-	* windows.c (remove_window): check for w->id == 0 immediately
-	before calling remove_from_stacking_list (). Avoids triggering
-	an assertion on logout (since remove_window () may be called
-	recursively from the error handler!)
-
-	2002-01-24  John Harper  <jsh unfactored org>
-
-	* frames.c: fixed definitions of Qtop and Qbottom. This bug
-	must have existed forever!
-
-2002-01-10  Sander Vesik <sander vesik sun com>
-
-	* image.c: gdk_pixbuf_new_from_file now takes two parameters
-
-	* main.c: conditionaly include glib-object.h and call
-	g_type_init() if we are using gdk_pixbuf
-
-	* gtk-style.c: GtkRcStyle no longer has font and font_set
-	members
-
-	* sawmill.h: gdk-pixbuf-xlib.h now lives in gdk-pixbuf-xlib
-
-2001-12-05  John Harper  <jsh unfactored org>
-
-	* windows.c (Fwindow_visibility): check argument is windowp
-	(patch from Michal Maru¹ka <mmc maruska dyndns org>)
-
-2001-11-12  John Harper  <jsh unfactored org>
-
-	Fixed bug of not rereading WM_WINDOW_PROTOCOLS when it changes:
-
-	* events.c (property_notify): call get_window_protocols on
-	WM_WINDOW_PROTOCOLS events
-
-	* windows.c (get_window_protocols): clear the window's
-	does_wm_X flags before reading the property
-
-2001-11-03  John Harper  <jsh unfactored org>
-
-	Fixed bug where Nautilus windows often don't get focused in
-	focus follows mouse mode:
-
-	* windows.c (focus_on_window): don't call XSetInputFocus ()
-	directly store the parameters for later
-
-	(commit_queued_focus_change): new function, calls
-	XSetInputFocus () if there's a queued focus change waiting
-
-	* events.c (handle_input_mask): call commit_queued_focus_change
-	() before exiting
-
-2001-10-21  John Harper  <jsh unfactored org>
-
-	Fixed bug where warp-cursor doesn't invalidate the pointer
-	location cache:
-
-	* functions.c (Fwarp_cursor): call
-	invalidate_cached_mouse_position after warping the cursor
-
-	* events.c (invalidate_cached_mouse_position): new function
-
-2001-10-14  John Harper  <jsh unfactored org>
-
-	* version 1.0.1
-
-2001-08-31  John Harper  <jsh pixelslut com>
-
-	* windows.c (focus_on_window): subtract one from the last seen
-	server timestamp when sending the WM_TAKE_FOCUS message. The
-	explanatory comment in the source reads:
-
-	The -1 is an Ugly Hack. The problem is with the case where the
-	window focuses itself after receiving the WM_TAKE_FOCUS
-	message. If during the time between us sending the client
-	message and the window focusing itself we focused another
-	window using the same timestamp, the original window (that
-	received the client message) will still get focused.
-
-	I'm assuming that it's unlikely that two events will arrive
-	generating focus changes with timestamps that only differ by
-	one..
-
-2001-08-24  John Harper  <jsh pixelslut com>
-
-	* events.c (unmap_notify): call remove_window () on unmapped
-	(withdrawn) windows. This fixes some standards-compliance bugs
-	due to us handling windows differently the second time they're
-	mapped than the first
-
-2001-07-02  John Harper  <jsh pixelslut com>
-
-	* version 0.99
-
-2001-06-20  John Harper  <jsh pixelslut com>
-
-	* sawmill_subrs.h, multihead.c, main.c, Makefile.in: support a
-	`--multiehead' command-line option. When given and the X server
-	has more than one screen, fork extra copies of sawfish for each
-	extra screen. This has some fundamental problems (e.g. the
-	copies share files in ~/.sawfish without any synchronization),
-	but seems to be useful for some people..
-
-	The other people who contributed to this feature are Michael
-	Vogt and Mahmood Ali
-
-2001-06-12  John Harper  <jsh pixelslut com>
-
-	* display.c (sys_init): if XQueryShapeExtension fails, print a
-	message and terminate the wm
-
-2001-06-04  John Harper  <jsh pixelslut com>
-
-	* windows.c (focus_on_window): don't update focus_window after
-	calling XSetInputFocus (), instead wait for the focus-in event
-	to do this
-
-	(pending_focus_window): new variable to make this work
-	correctly
-
-	(focus_off_window): new function, called when a window becomes
-	unfocusable
-
-	* events.c (unmap_notify): call focus_off_window
-	(focus_in): nullify pending_focus_window if it actually gets
-	focused
-
-2001-05-22  John Harper  <jsh pixelslut com>
-
-	Fixed bug 8220 (Having Ctrl as default "modifier key used for
-	default WM shortcuts" breaks everything...):
-
-	* keys.c (wm_mod): default window manager modifier is once more
-	`M-' instead of `C-'
-
-2001-05-04  John Harper  <jsh eazel com>
-
-	* keys.h, keys.c: added support for Off2 and Off3 event types
-	(button release events). Also changed it so that Click1 events
-	now print as `Click'
-
-2001-04-22  John Harper  <jsh eazel com>
-
-	* colors.c (colors_init): use `#000000' instead of `black'.
-	This will still work even if rgb.txt doesn't exist. Also check
-	for Fget_color () throwing an exception
-
-2001-04-11  John Harper  <jsh eazel com>
-
-	Fixed bug 6970 (X plugin doesn't update width and height of
-	drawable structure):
-
-	* x.c (x_window_note_changes): new function, called by
-	Fx_configure_window () after making changes
-
-2001-03-29  John Harper  <jsh eazel com>
-
-	Fixed an ICCCM compliance problem:
-
-	* functions.c, events.c (configure_request, Fresize_window_to,
-	Fmove_resize_window_to): don't send a synthetic configure
-	notify event if the window was resized (in which case a real
-	configure notify was generated)
-
-2001-03-21  John Harper  <jsh eazel com>
-
-	* fonts.c (x_create_font_set): reverted the last change to
-	merge calls to setlocale (). (I had failed to realize that the
-	result of calling setlocale describes the current locale not
-	the original one). Also added some code to copy the returned
-	locale name since it's in a static buffer
-
-2001-03-19  John Harper  <jsh eazel com>
-
-	* windows.c, sawmill.h: moved XUrgencyHint definition to
-	sawmill.h
-
-2001-03-14  John Harper  <jsh eazel com>
-
-	* version 0.38
-
-2001-03-09  John Harper  <jsh eazel com>
-
-	* cursors.c (cursors_init): set default_cursor to Qnil when in
-	batch mode (to prevent Fdefault_cursor () returning a null
-	value)
-
-2001-03-07  John Harper  <jsh eazel com>
-
-	* functions.c (Fx_raise_window, Fx_lower_window): when these
-	functions are given a sibling, check if it has been destroyed.
-	If so, do nothing to the stacking order
-
-	(This should fix a failed assertion that Ramiro and Duane were
-	seeing)
-
-2001-02-26  John Harper  <jsh eazel com>
-
-	* keys.c (wm_mod): changed default value from EV_MOD_META to
-	ControlMask. Part of my fix to bug 7073
-
-2001-02-19  John Harper  <jsh eazel com>
-
-	* version 0.37.3
-
-	* windows.c (install_window_frame, remove_window_frame): only
-	do the reparenting if the window hasn't been destroyed
-
-	* stacking-list.c (restack_window): just return immediately if
-	the window has already been destroyed
-
-	* stacking-list.c (window_in_stacking_list_p): new predicate,
-	used to replace the assert_window_[not_]in_stacking_list
-	functions (which have been deleted)
-
-2001-02-18  John Harper  <jsh eazel com>
-
-	* functions.c (Frestack_windows, Fx_raise_window,
-	Fx_lower_window): be sure to never alter the stacking of
-	destroyed windows
-
-	[ I think this should fix the random crashes that some people
-	have been experiencing - it was possible for a deleted window
-	to be reinserted in the stacking list. Then, when the deleted
-	window got garbage collected bogus pointers were left in the
-	list.. ]
-
-	* stacking-list.c: added yet more assertions, this time to
-	check that destroyed windows aren't being manipulated where
-	they shouldn't be
-
-	* sawmill.h (WINDOW_IS_GONE_P): new macro, evaluates to true
-	when the window object no longer has an associated client
-	window
-      	
-	* windows.c, frames.c, display.c, keys.c: use the above macro
-	instead of `w->id == 0'
-
-2001-02-16  John Harper  <jsh eazel com>
-
-	* stacking-list.c (assert_window_in_stacking_list,
-	assert_window_not_in_stacking_list): new functions
-
-	* windows.c: use the stacking-list assertions in sensible
-	places
-
-2001-02-15  John Harper  <jsh eazel com>
-
-	* stacking-list.c: added debugging assertions
-
-2001-02-13  John Harper  <jsh eazel com>
-
-	* version 0.37
-
-	* windows.c (remove_window): only call
-	remove_from_stacking_list () once per window
-
-2001-02-11  John Harper  <jsh eazel com>
-
-	* session.c (save_yourself_2): set outstanding_save_done to
-	false after calling SmcSaveYourselfDone ()
-
-2001-02-09  John Harper  <jsh eazel com>
-
-	Work to cache the stacking order of windows locally - this
-	fixes the bug where reparenting windows screws the stacking
-	order and therefore makes the constraint-based stacking code go
-	haywire. It's also an efficiency win since we don't need to
-	keep asking the server for the order
-
-	* stacking-list.c: new file, code to maintain and manipulate a
-	doubly linked list of all managed windows, representing the
-	current stacking order. Also has a function to restack a window
-	such that it's consistent with its position in the list
-
-	* sawmill.h (Lisp_Window): new fields `above' and `below' -
-	linkage for the stacking list
-
-	* functions.c (Frestack_windows, Fx_raise_window,
-	Fx_lower_window): these are now implemented in terms of the
-	stacking list primitives. The method is simple: get the list
-	into the new order, then call restack_window () on any windows
-	that changed position in the list
-
-	* windows.c (Fstacking_order): just call make_stacking_list ()
-
-	(add_window, remove_window): add and remove the window from the
-	stacking list
-
-	(install_window_frame, remove_window_frame): after calling
-	XReparentWindow (), call restack_window () to fix the stacking
-	order of the window - this fixes the original bug
-
-2001-02-07  John Harper  <jsh eazel com>
-
-	* colors.c (Fget_color): don't try to call XParseColor if we
-	have no display connection, just return nil. Patch from merlin
-	<merlin merlin org
-
-	* fonts.c (x_create_font_set): merged two calls to setlocale ()
-	into one. This also avoids problems with its possibly static
-	buffer
-
-2001-02-06  John Harper  <jsh eazel com>
-
-	* functions.c (functions_init): call XineramaQueryExtension
-	before XineramaQueryScreens (in case the extension isn't
-	present)
-
-2001-01-28  John Harper  <jsh eazel com>
-
-	* session.c (shutdown_cancelled): if we've not already, send a
-	SaveYourselfDone message (required by the XSM protocol)
-
-	* main.c (Fexit_type): new function, returns the type of exit
-	currently in progress, one of the symbols: `user-quit',
-	`user-restart', `session-quit' (or nil if no exit in progress)
-
-	* events.c (save_timestamp): (try to) be more intelligent when
-	detecting out of order timestamps. Instead of just discarding
-	them, fetch the real time from the X server, then set
-	`last_event_time' to the timestamp closest to the current
-	server time.
-
-	This avoids sometimes dropping valid timestamps (e.g. after an
-	APM resume, focus changes could be lost for a short time)
-
-2001-01-20  John Harper  <jsh eazel com>
-
-	* version 0.36
-
-2001-01-18  John Harper  <jsh eazel com>
-
-	* windows.c: work around XUrgencyHint only being defined on
-	X11R6 and later
-
-2001-01-17  John Harper  <jsh eazel com>
-
-	* frames.c (set_frame_shapes): apply the mask of the image
-	associated with	the current state of the frame part, not always
-	the inactive state
-
-	* frames.c (set_frame_part_bg): if applying a pixmap with no
-	mask, set the shape to be the rectangle defined by the edges of
-	the frame part. This fixes the bug where parts in which only
-	some of the constituent images have alpha channels, get
-	corrupted when resized
-
-	* frames.c (configure_frame_part): if the window already
-	exists, call XClearArea () to generate an Expose event. This
-	fixes the bug where window decorations can update
-	inconsistently when resizing windows
-
-2001-01-15  John Harper  <jsh eazel com>
-
-	* keys.c (Fbind_keys): signal an error when <1 arg, don't just
-	return rep_NULL (which may cause a crash later)
-
-2001-01-09  John Harper  <jsh eazel com>
-
-	* windows.c (Fwindow_icon_image): added support for icons
-	stored on the KWM_WIN_ICON property (aka `mini icons'). Only
-	used when there's no icon in WM_HINTS
-
-	* images.c (Fcrop_image): fix typo when checking validity of
-	HEIGHT parameter (patch from martin whoever com)
-
-2001-01-05  John Harper  <jsh eazel com>
-
-	* version 0.35
-
-2001-01-04  John Harper  <jsh eazel com>
-
-	* events.c (map_request): be sure to map the frame (if
-	appropriate) _before_ calling the map-notify-hook. Otherwise X
-	errors can result from code thinking the frame is visible when
-	it isn't yet. Fixes bug 5243 (shaded windows die on restart)
-
-2001-01-02  John Harper  <jsh eazel com>
-
-	* images.c (Fcomposite_images): fixed bugs in both gdk-pixbuf
-	and Imlib versions
-
-2000-12-30  John Harper  <jsh eazel com>
-
-	* gtk-style.c (states): reordered this array so that it matches
-	the actual GtkStateType enum. Patch from <michaelj maine rr com>
-
-2000-12-22  John Harper  <jsh eazel com>
-
-	* images.c (Fmake_image_from_x_drawable): special cased (=
-	depth 1) case for gdk-pixbuf substrate
-
-2000-12-18  John Harper  <jsh eazel com>
-
-	* keys.c (direct_modifiers): only substitute physical for
-	virtual modifiers if the physical modifiers actually exist.
-	Otherwise just preserve the virtual bits
-
-	(translate_event_to_x_button, translate_event_to_x_key): if
-	after translating modifiers, any virtual modifiers still exist,
-	don't accept the event
-
-	* keys.h (EV_VIRT_MOD_MASK): new definition, the bits
-	representing virtual (non X-native) modifiers
-
-2000-12-05  John Harper  <jsh eazel com>
-
-	* keys.c (lookup_event): reject events if they're button events
-	but don't have at least one button modifier (or the `Any'
-	modifier) set. Fixes #4983
-
-2000-12-04  John Harper  <jsh eazel com>
-
-	* keys.c: support Button6 and Button7
-	* keys.h: define Button6 and Button7 values to their logical
-	values (known to work on XFree86 version 4)
-
-	[ adapted from a patch by Steve Haslam <araqnid debian org> ]
-
-	* images.c (Fimage_modifier, Fset_image_modifier): fixed bug of
-	not accepting () to stand for all three color components
-
-	* version 0.34
-
-2000-11-28  John Harper  <jsh eazel com>
-
-	* keys.c (wm_mods, Fwm_modifier, Fset_wm_modifier): a new
-	modifier, `W-', that's user-settable
-	(Fevent_match): new function for comparing events
-
-	* keys.h (EV_MOD_WM): new bit
-
-2000-11-27  John Harper  <jsh eazel com>
-
-	* x.c (x_window_event_handler): ignore any expose events which
-	don't have a zero `count' field
-
-2000-11-26  John Harper  <jsh eazel com>
-
-	* events.c, functions.c (client_message, Fget_x_property): when
-	converting from 32-bit data use rep_make_long_uint () instead
-	of rep_MAKE_INT () (which will fail on large values)
-
-2000-11-20  John Harper  <jsh eazel com>
-
-	* events.c (focus_out): if unable to find a window, check for a
-	deleted window, and nullify focus_window variable if one is
-	found
-
-	* windows.c (remove_window): don't nullify focus_window if
-	removing the focused window
-	(window_mark_type): mark focus_window variable
-
-	* events.c, functions.c, windows.c (Fquery_pointer,
-	Fquery_pointer_window, Flist_x_properties, Fget_x_property,
-	Fstacking_order): don't call emit_pending_destroys () after
-	round trip requests, let them be delivered synchronously
-
-	* events.c: removed all the ignore-fp-keymap stuff
-
-2000-11-18  John Harper  <jsh eazel com>
-
-	* x.c (x_window_event_handler): pass the window as the second
-	argument to event handlers (event type is the first). Patch
-	from Unai Uribarri Rodríguez <unaiur telecable es>
-
-2000-11-16  John Harper  <jsh eazel com>
-
-	* main.c (sawfish_symbols): defvar `sawfish-locale-directory'
-	to the value of the SAWFISH_LOCALEDIR macro
-
-2000-11-14  John Harper  <jsh eazel com>
-
-	* windows.c (register_property_monitor, Fwindow_put): a general
-	interface for getting notification when the value of a window
-	property is changed
-
-	* keys.c (keymap_prop_change): property change handler for
-	Qkeymap (used to be embedded into Fwindow_put)
-
-	* events.c (ignore_fp_prop_change): called when the
-	ignore-fp-keymap property is changed, if a context map is
-	cached, recompute it (really fixes #4708)
-
-	* events.c (current_context_map): cache the context map across
-	calls
-	(flush_current_context_map): new function
-
-	(button_press, motion_notify): new semantics for context maps
-	in motion events, the map is the map that was active when the
-	button-press event was received. This fixes the
-	fast-window-drag bug #4708
-
-2000-11-13  John Harper  <jsh eazel com>
-
-	* version 0.33.1
-
-2000-11-10  John Harper  <jsh eazel com>
-
-	* events.c (current_context_map): new function, replaces the
-	variable of the same name (the context map may now change
-	depending on the environment, so it's not cachable). If the
-	window's ignore-fp-keymap property is set, give a null context
-	keymap
-
-2000-11-08  John Harper  <jsh eazel com>
-
-	* version 0.33
-
-2000-11-07  John Harper  <jsh eazel com>
-
-	* frames.c (set_frame_shapes): fix stupid bug of getting
-	dimensions of scaled images wrong (introduced by the last
-	change)
-
-2000-11-06  John Harper  <jsh eazel com>
-
-	* frames.c (apply_mask): local function to clip a mask (if
-	required) before union'ing it onto the destination window
-
-	(set_frame_shapes): use apply_mask () to form the image mask,
-	otherwise only images whose dimensions are an integer multiple
-	of the tiled image can be created without corrupting the
-	surrounding state. Fixes #4519
-
-	* pixmap-cache.c: added code to disable the pixmap cache if
-	DISABLE_CACHE preprocessor macro is defined
-
-2000-11-02  John Harper  <jsh eazel com>
-
-	* events.c (focus_in, focus_out): pass MODE parameter to
-	focus-{in,out}-hook as for leave/enter hooks
-
-2000-10-28  John Harper  <jsh eazel com>
-
-	* windows.c (window_input_hint_p): new function
-	(focus_on_window, Fwindow_wants_input_p): use
-	window_input_hint_p. Fixes the bug where window-wants-input-p
-	wasn't checking if the InputHint flag was set before reading
-	the value
-
-2000-10-24  John Harper  <jsh eazel com>
-
-	* events.c: reverted last change (it breaks some focus stuff),
-	instead the leave/enter hooks pass an extra argument: MODE, one
-	of the symbols `normal', `grab' or `ungrab', the xcrossing.mode
-	field of the event
-
-	* events.c: only call leave-notify-hook or enter-notify-hook
-	for NotifyNormal events (i.e. ignore Grab/Ungrab events since
-	they don't really represent the pointer crossing window
-	boundaries)
-
-2000-10-22  John Harper  <jsh eazel com>
-
-	* functions.c (Fdisplay_message): new attribute `head . ID'
-	specifying the head to centre the message on. Adapted from a
-	patch from Geoff Reedy <vader21 imsa edu>
-
-2000-10-19  John Harper  <jsh eazel com>
-
-	* version 0.32
-
-2000-10-18  John Harper  <john dcs warwick ac uk>
-
-	* events.c (property_notify): track changes to the
-	flags.XUrgencyHint field, invoke window-state-change-hook when
-	it flips (passing `urgency' state). Also fixed some obscure gc
-	protection stuff
-
-	* windows.c (Fwindow_urgent_p): new function
-
-2000-10-09  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (eval_input_event): only set current_event to null
-	when leaving the top-level event loop. This helps when working
-	with multiple commands and/or event loops
-
-2000-10-05  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (Fwindow_wants_input_p): if no WM_HINTS, default to
-	false. Also if the window supports WM_TAKE_FOCUS, always return
-	true
-
-	(focus_on_window): if sending a WM_TAKE_FOCUS message, only
-	explicitly focus on the window if it's accepts-input hint is
-	set
-
-2000-09-28  John Harper  <john dcs warwick ac uk>
-
-	* fake-libexec: patch from John H. Palmieri
-	<palmieri math washington edu> to link to libfoo.so as well as
-	foo.la (for Tru64?)
-
-2000-09-22  John Harper  <john dcs warwick ac uk>
-
-	* images.c (images_init): check return value of imlib_init ()
-	and bail out if failure
-
-2000-09-20  John Harper  <john dcs warwick ac uk>
-
-	* version 0.31
-
-2000-09-17  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.h (Lisp_Window): added bitfield `pending_reshape'
-
-	* frames.c (queue_reshape_frame, commit_queued_reshapes): new
-	functions to allow calls to set_frame_shapes () to be buffered
-
-	(set_frame_part_bg): if the background changes, queue a reshape
-	of the frame. This removes the long-standing misfeature that
-	the different states of each frame part must have the same
-	shape
-
-	[ it also means that a lot of needless shaping is happening;
-	this could perhaps be reduced by writing a function that just
-	calculates the shape of a given sub-region of the frame ]
-
-	* events.c (shape_notify): use queue_reshape_frame () instead
-	of set_frame_shapes ()
-
-	* display.c (redisplay): call commit_queued_reshapes ()
-
-	* play-sample.c: exit fn is called rep_dl_kill not rep_dl_exit
-
-2000-09-07  John Harper  <john dcs warwick ac uk>
-
-	* x.c: make r_fns and x_fns global, and initialize them once
-	(non-constant array initializers are a GCC extension)
-
-2000-09-05  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (lookup_event): when canonifying shifted keysyms,
-	don't lose the S- modifier if the shifted and non-shifted
-	keysyms are the same (adapted from E. Jay Berkenbilt)
-
-2000-09-04  John Harper  <john dcs warwick ac uk>
-
-	* images.c (Fcomposite_images): implemented for Imlib
-
-2000-09-03  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (lookup_event): canonify `S-x' -> `X'
-
-	* x.c, windows.c, session.c, selection.c, main.c, keys.c,
-	images.c, functions.c, frames.c, fonts.c, events.c, cursors.c,
-	colors.c: magic doc-string comments now include module names
-
-	* images.c (Fmake_sized_image): include an alpha channel when
-	using gdk-pixbuf
-	(set_pixel): if the image doesn't have an alpha channel, and
-	the new value requires it, add it to the image
-
-2000-09-02  John Harper  <john dcs warwick ac uk>
-
-	* images.c (Fscale_image, Fcomposite_images, Fcrop_image): new
-	functions. (composite-image isn't implemented for Imlib yet)
-
-2000-09-01  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-menu.jl, sawfish-client.jl: moved to ../scripts
-
-	* events.c (record_mouse_position): handle pointer motion
-	threshold
-	(motion_notify): only evaluate the event if pointer_in_motion
-	is true
-
-	* sawmill.h (POS, ABS): new macros
-
-2000-08-31  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (eval_input_event): removed `yow!' message and
-	associated call to Fbeep ()
-
-2000-08-31  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (window_getting_button_event): new function
-	(Fsynthesize_event): for pointer events use
-	window_getting_button_event () to locate a suitable window to
-	send the event to (one that selects for pointer events)
-	(adapted from E. Jay Berkenbilt <ejb ql org>, adapted from gwm)
-
-	* functions.c, frames.c, events.c: doc/comment fixes
-
-2000-08-30  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (Fset_input_focus): treat Qroot arg as Qnil (since
-	root-window-keymap is searched when no_focus_window is active)
-
-2000-08-29  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (add_window): call place-window-hook if
-	`initialising' is true; this is the only time that
-	place-window-hook is called on a window with the 'placed
-	property
-	(windows_kill): call remove-window-hook before calling
-	remove_window () on each managed window
-
-	* windows.c (emit_pending_destroys): don't decrement
-	pending_destroys each iteration, just zero it before exiting
-
-	* windows.c (remove_window): if !destroyed and !from_error,
-	reinstall the original border-width of the client window
-	(adapted from E. Jay Berkenbilt <ejb ql org>)
-
-	* functions.c: if TEST_XINERAMA is defined, fakes a two-headed
-	Xinerama config, for testing purposes
-
-2000-08-26  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (Ffind_head): this was totally broken
-
-2000-08-24  John Harper  <john dcs warwick ac uk>
-
-	* main.c (inner_main): call rep_top_level_recursive_edit ()
-	instead of Frecursive_edit ()
-
-2000-08-21  John Harper  <john dcs warwick ac uk>
-
-	* x.c: Integrated patch from Ryan Pavlik <rpav mythosource org>
-	to support a load more GC attributes, plus a new function
-	x-gc-set-dashes. Cleaned the whole file to match my usual
-	coding style
-
-2000-08-16  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-menu.jl: use #!optional and #!rest instead of
-	deprecated &optional and &rest
-
-2000-08-13  John Harper  <john dcs warwick ac uk>
-
-	* server.h, libclient.h, libclient.c, client.c: server now
-	reliably communicates errors back to the client (as `(signal
-	'remote-sawfish (list DATA))' where DATA is a string). Also
-	renamed the sockets and X properties. The X protocol now
-	includes a version number
-
-2000-08-10  John Harper  <john dcs warwick ac uk>
-
-	* events.c (configure_request): don't adjust for frame offset
-	when marshalling position
-
-2000-08-09  John Harper  <john dcs warwick ac uk>
-
-	* x.c (create_x_drawable): initialize event_handler field
-	(patch from Matt Tucker <tuck whistlingfish net>)
-
-2000-07-30  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (create_window_frame): don't try to reframe windows
-	with a non-null list of frame parts, just print an error
-
-2000-07-28  John Harper  <john dcs warwick ac uk>
-
-	* main.c: changed the usage printing method
-
-2000-07-27  John Harper  <john dcs warwick ac uk>
-
-	* x.c, windows.c, session.c, selection.c, play-sample.c,
-	main.c, keys.c, images.c, gradient.c, functions.c, frames.c,
-	fonts.c, flippers.c, events.c, cursors.c, colors.c: split into
-	separate sawfish.wm. modules
-
-	* commands.c: deleted, all command handling is written in Lisp
-
-	* fake-libexec: script copied from librep to make symlinked
-	plugin tree for when compiling
-
-	* client.c: wrap libclient functions for rep code, installed as
-	sawfish.client module
-
-	* sawfish-client.jl: rewrote sawfish-client in Lisp, uses a
-	replicated repl to get fully feature front-end in `-' mode
-
-2000-07-25  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.h: make all bitfields unsigned
-
-2000-07-24  John Harper  <john dcs warwick ac uk>
-
-	* version 0.30.3
-
-2000-07-23  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-menu.jl: don't require 'define
-
-2000-07-20  John Harper  <john dcs warwick ac uk>
-
-	* Makefile.in: avoid warnings from unbuilt dependency files;
-	add --mode arguments to libtool commands (from David Kaelbling
-	<drk sgi com>)
-
-2000-07-17  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (build_frame_part): if part has 'hidden property
-	set, skip this part
-
-2000-07-16  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (list_frame_generator): when reconfiguring an
-	existing frame, adjust its position so that the position of the
-	client window in relation to the root window stays constant
-
-2000-07-14  John Harper  <john dcs warwick ac uk>
-
-	* version 0.30.2
-
-2000-07-13  John Harper  <john dcs warwick ac uk>
-
-	* x.c, server.c, keys.c, images.c, functions.c, frames.c,
-	fonts.c: use global_symbol_value () instead of Fsymbol_value ()
-	in places where the symbol is constant, and it may be called
-	from gaolled code
-
-2000-07-12  John Harper  <john dcs warwick ac uk>
-
-	* events.c (configure_request): ensure that one (and only one)
-	synthetic ConfigureNotify event is sent to the window after the
-	configure request has been handled (even if the window's state
-	doesn't change at all)
-
-	[ this fixes the bug where menus in java/swing apps appear too
-	high until the window has been moved ]
-
-	* windows.c (manage_windows): if current focus is PointerRoot,
-	query the window under the pointer, then refocus that. Patch
-	from Brad Thompson
-
-2000-07-11  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (Fmap_windows, Ffilter_windows): new functions.
-	Implementing them in C avoids the need to cons up a load of
-	list structure just to throw it away immediately afterwards
-
-2000-07-09  John Harper  <john dcs warwick ac uk>
-
-	* versiom 0.30
-
-2000-07-07  John Harper  <john dcs warwick ac uk>
-
-	* images.c (get_pixel): don't box the integer twice
-	(set_pixel): if no alpha in pixel, but image has alpha channel,
-	assume full opacity
-
-2000-07-06  John Harper  <john dcs warwick ac uk>
-
-	* main.c (main): unless XSupportsLocale (), don't use FontSets
-	(patch from Tomohiro KUBOTA <kubota surfchem0 riken go jp>)
-
-2000-07-05  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (Froot_window_id): new function
-
-2000-07-04  John Harper  <john dcs warwick ac uk>
-
-	* session.c (ICE_input_ready): if IceProcessMessages () fails,
-	shut down
-
-2000-07-03  John Harper  <john dcs warwick ac uk>
-
-	* colors.c (Fcolor_rgb_8): new function, as color-rgb, but
-	returning eight-bit values
-
-	* images.c (Fimage_ref, Fimage_set, Fimage_map, Fimage_fill):
-	new functions for manipulating image contents
-
-2000-07-02  John Harper  <john dcs warwick ac uk>
-
-	* version 0.29
-
-	* images.c (Fmake_image_from_x_drawable): combine the grabbed
-	image and its mask by hand when using Imlib
-
-2000-06-29  John Harper  <john dcs warwick ac uk>
-
-	* images.c (Fmake_image_from_x_drawable): fixed memory leak in
-	gdk-pixbuf case
-
-	* libclient.c (unix_server_init): removed call to access (),
-	rely on connect () failing to tell us when sockets don't exist
-
-2000-06-28  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl, Makefile.in: deleted sawmill-ui.jl
-
-	* keys.c (default_mods): recapitalized the names
-
-	* play-sample.c, fonts.c: use sprintf if no snprintf
-
-2000-06-25  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (Fwindow_icon_image): check that `w->wmhints != 0'
-
-2000-06-24  John Harper  <john dcs warwick ac uk>
-
-	* events.c (property_notify): when WM_HINTS changes, uncache
-	icon, and refresh the frame
-
-2000-06-23  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (add_window): if `initialising != 0', then set
-	`placed' property of window before calling any hooks. This
-	stops the window-history module rearranging windows..
-
-	* frames.c (build_frame_part): value of `cursor' attribute will
-	be called if it is functionp
-
-	* frames.c (build_frame_part): don't need to check that values
-	returned by call_protectedly are non-null
-
-	* frames.c: new frame part attribute `scale-foreground'. When
-	non-nil, the foreground image will be scaled to the size of the
-	frame part
- 	 * sawmill.h (struct frame_part): added `scale_foreground' flag
-
-2000-06-22  John Harper  <john dcs warwick ac uk>
-
-	* events.c (configure_request): when we know nonthing about the
-	window, propagate the stacking-related fields of the event
-	structure to the call to XConfigureWindow
-
-2000-06-21  John Harper  <john dcs warwick ac uk>
-
-	* fonts.c (generalize_xlfd): don't assume that snprintf (0, ..)
-	returns the size of the string that would be formatted (breaks
-	on Tru64). Patch from Aron Griffis <agriffis bigfoot com>
-
-	* pixmap-cache.c (max_cached_pixels): reduced from 256K pixels
-	to 64K pixels
-
-2000-06-20  John Harper  <john dcs warwick ac uk>
-
-	* events.c (configure_request): represent the full complexity
-	of the stacking components of the request. The `stack' cell of
-	the alist is (RELATION SIBLING), where RELATION is one of the
-	symbols `above', `below', `top-if', `bottom-if', `opposite' and
-	SIBLING is a window or `nil'
-
-	[ patch from Brad Thompson <yak mit edu> ]
-
-	* sawmill.h (Lisp_Window): added `icon_image' field. Null if
-	uninitialized, otherwise either Qnil or the image containing
-	the window's icon
-
-	* windows.c (Fwindow_icon_image): moved here from images.c, now
-	caches the image in the window structure
-
-	* sawmill.h, images.c: added support for gdk-pixbuf image
-	library (xlib version)
-
- 2000-06-19  John Harper  <john dcs warwick ac uk>
- 
-       * play-sample.c (gnome_sound_play): check if
-       gnome_sound_sample_load returns negative, if so print a message
-       instead of trying to play the negative id
- 
-2000-06-18  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.h, main.c, keys.c, events.c, commands.c: remove any
-	rep-compatibility cruft, we require 0.12 now
-
-2000-06-16  John Harper  <john dcs warwick ac uk>
-
-	* version 0.28.1
-
-2000-06-14  John Harper  <john dcs warwick ac uk>
-
-	Work to support non-default visuals and color depths:
-
-	* display.c: support options --visual=TYPE and --depth=DEPTH
-	for specifying the preferred visual type and color depth. Also
-	removed the screen_{cmap,visual,depth} variables. Replaced by
-	preferred_{visual,depth}
-
-	* frames.c: use XCreateWindow instead of XCreateSimpleWindow;
-	ensure that we never default to CopyFromParent for any
-	parameters (since parent may be different depth/visual)
-
-	* x.c (Fx_create_window): ensure that border_pixel is always
-	set to something
-
-	* main.c (usage): updated for new options
-
-	* frames.c, flippers.c, colors.c, images.c, x.c: no longer use
-	screen_{cmap,visual,depth}
-
-2000-06-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.28
-
-	* sawmill-ui.jl (build-frame-style:update-readme): catch errors
-	while testing for directory existance (tarfh may error out)
-
-2000-06-10  John Harper  <john dcs warwick ac uk>
-
-	* keys.c, keys.h: support `Super' modifier; don't always map
-	`Alt' to some modifier, only do this for `Meta' now
-
-2000-06-07  John Harper  <john dcs warwick ac uk>
-
-	* main.c (sawfish_symbols): moved documentation-file to execdir
-
-	* windows.c (Fwindow_size_hints): do some sanity checking of
-	the fields in the size hints structure (e.g. ignore negative
-	values)
-
-2000-06-06  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.h: moved all Imlib code behind `#ifdef IMLIB'
-	protection; typedef image_t redirects to image buffer type
-
-	* play-sample.c: only redefine glib macros if glib isn't
-	present
-
-	* pixmap-cache.c: new file. Caches image->pixmap mappings. Not
-	needed when using Imlib
-	* main.c (main): call pixmap_cache_init ()
-
-	* images.c: ifdef'd all Imlib specific code, some basic support
-	for pixmap-cache    
-
-	* images.c (image_cmap, image_visual, image_depth):
-	characteristics of the visual we'll be using for all drawing
-
-	* functions.c (Fdisplay_message): use image_cmap instead of
-	screen_cmap
-
-	* frames.c, gradient.c, colors.c, x.c: removed all Imlib
-	specific code, replaced by calls to portable image_ layer
-	functions
-
-	* events.c (install_colormaps): install image_cmap if the
-	window has been reparented (for the frame)
-
-	* Makefile.in: added pixmap-cache.c to $(SRCS); use
-	$(IMAGE_FOO) instead of $(IMLIB_FOO)
-
-2000-06-05  John Harper  <john dcs warwick ac uk>
-
-	* main.c, fonts.c: (setq fonts-are-fontsets nil) if setlocale
-	() returns null, "C", or "POSIX". This should avoid the problem
-	when trying to render 8-bit characters in a 7-bit locale (they
-	don't). This is still experimental. Added under guidance from
-	Tomohiro KUBOTA
-
-	* windows.c (manage_windows): preserve focus while reparenting
-	the windows
-
-	* events.c (focus_in, focus_out): track the window we last
-	received focus-in/out on, and only handle the new event if it
-	makes a difference (e.g. avoids generating spurious focus-in
-	hook calls when keyboard grab is manipulated)
-
-2000-05-31  John Harper  <john dcs warwick ac uk>
-
-	* fonts.c (generalize_xlfd): don't bother pattern matching
-	field contents, just extract by position
-
-2000-05-30  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl (build-symbol): don't use make-closure
-
-	* commands.c (Finteractive): removed, unneeded
-
-2000-05-27  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-menu.jl: require 'define for old (?) libreps
-
-2000-05-26  John Harper  <john dcs warwick ac uk>
-
-	* display.c (redisplay): if XPending () returns non-zero, mark
-	that there is input pending on the display
-
-2000-05-25  John Harper  <john dcs warwick ac uk>
-
-	* keys.c, commands.c: use rep_call_with_closure () if it's
-	available
-
-2000-05-22  John Harper  <john dcs warwick ac uk>
-
-	* Makefile.in: remove .jlc files in `clean' target, not in
-	`realclean'
-
-2000-05-19  John Harper  <john dcs warwick ac uk>
-
-	* fonts.c: integrated patch from Tomohiro KUBOTA
-	<kubota surfchem0 riken go jp> to create FontSets using
-	intelligently created font specifications
-
-2000-05-16  John Harper  <john dcs warwick ac uk>
-
-	* x.c: the old window type can now contain one of three
-	different types of drawable: window, pixmap, or bitmap (single
-	bitplane pixmap); there's also a function to grab the contents
-	of a drawable to an image
-
-	* images.c (Fmake_image_from_x_drawable): new function, the
-	guts of Fwindow_icon_image, which now calls this new function
-
-	* sawmill-ui.jl: set the WM_CLASS property on windows
-
-2000-05-15  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (Qdefault_frame, Qnil_frame): deleted, nil-frame is
-	defined in frames.jl, default-frame is never used
-
-2000-05-14  John Harper  <john dcs warwick ac uk>
-
-	* client.c: new option `-r FEATURE', evaluates `(require 'FEATURE)'
-
-2000-05-12  John Harper  <john dcs warwick ac uk>
-
-	* events.c (enter_notify): ignore NotifyInferior events
-	(entering from inner window), leave_notify has always done this
-
-2000-05-09  John Harper  <john dcs warwick ac uk>
-
-	* version 0.27
-
-2000-05-08  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl (beautify-symbol-name): adapted to handle any
-	type of argument, but only beautifies symbols
-
-	* sawmill-ui.jl: fixed bug of not beautifying command names
-	after `Copy' or `Insert' operations
-
-2000-05-03  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl (match-window:edit): use non-destructive
-	operations when splitting property list into bool/non-bool sets
-
-2000-04-30  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (do_raise_lower): signal an error if the window
-	and sibling are the same window
-
-2000-04-27  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (regrab_server): new function, to be called after
-	the server may have been ungrabbed too soon
-
-	* images.c (Fwindow_icon_image): new function, return an image
-	representing a windows icon (adapted from Bruce Miller
-	<docmad md prestige net>)
-
-	* functions.c (Fhead_count, Ffind_head, Fhead_offset,
-	Fhead_dimensions): Xinerama support (untested)
-
-2000-04-25  John Harper  <john dcs warwick ac uk>
-
-	* sawmill_subrs.h, sawmill-ui.jl, main.c, images.c, display.c,
-	client.c, Makefile.in: s/sawmill/sawfish/ where appropriate
-
-2000-04-23  John Harper  <john dcs warwick ac uk>
-
-	* main.c (main): set the sawmill structure to export all
-	bindings
-
-2000-04-17  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (list_frame_generator): lower the client window
-	before configuring each frame part, otherwise the below-client
-	attribute is ignored
-
-2000-04-15  John Harper  <john dcs warwick ac uk>
-
-	* images.c (find_image_file): use global_symbol_value () to
-	dereference Qimage_load_path (it's not in the theme's gaol)
-
-	* main.c (global_symbol_value): new function, calls
-	Fsymbol_value () from the `sawmill' module
-
-2000-04-14  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-menu.jl: added support for menu accelerators flagged
-	by underscores (auto-detects if rep-gtk supports this), adapted
-	from patch from Richard Kilgore <rkilgore kilgoresolutions com>
-
-2000-04-12  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl (ui-get-spec): look for errors in the output,
-	if found, print a message or tell the capplet
-
-2000-04-11  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (call_protectedly, call_protectedly_1): functions to
-	call other [lisp] functions with error protection in place.
-	Used to catch errors while creating frames
-
-	* windows.c (Fmap_window_properties): new function
-
-2000-04-09  John Harper  <john dcs warwick ac uk>
-
-	* version 0.26
-
-	* main.c (main): if rep has modules, create a `sawmill' module
-	that will be the wm's global namespace, it imports `rep'
-
-2000-04-03  John Harper  <john dcs warwick ac uk>
-
-	* fonts.c (Fget_font): set f->descent to the correct value,
-	instead of to zero
-
-2000-03-30  John Harper  <john dcs warwick ac uk>
-
-	* selection.c: handle selection atoms as with other X11 atoms,
-	i.e. convert literally from symbol name. So do (x-get-selection
-	'PRIMARY) instead of (x-get-selection 'xa-primary)
-
-2000-03-29  John Harper  <john dcs warwick ac uk>
-
-	* server.c, play-sample.c, main.c, keys.c, images.c, frames.c,
-	fonts.c, flippers.c, events.c, display.c, cursors.c, colors.c:
-	remove all direct references to `value' field of symbols
-
-	* x.c: only use double buffering extensions if
-	HAVE_X11_EXTENSIONS_XDBE_H is defined
-
-2000-03-28  John Harper  <john dcs warwick ac uk>
-
-	* play-sample.c: new plugin, use ESD and libaudiofile (when
-	available) to play .WAV files (stolen from gnome-libs)
-
-2000-03-27  John Harper  <john dcs warwick ac uk>
-
-	* cursors.c (Fget_cursor): fix typo when calling make_bm_cursor
-	(passing fg twice), patch from Alexander Barinov
-	<barinov altavista net>
-
-2000-03-26  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (set_frame_part_bg): remember to mark fg as lost
-	when calling a function to draw bg
-
-2000-03-21  John Harper  <john dcs warwick ac uk>
-
-	* x.c (drawable_from_arg): don't automatically look for back
-	buffers in windows, require this to be done explicitly
-	(Fx_create_root_xor_gc): hacky function to create a gc for
-	doing xor drawing on the root window
-
-	* functions.c (Fdraw_window_outline, Ferase_window_outline):
-	deleted, now in lisp code
-
-	* selection.c (Fx_selection_active_p, Fx_get_selection): new
-	plugin, functions for retrieving X selections. Adapted from
-	patch by Mark Probst <schani mips complang tuwien ac at>,
-	which was in turn adapted from Jade's selection handling
-
-	* keys.c (Fsynthesize_event): fixed the relative pointer
-	position calculation
-
-2000-03-20  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (focus_on_window): don't focus on windows whose
-	`visible' flag isn't set (crashes the gnome control center!?)
-
-2000-03-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.25.2
-
-	* x.c: double-buffering now works on all window types, not just
-	those created by Fx_create_window ()
-
-2000-03-11  John Harper  <john dcs warwick ac uk>
-
-	* events.c (handle_input_mask): detect if system clocks is
-	rewound (could cause us to ignore timestamps)
-
-2000-03-10  John Harper  <john dcs warwick ac uk>
-
-	* main.c: updated usage information
-
-	* functions.c (Fx_raise_window): added an optional second arg,
-	the window to raise the first arg immediately above
-	(Fx_lower_window): new function, symmetrical to x-raise-window
-
-	* server.c, libclient.c: removed the incorrect assumption that
-	I/O on sockets is atomic, should fix large requests on FreeBSD
-
-	* fonts.c (Qfonts_are_fontsets): new variable, when set to nil,
-	never load FontSets, only FontStructs. Currently t by default
-
-2000-03-08  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (Fx_raise_window, Frestack_windows): these now
-	accept window ids as well as window objects
-
-	* x.c (x-window-back-buffer, x-window-swap-buffers): basic
-	support for the X double-buffering extension
-
-2000-03-06  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (eval_input_event, print_event_prefix): ported code
-	from Jade to print prefix keys after a period
-
-	* main.c (on_idle): don't ungrab the keyboard if in the middle
-	of a multi-key sequence
-
-	* keys.c (eval_input_event): only abort when receiving
-	unhandled events if in the top-level event loop
-
-2000-03-05  John Harper  <john dcs warwick ac uk>
-
-	* version 0.25
-
-2000-03-04  John Harper  <john dcs warwick ac uk>
-
-	* main.c (on_idle): after being idle for one second in the
-	outermost event loop, ungrab the pointer and keyboard. This may
-	unfreeze the intermittent lockups reported by some people
-
-	* keys.c (Qmulti_click_delay): new variable, the maximum delay
-	between successive button press events to count as a click2 or
-	click3 (from Martin Blais <blais iro umontreal ca>)
-
-2000-03-02  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl: separate the keymap shell using a vpaned
-	widget
-
-	* sawmill-ui.jl: `beautify' symbol names in the keymap widget
-	(s/[:-]/ / and capitalize first word). Also remove redundant
-	`keymap' suffix from keymap names
-
-	* frames.c (list_frame_generator): if resizing a window be
-	smarter about when the shape is reinitialized (before the
-	resize if the frame is growing, after otherwise). Also, move
-	and resize the client window in a single request
-	(configure_frame_part): set bit- and win-gravity of frame parts
-	to StaticGravity
-
-	* windows.c (fix_window_size): only call XResizeWindow () if
-	not calling rebuild_frame ()
-
-	* frames.c (list_frame_generator): reorder some operations,
-	maybe less flicker when resizing opaquely?
-
-	* keys.c: support multi-key bindings. Create them by binding an
-	event in one keymap to another keymap (or the name of the
-	second keymap). Also, try to detect and avoid situations where
-	the input devices are grabbed but we're not going to use the
-	input (and thus get locked in an inner event loop)
-
-2000-03-01  John Harper  <john dcs warwick ac uk>
-
-	* x.c (Fx_fill_polygon): new function
-
-2000-02-29  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (Fdisplay_message): clicking the pointer on the
-	message window now removes it
-
-	* commands.c (Fcall_command): re-enabled the following
-	interactive codes: `a' (function), `C' (command), `D'
-	(directory), `f' (existing file), `F' (file), `k' (event), `n'
-	(number), `N' (prefix or number), `s' (string), `S' (symbol),
-	`v' (variable)
-
-	* events.c (key_press, button_press, motion_notify): always
-	call XAllowEvents () with Sync{Keyboard,Pointer}, not Async
-
-	* functions.c (Fgrab_window, Fgrab_pointer): more parameters to
-	allow finer grab control (event modes, pointer confinement).
-	Patch from Timo Korvola <tkorvola e math helsinki fi>
-
-2000-02-28  John Harper  <john dcs warwick ac uk>
-
-	* gradient.c, flippers.c: don't use rep_dl_subrs or
-	rep_dl_feature (some BSD systems have (had?) problems with data
-	segment relocations)
-
-2000-02-27  John Harper  <john dcs warwick ac uk>
-
-	* x.c: new plugin (feature `x'), wraps some Xlib functions.
-	Allows windows and GCs to be created and drawn with (from
-	merlin merlin org with additions by me)
-
-	* fonts.c (Ffont_ascent, Ffont_descent): new functions (from
-	merlin merlin org)
-
-2000-02-26  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl: new option --flatten; display sub-groups
-	inline instead of using a tree widget (good for control
-	center). In normal `tree' item, don't put frame the widgets
-
-	* keys.c (Fcurrent_event_string): fix typo when checking if an
-	event is currently being handled
-
-	* events.c (button_press): only use the context map if the
-	window or its frame is visible
-
-2000-02-25  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (update_keyboard_mapping): new function, updates the
-	modifier data
-	* events.c (mapping_notify): new event handler
-
-	* sawmill-ui.jl: use `quotient' instead of `/' where
-	appropriate. Define `quotient' to `/' if unbound
-
-	* windows.c, functions.c, events.c, display.c, commands.c: use
-	the non-fixnum number representations where appropriate (where
-	32-bit data may be found)
-
-	* sawmill.h, main.c: define rep_INTEGERP (), rep_make_long_uint
-	() and rep_get_long_uint () if rep_INTERFACE < 8
-
-2000-02-24  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl: put the theme README in a scroller
-
-2000-02-20  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (Fsynthesize_event): new function, sends an event (key
-	or mouse button) to a window
-
-2000-02-15  John Harper  <john dcs warwick ac uk>
-
-	* events.c (install_colormaps): new function, install all
-	colormaps associated with a given window (including colormaps
-	of it's associated windows)
-	(property_notify): watch for WM_COLORMAP_WINDOWS changing
-
-	* sawmill.h (Lisp_Window): added cmap_windows and
-	n_cmap_windows fields
-	* windows.c (add_window): initialise cmap_windows fields
-	(window_sweep): free cmap_windows
-
-2000-02-14  John Harper  <john dcs warwick ac uk>
-
-	* version 0.24
-
-	* sawmill.h (Lisp_Font): support for both XFontSet and
-	XFontStruct representations
-
-	* fonts.c (Fget_font): if a FontSet can't be created, try to
-	load a FontStruct
-	(x_text_width, x_draw_string): switch on actual font
-	representation
-
-	* frames.c, functions.c: use x_text_width () and x_draw_string ()
-
-2000-02-11  John Harper  <john dcs warwick ac uk>
-
-	* events.c (configure_request): marshal the event to an alist,
-	then call configure-request-hook with it
-
-	* client.c: copied the bouncing parentheses hack from librep
-	(which was copied from guile)
-
-	* keys.c (Fx_keysym_name, Fx_lookup_keysym): new functions
-
-2000-02-10  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl (match-window:edit): make three columns of
-	boolean properties, not two
-
-2000-02-08  John Harper  <john dcs warwick ac uk>
-
-	* client.c (main): set rl_basic_quote_characters to include
-	only the double-quote character (from Matt Krai)
-
-	* events.c (save_timestamp): don't print the ``time backwards''
-	messages anymore
-
-	* functions.c (Fdisplay_message): translate font names to fonts
-
-	* colors.c, cursors.c, fonts.c, images.c (Fget_color,
-	Fget_cursor, Fget_font, Fmake_image): if dpy == 0, return nil
-
-2000-02-06  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (Fdisplay_message): if possible, keep the message
-	window wholly on screen
-
-	* main.c (main): run in a dynamic root
-	* events.c (handle_input_mask): run all handlers in dynamic
-	roots
-
-2000-02-03  John Harper  <john dcs warwick ac uk>
-
-	* cursors.c, events.c, frames.c (default-cursor,
-	synthetic-configure-mutex, frame-draw-mutex,
-	frame-state-mutex): now a function of a single parameter
-
-	* frames.c (fp_sweep): comment out `fp->win == 0' assert, I
-	think it should be harmless
-
-	* commands.c, keys.c (last-command, this-command, prefix-arg,
-	current-prefix-arg, eval-modifier-events,
-	eval-key-release-events): these are now normal (passive)
-	variables
-
-2000-01-31  John Harper  <john dcs warwick ac uk>
-
-	* events.c (send_synthetic_configure): remember to clear the
-	pending_configure flag after sending the event
-
-2000-01-30  John Harper  <john dcs warwick ac uk>
-
-	* version 0.23
-
-2000-01-27  John Harper  <john dcs warwick ac uk>
-
-	* windows.c, images.c, fonts.c (Fwindow_put, Fwindow_get,
-	Fimage_put, Fimage_get, Ffont_put, Ffont_get): use equal test
-	on property names, not eq
-
-	* sawmill-ui.jl (build-tree): put the root tree in a scrolled
-	window
-
-	* sawmill-ui.jl: new widget `tree'
-
-2000-01-26  John Harper  <john dcs warwick ac uk>
-
-	* fonts.c (fonts_init): don't cause following code to fail
-	catastrophically if unable to load fixed font
-	* frames.c (set_frame_part_fg): bail out if no font whatsoever
-
-2000-01-25  John Harper  <john dcs warwick ac uk>
-
-	* main.c: only call before-exit-hook if rep_INTERFACE < 8
-
-	* functions.c (Fx_delete_window, Fdelete_window): removed
-	(Fsend_client_message): if format is 32, accept long-int style
-	values
-
-2000-01-24  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (add_window): fix bug of leaving window name unset
-	if XmbTextPropertyToTextList () fails
-
-	* functions.c (Fx_delete_window, Fx_kill_client): two new
-	functions
-
-2000-01-21  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (add_window): call after-add-window-hook after
-	everything has been initialised
-
-2000-01-20  John Harper  <john dcs warwick ac uk>
-
-	* events.c (Vsynthetic_configure_mutex): new variable, while t,
-	no synthetic ConfigureNotify events are sent to windows after
-	they've been moved
-	* sawmill.h (Lisp_Window): new flag, `pending_configure'
-
-	* functions.c (Fmove_resize_window_to): new function,
-	simultaneous move&resize
-	* frames.c (list_frame_generator): when reconfiguring an
-	existing frame window, set its position as well as its size
-
-2000-01-19  John Harper  <john dcs warwick ac uk>
-
-	* version 0.22
-
-2000-01-18  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (refresh_frame_part): abort if trying to redraw a
-	part without a window
-
-2000-01-15  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (Fframe_part_put): only set values in the new
-	`local_alist' field, in case `alist' is shared by multiple
-	frame parts (the `local_alist' is scanned first)
-	* sawmill.h (struct frame_part): new field `local_alist'
-
-	* frames.c (Frebuild_frame_part): new function, analogous to
-	Frebuild_frame (), but for a specific part of the frame
-
-	* events.c (subtract_timestamps): made this function actually
-	work (return negative values when necessary)
-
-2000-01-14  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (Fdisplay_message): fixed specifying foreground
-	colours using strings; abort when Fget_color returns rep_NULL;
-	update the background pixel of any existing message window to
-	the new color (from Matt Kraai <kraai ghs com>)
-
-	* events.c (handle_fp_click, unclick_current_fp): protection
-	against refreshing stale frame parts
-
-	* frames.c (list_frame_generator): fixed stupid gc-protection
-	bug when building new frames
-
-2000-01-12  John Harper  <john dcs warwick ac uk>
-
-	* frames.c: frame parts are now first-class lisp objects
-	(Fframe_part_put, Sframe_part_window, Fframe_part_x_window,
-	Fframe_part_position, Fframe_part_dimensions,
-	Fframe_part_state, Fmap_frame_parts, Frefresh_frame_part,
-	Frefresh_window): new functions
-	(set_frame_part_fg, set_frame_part_bg): if the fg or bg object
-	is a function, then call it to do the redrawing, with the frame
-	part as the sole argument
-	(Fframe_part_get): args are now `(FRAME-PART PROP)'
-
-	* sawmill.h (struct frame_part): made into a lisp data type
-
-	* events.c (Fclicked_frame_part_offset,
-	Fclicked_frame_part_dimensions): deleted
-	(Qenter_frame_part_hook, Qleave_frame_part_hook): now called
-	with arguments `(WINDOW FRAME-PART)'
-
-	* windows.c (window_mark_type): no need to call mark_frame_type
-	anymore
-
-	* keys.c: filter Scroll_Lock events as well as Num_Lock and
-	Caps_Lock (from Matt Krai, with minor changes by me)
-
-2000-01-11  John Harper  <john dcs warwick ac uk>
-
-	* events.c (save_timestamp): new function, records a server
-	timestamp with checks for validity
-	* server.c (server_handle_request): call save_timestamp
-
-	* events.c (record_mouse_position): only update button-press
-	details on button-release events if they're not already filled
-
-	* windows.c, keys.c, frames.c: revert to grabbing on the client
-	window, grabbing on the client causes awkward problems with
-	replaying events
-
-	* events.c, windows.c (property_notify, add_window): support
-	compound text properties in icon and window names
-	* main.c (main): call setlocale (LC_ALL, "")
-	* fonts.c, frames.c, functions.c, sawmill.h: use XFontSet
-	instead of XFontStruct, and related other changes
-	* gtk-style.c: call gtk_set_locale (), handle missing RcStyle's
-	[ patch from Kondara MNU/Linux distribution, forwarded by
-	Yukihiro Nakai <nakai internetsolutions co jp> ]
-
-	* display.c (xa_compound_text): new interned atom
-
-	* sawmill-ui.jl (build-frame-style): use a GtkCombo instead of
-	a GtkOptionMenu to display the list of themes, also put the
-	details box above the combo
-
-	* events.c (get_server_timestamp): new function, jumps through
-	hoops to get a recent timestamp direct from the server
-	(record_event_time): be more careful about accepting
-	timestamps, only if they look like they're actually _after_ the
-	previously last-seen time
-	(Fx_server_timestamp): new optional arg, when non-nil get a
-	timestamp direct from the server
-
-	* server.c (server_handle_request): don't set last_event_time
-	to CurrentTime, instead fetch a timestamp from the server
-
-2000-01-10  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (translate_event_to_x_key): return FALSE if no keycode
-	exists for the specified keysym (i.e. the keyboard has no such
-	key)
-
-	* events.c (record_mouse_position): on button-release, don't
-	cancel the saved position/window, just update the position. The
-	button_press function will clear the position before it exits.
-	This fixes the ``can't bind to -Off events'' bug. Pointed out
-	by Matt Krai <krai ghs com>
-
-	* keys.c (Fallow_events): if mode is `replay-pointer', then
-	forget the time of the last click event (that is used to
-	measure double-clicks)
-
-2000-01-09  John Harper  <john dcs warwick ac uk>
-
-	* version 0.21
-
-	* keys.c (lookup_binding): check for non-null current_x_event
-	before accessing it
-
-2000-01-08  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (create_window_frame): if actually creating the
-	frame window, then call grab_window_events ()
-	* windows.c (add_window, remove_window): don't call
-	grab_window_events () anymore
-	* keys.c, frames.c (grab_window_events, grab_keymap_event,
-	Fwindow_put): when grabbing events, grab on the frame window,
-	not the client window
-
-	* images.c (Fmake_image): _always_ returns a new image, by
-	working around Imlib's annoying caching
-
-2000-01-07  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.h: added fps_inactive_highlighted and
-	fps_inactive_clicked
-
-	* frames.c (get_pattern_prop): new function, called by
-	list_frame_generator to fill the fp->bg, fp->fg and fp->font
-	arrays. This now takes a new format, an alist mapping state
-	symbols to values (the old formats are also still accepted).
-	Current states are `inactive', `focused', `highlighted',
-	`clicked', `inactive-focused', `inactive-clicked'. The last two
-	are new, there inclusion removes the need for the
-	highlight-when-unfocused option, so it's been removed
-
-	* sawmill.h (FRAME_EVENTS): added VisibilityChangeMask (patch
-	from Matt Krai <kraii ghs com>)
-
-2000-01-06  John Harper  <john dcs warwick ac uk>
-
-	* server.c (server_init): chmod the socket as well as the
-	directory (for people with losing umasks)
-
-2000-01-02  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (list_frame_generator): make `(cursor . nil)' work
-
-1999-12-31  John Harper  <john dcs warwick ac uk>
-
-	* commands.c (Fcall_command): accept closures as possible
-	commands
-
-	* main.c (main): use rep_load_environment () and
-	rep_top_level_exit ()
-
-	* windows.c (window_mark): always call mark_frame_parts (), not
-	just when w->frame != 0
-	(window_mark_type): call mark_frame_type
-	* frames.c (mark_frame_type): new function, marks any frame
-	parts that are being built but have not yet been added to a
-	window
-
-1999-12-24  John Harper  <john dcs warwick ac uk>
-
-	* functions.c: when reading/writing X properties, use
-	u_longs/u_shorts instead of CARD32s/CARD16s; otherwise things
-	stop working on alphas (from George <jirka 5z com>)
-
-1999-12-22  John Harper  <john dcs warwick ac uk>
-
-	* windows.c, images.c, fonts.c (X_put): remove checks for
-	immutable cons cells, can't happen
-
-1999-12-20  John Harper  <john dcs warwick ac uk>
-
-	* images.c (image_sweep): use Imlib_kill_image () instead of
-	Imlib_destroy_image () (turns off image caching, but not
-	image sharing)
-
-1999-12-19  John Harper  <john dcs warwick ac uk>
-
-	* version 0.20
-
-1999-12-17  John Harper  <john dcs warwick ac uk>
-
-	* commands.c (Fcommandp): fixed for current autoload format
-
-1999-12-15  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (Fgrab_pointer): revert to using
-	owner_events=False, it stops annoying focus flickers
-
-	* keys.c (translate_event_to_x_button): fix typo (pointed out
-	by Hamish Macdonald <hamishm lucent com>)
-
-1999-12-14  John Harper  <john dcs warwick ac uk>
-
-	* images.c (make_image): when adding to rep_data_after_gc,
-	try to include the Imlib allocated data
-
-1999-12-13  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (add_window): call send_synthetic_configure ()
-	after placing the window
-
-	* functions.c (Fdisplay_message): allow color names in
-	foreground and background atttributes, not just color objects
-
-	* frames.c (list_frame_generator): when client_unmapped changes
-	and the window is focused, refocus it
-
-1999-12-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.19
-
-	* events.c (motion_notify): don't compare the event window with
-	the button-press window; just use the saved context map from
-	the actual button-press event
-	(button_press): only use the context map if the part is
-	currently clicked; forcible ungrab the pointer after all button
-	release events
-
-	* frames.c (frame_part_destroyer): if we unclick a frame part,
-	ungrab the pointer as well
-
-	* functions.c (Fgrab_pointer): grab with owner_events=True
-
-	* functions.c (Fdisplay_message): new attribute `spacing',
-	space between each line of text
-
-	* events.c (handle_input_mask): preserve current_x_event and
-	current_event_window in case of recursive calls
-
-	* events.c (Qenter_frame_part_hook, Qleave_frame_part_hook):
-	new hooks, called when the pointer enter a frame part, two args
-	(WIN CLASS)
-
-	* frames.c (Fframe_part_get): new function, get frame part
-	properties (part is found by window and class)
-
-	* frames.c (frame_part_exposer): only allow expose events to
-	override the frame_draw_mutex when the server isn't grabbed
-
-	* functions.c (Fserver_grabbed_p): new function
-
-1999-12-11  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl: i18n for all natural language strings
-
-1999-12-10  John Harper  <john dcs warwick ac uk>
-
-	* cursors.c (Fget_cursor): can now create cursors from two
-	normal X bitmaps (image and mask) and two colours. Call with an
-	argument [IMAGE-NAME MASK-NAME FG BG]
-	(Frecolor_cursor): new function
-
-	* images.c (make_bitmap): new function (scans image-load-path)
-
-	* functions.c (Fgrab_pointer): if the CURSOR argument is
-	non-nil, but not a cursor, call Fget_cursor () on it
-
-1999-12-09  John Harper  <john dcs warwick ac uk>
-
-	* gradient.c (Fdraw_diagonal_gradient): the gradient now scales
-	linearly for all lines parallel to that connecting the top-left
-	and bottom-right corners (from Chris Hanson <cph zurich ai mit edu>)
-
-	* images.c (Fbevel_pixel): new optional parameter BEVEL-PERCENT
-	(from Chris Hanson <cph zurich ai mit edu>)
-	(Qdefault_bevel_percent): new variable, default for above
-	parameter
-
-	* events.c (map_request): reinstate the code to iconify a
-	window if it's initial state is IconicState (why did I ever
-	remove it!?)
-
-1999-12-08  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (Fforget_button_press): new function, forgets about
-	any remembered button press (for calculating click2's etc)
-
-1999-12-07  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (list_frame_generator): fix crash when font is
-	defined as nil
-
-	* sawmill-ui.jl (match-window:edit): added a `Grab..' button to
-	each matcher
-
-	* sawmill-ui.jl (i18n-filename): fixed typo (from Jesus Bravo
-	Alvarez <jba pobox com)
-
-1999-12-05  John Harper  <john dcs warwick ac uk>
-
-	* version 0.18
-
-	* sawmill-ui.jl (build-color): create buttons containing a
-	preview of the color, not just its name
-
-1999-12-03  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (add_window): always set the `placed' property
-	before exiting
-
-	* keys.h, keys.c: support Hyper modifier, prefix `H-'
-
-	* frames.c (set_frame_part_bg): fixed a bug when tiling shaped
-	frame parts, removed the spurious clipping code
-	(refresh_frame_part): handle the dimensions checking here
-	instead of in set_frame_part_{bg,fg}
-
-	* windows.c (Fset_input_focus): removed the hack of unfocusing
-	before refocusing, it causes too much redrawing when focusing
-	on the currently focused window
-
-1999-12-02  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl: new match-window property type `pair', a pair
-	of integers
-
-	* sawmill-ui.jl: look for README.LC (LC == language code) files
-	in theme ui; mostly from Yukihiro Nakai
-	<nakai internetsolutions co jp>
-
-1999-12-01  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl: added `match-window' widget for editing the
-	match-window-profile variable
-
-	* events.c (Fquery_button_press_window): new function, tries to
-	return the window that the button was pressed in (when in the
-	middle of a press-release sequence)
-	(motion_notify): only look for frame-part context maps when the
-	window that the mouse is currently over is the same window as
-	when the button was originally pressed
-
-	* keys.c (lookup_event_binding): call
-	Fquery_button_press_window () when evaluating a mouse event to
-	find the window whose `keymap' property should be searched
-
-	* sawmill-ui.jl: the `set' type is now called `symbol'
-
-1999-11-29  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (Fwarp_cursor_to_window): deleted, now in lisp
-
-	* windows.c, session.c, main.c, keys.c, images.c, functions.c,
-	frames.c, fonts.c, events.c, cursors.c, commands.c, colors.c:
-	changed embedded doc strings
-
-	* functions.c (Fdisplay_message): new function, replaces
-	Fshow_message, only takes two args a (multi-line) string, and
-	an alist of attributes
-	(Fshow_message): deleted, now in lisp
-
-	* events.c (map_request): if the window isn't visible, then
-	call map-notify-hook manually
-	(unmap_notify): recognize synthetic unmap events (for when the
-	window isn't currently visible), and delete WM_STATE property
-	afterwards
-
-1999-11-28  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (remove_window): check that the focus hasn't got
-	lost somehow; if it has refocus the last-focused window, or the
-	invisible input window
-
-	* version 0.17
-
-1999-11-27  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (translate_event_to_x_button, grab_event,
-	ungrab_event): fixed bug when grabbing buttons with AnyModifier
-	_and_ a specific button
-
-	* client.c (completion_generator): pass the boundp predicate
-	when remotely calling apropos
-
-	* windows.c, images.c, fonts.c, cursors.c, colors.c: remember
-	to add to rep_data_after_gc after allocating lisp data
-
-1999-11-26  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (Fwindow_size_hints): added window-gravity field
-	(Fwindow_border_width): new function
-	[both mostly from merlin <merlin merlin org>]
-
-1999-11-25  John Harper  <john dcs warwick ac uk>
-
-	* windows.c, session.c, server.c, sawmill-ui.jl,
-	sawmill-menu.jl, frames.c, events.c, commands.c: updated for
-	single namespace and scheme-like function semantics
-
-1999-11-19  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (Fgetpid): deleted, use (process-id) instead
-
-	* sawmill-ui.jl (documentation): call _ on any documentation
-	(on the wm)
-
-	* main.c (usage): added --disable-nls option
-
-1999-11-17  John Harper  <john dcs warwick ac uk>
-
-	* Makefile.in: set REP_GTK_DONT_INITIALIZE=1 when compiling
-	scripts
-
-	* events.c (map_request): only map the client window if it's
-	client_unmapped bit is clear
-
-	* windows.c (Fhide_window, Fshow_window): only map/unmap the
-	frame if it exists
-
-	* keys.c (lookup_event_binding): if a mouse event, _never_
-	look in the focus window by default
-
-1999-11-15  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (Fset_window_frame): each window frame must be a
-	closure of a list, not just a list
-	* frames.c (set_frame_part_bg, set_frame_part_bg,
-	list_frame_generator): activate the frame's closure before
-	doing anything
-
-1999-11-12  John Harper  <john dcs warwick ac uk>
-
-	* images.c (Fbevel_image): patch from Scott Sams
-	<sbsams eos ncsu edu> to fix some calculation errors
-
-1999-11-11  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl (build-color:clicked): remove left over comma
-	from old backquoting
-
-1999-11-10  John Harper  <john dcs warwick ac uk>
-
-	* main.c (main): Fload () has five arguments now
-
-	* windows.c (Fstacking_order): fix memory leak (memprof rules!)
-
-	* windows.c, sawmill-ui.jl, sawmill-menu.jl, main.c, keys.c,
-	images.c, functions.c, frames.c, fonts.c, flippers.c, events.c,
-	display.c, commands.c, colors.c: updated for lexically scoped
-	rep
-
-1999-11-07  John Harper  <john dcs warwick ac uk>
-
-	* version 0.16
-
-1999-11-06  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (Fget_window_by_id): new function
-
-1999-11-05  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (Fset_input_focus): call focus_on_window (0) before
-	focusing the given window, seems to help transfer the focus
-	when called after grabbing the keyboard
-
-1999-11-04  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl (build-pages): if a notebook, make it
-	scrollable and enable the popup menu
-
-	* events.c (property_notify): use XGetWMNormalHints instead of
-	XGetNormalHints when WM_NORMAL_HINTS changes
-
-1999-11-01  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (Qafter_framing_hook): new hook, called after both
-	set-window-frame and rebuild-frame
-
-	* sawmill.h (POINTER_GRAB_EVENTS): use PointerMotionMask
-	instead of ButtonMotionMask
-
-1999-10-31  John Harper  <john dcs warwick ac uk>
-
-	* version 0.15
-
-	* keys.c (translate_event_to_x_button): don't ignore non Click1
-	events
-
-	* events.c (key_press, button_press, motion_notify): when a
-	grab is in effect, and there may be more events from it, use
-	the Sync(Pointer|Keyboard) argument to XAllowEvents ()
-
-	* sawmill.h (POINTER_GRAB_EVENTS): new #define, the events to
-	select from pointer grabs
-	* keys.c, functions.c: use POINTER_GRAB_EVENTS when grabbing
-
-1999-10-30  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl (build-frame-style:update-readme): themes in
-	tar files are now expected to have a top-level directory with
-	the same name as the theme
-
-1999-10-29  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (list_frame_generator): maybe fix a bug when
-	Fget_font returns rep_NULL
-
-	* sawmill-ui.jl (build-keymap-shell): improved some gtk packing
-	parameters
-
-	* sawmill-menu.jl (create-menu): call
-	gtk-widget-lock-accelerators on each menu item if the function
-	is available
-
-1999-10-28  John Harper  <john dcs warwick ac uk>
-
-	* dlmalloc.c: support FreeBSD sbrk ()
-
-	* libclient.c (unix_server_init): add one to the length
-	argument to connect ()
-
-	* keys.c (search_keymap): fix matching EV_MOD_ANY events when
-	other modifiers are also specified
-
-1999-10-27  John Harper  <john dcs warwick ac uk>
-
-	* events.c (synthesize_button_release): function to be called
-	when ungrabbing the pointer
-	* functions.c (Fungrab_pointer): call synthesize_button_release
-
-	* events.c (Fquery_last_pointer): replaced this function by
-	Fquery_button_press_pointer, instead of returning the last but
-	one mouse position, return the position at the last ButtonPress
-	event. This helps us work-around problems when MotionNotify
-	events are received without an immediately preceding ButtonPress
-
-	* windows.c (Fwindow_id): return nil if the client window has
-	been deleted
-	(Fwindow_frame_dimensions): call Fwindow_dimensions if the
-	window is currently unframed
-
-	* events.c (property_notify): update cached WM_TRANSIENT_FOR
-	property when it changes
-
-1999-10-26  John Harper  <john dcs warwick ac uk>
-
-	* client.c (main): fix realloc bug
-
-1999-10-25  John Harper  <john dcs warwick ac uk>
-
-	* version 0.14.2
-
-	* functions.c (Fdelete_window): reinterrogate the window's
-	WM_PROTOCOLS property in case it set WM_DELETE_WINDOW after
-	being mapped
-
-	* functions.c (Qafter_restacking_hook): new hook, called
-	whenever the stacking order is explicitly altered
-
-	* functions.c (Fshow_message): use a local event handler for
-	better data hiding
-
-	* events.c (register_event_handler, deregister_event_handler):
-	new functions, allow window-local event handlers to be created
-
-	* flippers.c: new plugin, provides the mechanism for viewport
-	edge-flipping (hooks enter-flipper-hook and leave-flipper-hook)
-
-	* version 0.14.1
-
-	* functions.c (Fsend_client_message): bug fix from Ricardo R.
-	Massaro <massaro ime usp br>
-
-1999-10-24  John Harper  <john dcs warwick ac uk>
-
-	* version 0.14
-
-	* sawmill-ui.jl (documentation): redefine this standard
-	function to get the doc string from the window manager process
-
-	* events.c (shape_notify): call shape-notify-hook
-
-1999-10-23  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (install_window_frame): call restack_frame_parts
-	* frames.c (restack_frame_parts): new function
-
-1999-10-22  John Harper  <john dcs warwick ac uk>
-
-	* frames.c: expose events override the frame-draw-mutex
-
-	* windows.c (manage_windows): call after-iniitialization-hook
-	after adopting all windows
-
-	* client.c (completion_generator): added basic readline symbol
-	completion; doesn't differentiate between variables and
-	functions
-
-	* server.h, server.c, libclient.c: create sockets in
-	`/tmp/.sawmill-USER/DPY' to try and prevent /tmp exploits
-
-	* sawmill-menu.jl (popup-menu): new optional arg POSITION
-
-	* events.c (Fclicked_frame_part, Fclicked_frame_part_offset,
-	Fclicked_frame_part_dimensions): new functions
-
-	* events.c, functions.c (configure_request, Fmove_window_to,
-	Fresize_window_to): call window-moved-hook and
-	window-resized-hook as appropriate
-
-1999-10-20  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-menu.jl (popup-menu): new optional arg TIMESTAMP
-
-	* events.c (Fx_server_timestamp): new function
-
-	* server.h, server.c, libclient.c: unix-domain socket is now
-	`/tmp/.sawmill-DPY' since there have been problems with
-	network-mounted home directories
-
-	* events.c (property_notify): update w->hints when
-	WM_NORMAL_HINTS changes
-
-1999-10-18  John Harper  <john dcs warwick ac uk>
-
-	* functions.c, events.c: added debugging output for X
-	timestamps and [un]grabbing functions
-
-1999-10-17  John Harper  <john dcs warwick ac uk>
-
-	* version 0.13
-
-	* sawmill-ui.jl (build-frame-style:update-readme): handle
-	themes stored in tar files
-
-1999-10-16  John Harper  <john dcs warwick ac uk>
-
-	* images.c (Fmake_image): support loading non-local images (by
-	copying to a temporary file)
-
-1999-10-14  John Harper  <john dcs warwick ac uk>
-
-	* events.c (Fx_events_queued): new function
-
-	* windows.c (Fhide_window): go back to old method of not
-	unfocusing when hidden window has focus
-
-	* windows.c (add_window): set the `mapped' bit (so that it's
-	set when hooks are called)
-
-	* session.c (save_yourself): ignore SmSaveGlobal requests
-
-	* events.c (handle_input_mask): don't set last_event_time to
-	CurrentTime before exiting (this may cause server
-	race-conditions when using recursive edits)
-
-1999-10-13  John Harper  <john dcs warwick ac uk>
-
-	* main.c (main): handle --version option; provide usage
-	function to rep_init ()
-
-1999-10-12  John Harper  <john dcs warwick ac uk>
-
-	* events.c (actual_last_event_time): the real last timestamp
-	from the server
-
-	* frames.c (set_frame_part_bg): fix image tiling
-
-	* frames.c (Qhighlight_when_unfocused): new option, only
-	highlight frame parts in unfocused windows when this is set
-	non-nil
-
-	* display.c, libclient.c (canonical_display): handle unix:0
-	displays
-	(canonical_host): map host name to lowercase
-
-	* keys.c (translate_event_to_x_key): handle shifted keys (i.e
-	things like C-C) correctly
-
-	* colors.c (Fget_color_rgb): fix bug when scanning list of
-	previously allocated colors (accepting non-matching color)
-	(Fget_color): use XParseColor instead of XLookupColor
-
-1999-10-11  John Harper  <john dcs warwick ac uk>
-
-	* version 0.12.2
-
-	* frames.c (set_frame_part_fg): if fg needs to be updated, but
-	bg hasn't recently been redrawn, redraw bg to clear fg
-
-	* version 0.12.1
-
-	* frames.c (list_frame_generator): after freeing the gc
-	(unviewable part) zero its pointer
-
-1999-10-10  John Harper  <john dcs warwick ac uk>
-
-	* version 0.12
-
-1999-10-09  John Harper  <john dcs warwick ac uk>
-
-	* events.c (focus_in, focus_out): ignore events with detail
-	NotifyPointer
-
-1999-10-08  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (set_frame_shapes): new function, construct the
-	frame shape from the union of all individual shapes
-	(set_frame_part_bg): draw the background manually, instead of
-	setting it as the window background and letting the X server do it
-	[these changes fix the infamous ``jerky pointer while changing
-	focus'' bug, also the `unshaped' property has been removed]
-
-	* windows.c (set_window_shape): deleted
-	* events.c (shape_notify): call set_frame_shapes not
-	set_window_shape
-
-	* keys.c (lookup_binding): when event is from no_focus_window,
-	search the root-window-keymap
-
-	* windows.c (before_local_map, after_local_map): new method of
-	ignoring locally-generated map/unmap/reparent notify events;
-	should remove all race conditions (!). The method is to grab
-	the server, unselect the StructureNotifyMask on the window, do
-	the request, then reselect events and ungrab
-
-	* windows.c, frames.c: use before_local_map and after_local_map
-
-	* events.c (map_notify, unmap_notify, reparent_notify): removed
-	all code attempting to ignore locally-generated events
-
-	* sawmill.h (Lisp_Window): removed the `reparenting',
-	`local_maps' and `local_unmaps' fields
-
-	* functions.c (Fgrab_server, Fungrab_server): don't bother
-	hijacking the message function; Fgrab_server calls XSync
-	instead of XFlush to guarantee the server actually is grabbed
-	on return
-
-1999-10-07  John Harper  <john dcs warwick ac uk>
-
-	* display.c, libclient.c (canonical_display): canonicalise any
-	given hostname (i.e. tizer:0 => tizer.dcs.warwick.ac.uk:0.0)
-
-	* events.c, display.c (destroy_notify, error_handler): don't
-	set focus_window = 0, if the current window is destroyed,
-	instead let remove_window () or emit_pending_destroys () call
-	focus_on_window (0) when necessary
-	* windows.c (remove_window, emit_pending_destroys): call
-	focus_on_window (0) when we think the destroyed window is
-	currently focused
-
-	* server.c (server_init): when binding, add one to the size of
-	the address (for the terminating null character)
-
-1999-10-05  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.h (struct frame_part): new bit `below_client'
-	* frames.c: recognize `(below-client . t)' attribute in frame
-	part, when set, the part's window is kept _below_ the client
-
-	* windows.c (remove_window): release passive grabs
-
-	* client.c: include readline support from Christopher P Goller
-	<goller eng utah edu>
-
-	* version 0.11
-
-	* events.c (focus_in): if focus is passed to the root window,
-	focus on our unviewable window
-
-	* windows.c (focus_on_window): go back to using RevertToParent
-
-1999-10-04  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (Fdelete_window): return to using XKillClient
-	instead of XDestroyWindow when WM_DELETE_WINDOW isn't available
-
-	* keys.c, functions.c: when using the x_win_from_arg function,
-	being unable to find a window xid is only an error if we
-	weren't passed a window object (gracefully handle windows being
-	closed while their handles are in use)
-
-	* sawmill.h (struct frame_part): added a field `drawn'; a
-	structure defining the last-drawn contents
-	* frames.c: try to optimize frame-part redisplay as much as
-	possible, only update fg/bg when they're different to the
-	currently displayed data
-
-1999-10-03  John Harper  <john dcs warwick ac uk>
-
-	* version 0.10
-
-	* windows.c (Fhide_window): if the hidden window has the focus,
-	call focus_on_window (0)
-
-	* windows.c (focus_on_window): use RevertToNone instead of
-	RevertToParent
-
-	* frames.c (reset_frame_parts): redraw any frame parts whose
-	state changes
-
-	* events.c (Fcurrent_event_window): moved here from keys.c,
-	this now takes an (undocumented) optional argument, the window
-	to return for the duration of evaluating this event
-
-	* events.c (reparent_notify): handle case where we're not doing
-	the reparenting--unadopt the window and reissue the reparent
-	request
-
-1999-10-02  John Harper  <john dcs warwick ac uk>
-
-	* server.c (server_init): chmod the socket to rwx------
-
-1999-10-01  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (list_frame_generator): when hide-client is set,
-	ensure that the client window ends up unmapped
-
-	* windows.c (focus_on_window): don't focus unmapped client
-	windows, focus the frame instead (so its state changes)
-
-	* sawmill.h (Lisp_Window): new bits: `client_hidden' and
-	`client_unmapped'. Used to allow the client to be unmapped
-	while its shaded. Added integers `local_maps' and
-	`local_unmaps': the number of expected notify events
-
-	* events.c (map_notify, unmap_notify): look at the local_maps
-	and local_unmaps fields
-
-	* windows.c (Fhide_window, Fshow_window): set the
-	client_unmapped bit, and use local_[un]maps instead of the
-	event mask
-
-	* sawmill-ui.jl (build-keymap-shell): added a `Grab key' button
-
-1999-09-30  John Harper  <john dcs warwick ac uk>
-
-	* main.c (exit_code): variable replacing the old jmp_buf exit
-	method; set the variable to an exit code then call Fquit ()
-	* session.c (die): use the new exit method
-
-	* frames.c (set_frame_part_fg): remember to tell the event loop
-	that there may be X events read but not handled (Imlib..)
-
-	* libclient.c, libclient.h: abstracted the guts of client.c,
-	providing a better interface
-	* client.c: call the client_ functions in libclient.o
-
-1999-09-29  John Harper  <john dcs warwick ac uk>
-
-	* client.c: added back the old unix domain code, if this can't
-	make a connection, then try the X property based server
-	* server.c, server.h: reprieved, enabled by default now, but
-	write sockets as ~/.sawmill/.unix-CANONICAL-DISPLAY
-
-	* display.c (Qcanonical_display_name): new variable, display
-	name with fq hostname and screen number
-
-	* functions.c (Fget_x_text_property, Fset_x_text_property): new
-	functions
-
-	* events.c (property_notify): for WM_NAME and WM_ICON_NAME
-	properties, only refresh the frame or call the hook if the
-	value of the property _actually changed_
-
-	* sawmill.h (Lisp_Color): removed the `name' field
-
-	* colors.c (Fget_color_rgb): new function; get a color
-	specified by its RGB values
-
-	* images.c (Fget_image_shape_color, Fset_image_shape_color):
-	new functions, gets/sets the color of the transparent pixels
-
-1999-09-28  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (search_keymap): allow things like `Any-C-x' to work;
-	this looks for a `C-x' event plus any other modifiers
-
-	* session.c: if HAVE_X11_SM_SMLIB_H isn't defined, don't do any
-	session management
-
-	* windows.c (Fwindow_wants_input_p): new function, returns the
-	input field of a window's WM_HINTS property
-
-	* frames.c (set_frame_part_bg): when checking if the part
-	overlaps the client, do it correctly
-
-1999-09-27  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (remove_window_frame): only remove windows from
-	the save-set if the client window was unmapped by its owner
-
-	* display.c (error_handler): ignore errors where resourceid is
-	zero, and don't print unrecognized errors, they're just
-	annoying..
-
-	* sawmill.h (WINDOWP): now the same as XWINDOWP; i.e. we don't
-	care whether or not the client has disappeared (which was
-	causing more problems than it solved)
-
-	* windows.c (Fhide_window, Fshow_window): unmap the client
-	window when it's hidden (by law of the ICCCM)
-
-	* frames.c (list_frame_generator): raise each frame part
-	window as it's created/reconfigured
-
-1999-09-26  John Harper  <john dcs warwick ac uk>
-
-	* version 0.9
-
-	* display.c (sys_init): set the display-name variable to the
-	display we opened (or a null string if in batch-mode)
-
-	* events.c (map_notify): check if the window set its
-	override_redirect attribute to True while it was unmapped, if
-	so un-adopt the window
-
-1999-09-25  John Harper  <john dcs warwick ac uk>
-
-	* events.c (handle_input_mask): ignore NoExpose and
-	GraphicsExpose events
-
-	* sawmill-ui.jl (build-file): new widget `file-name' for
-	selecting files
-
-	* frames.c, windows.c (list_frame_generator,
-	install_window_frame): client window is always left beneath any
-	overlapping frame parts
-
-	* frames.c (set_frame_part_fg, list_frame_generator): the
-	`foreground' frame part property may now be an image (or list
-	of images), it's drawn into the part, respecting any defined
-	justification, but with no scaling or tiling
-
-1999-09-24  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (set_frame_part_bg): when a shaped image is placed
-	(at all) inside the client window, apply the shape mask to the
-	frame part's window, not to the frame's window [this may
-	conflict with shaped client windows?]
-
-	* images.c (Ftile-image): fix bug when src image is vertically
-	smaller than dest image
-
-	* events.c (configure_request): when a client asks to be moved,
-	factor in the frame offset if it's reparented
-
-1999-09-23  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (translate_event): fix bug where X server reports that
-	it has a keysym at index 1 as well at index 0, even when
-	xmodmap disagrees, and the keysyms are the same (XKB extension
-	on XFree86)
-
-	* sawmill-ui.jl (build-keymap): fix cancel/revert problem
-
-	* sawmill-ui.jl (build-keymap): new button: copy
-
-	* sawmill-ui.jl: improved the bindings widget, try to remove
-	the annoying jitter when selected list items
-
-	* session.c (Fsm_connect, Fsm_disconnect): new functions.
-	Connection with the session manager is now removed from the
-	actual initialisation process. The lisp code will call
-	sm-connect at the right time
-
-1999-09-21  John Harper  <john dcs warwick ac uk>
-
-	* colors.c (Fget_color): allocate all colors using
-	Imlib_best_color_match (); this makes no difference using
-	TrueColor or DirectColor visuals but should help on PseudoColor
-	(i.e. 8 bit) visuals
-	* sawmill.h (Lisp_Color): removed the XColor struct, just
-	inline the three rgb values and the pixel color
-
-	* main.c (main): call images_init () before colors_init (),
-	since colors.c using Imlib
-
-	* images.c, gradient.c, functions.c, frames.c: changes for new
-	color type
-
-	* frames.c (list_frame_generator): fix seg fault where either
-	Fget_font () or Fget_color () returns an error
-
-1999-09-20  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (event_proxy_fun): deleted
-	(lookup_event_binding): new function, used by eval_input_event
-	and Flookup_event_binding, it finds the window to search in,
-	then calls lookup_binding
-
-1999-09-19  John Harper  <john dcs warwick ac uk>
-
-	* version 0.7
-
-1999-09-18  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (find_meta): if alt_mod is unset, set it to meta_mod
-	(i.e. similarly to for meta_mod)
-	(Qalt_keysyms, Qmeta_keysyms): variables showing which keysyms
-	generate the two virtual modifiers
-
-1999-09-17  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (list_frame_generator): try to prevent weird shaped
-	frames being created for very small client windows. The rule is
-	that if a frame part's position is specified by a single edge,
-	and it overlaps the opposite edge of the client window, then
-	truncate the part to that edge. This still isn't perfect, but
-	at least the border is always correct
-
-1999-09-16  John Harper  <john dcs warwick ac uk>
-
-	* keys.c: added Mod5 to list of accepted modifiers
-
-	* events.c (key_press): evaluate KeyRelease events again
-
-	* functions.c (Fgrab_keyboard, Fungrab_keyboard): new functions
-
-	* keys.h: EV_MOD_RELEASE extra modifier bit to mark KeyRelease
-	events from KeyPress events
-	* keys.c: removed the long methods of specifying modifiers
-	(Veval_modifier_events, Veval_key_release_events): new 
-	options, control whether we evaluate these abnormal events
-
-	* functions.c (Fwarp_cursor_to_window): unless coordinates are
-	given, warp relative to top-left corner of the frame. If coords
-	are given, they are relative to the client window
-
-	* functions.c (Fgrab_pointer): accept a nil window, and
-	fallback to grabbing on the root if the specified window is
-	unviewable
-
-1999-09-15  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (Qoverride_frame_part_classes): new variable,
-	similar to Qframe_part_classes but with higher precedence than
-	the frame definition itself
-
-	* session.c, main.c, functions.c, frames.c, commands.c,
-	alloca.c: try to support C_ALLOCA and other variants
-
-	* windows.c (emit_pending_destroys): abort if a lisp interrupt
-	occurs
-
-	* frames.c (set_frame_part_bg): rearrange how shaped images are
-	handled -- it's imperative that the frame must _always_ retain
-	the union of the old and new shapes, unfortunately this means
-	that we need to make a copy of the original frame shape..
-
-1999-09-14  John Harper  <john dcs warwick ac uk>
-
-	* commands.c (Fcall_command): changed `f', `w' and `W'
-	interactive codes to `%f', `%w' and `%W'. `%' is now reserved
-	for app-local codes
-
-	* functions.c (Fshow_message): new optional arg POS; defines
-	the position of the message window on the screen
-
-	* windows.c (window_sweep): preserve the order of window_list
-
-1999-09-13  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (Fwindow_framed_p): new predicate
-
-	* keys.c (translate_event_to_x_button): if no button is
-	specified, but mod_any is set, then return AnyModifier and
-	Button1 (which should be ignored)
-	(grab_event, ungrab_event): support AnyModifier correctly
-
-	* functions.c (Fdelete_window, Fdestroy_window): never use
-	XKillClient, just XDestroyWindow
-
-1999-09-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.6
-
-	* windows.c (pending_destroys): new variable, the number of
-	destroyed windows whose hooks haven't been called
-	* windows.c, functions.c, events.c, display.c: call
-	emit_pending_destroys () after round-trip X requests, try to
-	minimize the time between a window dieing and its
-	destroy-notify-hook being called
-
-1999-09-11  John Harper  <john dcs warwick ac uk>
-
-	* cursors.c (Fcursorp): new function
-
-	* windows.c (set_window_shape): if updating a shaped window
-	with no frame, just use a single ShapeSet operation, not a
-	ShapeSet followed by a ShapeUnion (fixes the flashing gmc icons
-	bug)
-
-1999-09-10  John Harper  <john dcs warwick ac uk>
-
-	* images.c (Fimagep): new function
-	(bevel_pixel): increase the bevel multiplier from 0.5 to 0.75
-
-	* windows.c (window_mark_type): ensure that closed windows
-	which haven't had destroy-window-hook called aren't collected
-
-	* frames.c: new frame part properties: `class' and `removable',
-	new window property `removed-parts'
-	(get_keymap_for_frame_part): new function
-
-	* events.c (key_press): don't look for a frame part keymap
-	(button_press, motion_notify): call get_keymap_for_frame_part
-
-1999-09-09  John Harper  <john dcs warwick ac uk>
-
-	* keys.c, keys.h: added `click3' event
-
-	* frames.c (frame_part_destroyer): if any of the frame parts
-	are clicked, make sure that clicked_frame_part gets cleared
-
-	* frames.c, windows.c: added a new window property
-	`hide-client', when non-nil the client window won't be visible
-	(call rebuild-frame after setting for it to take effect)
-
-	* keys.c: removed hashed keymaps (vectors), just lists of
-	bindings now
-	(Fbind_key, Funbind_key): bindings no longer nest
-
-	* sawmill-ui.jl (build-number-entry): use spin-buttons for
-	entering numbers
-
-	* events.c (property_notify): fixed this function
-
-1999-09-08  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.h (Lisp_Window): store window and icon names as lisp
-	strings
-	* events.c, windows.c: handle lisp string names, fix some
-	memory leaks
-
-	* sawmill-ui.jl: added --socket-id option to allow the ui to be
-	embedded in the gnome control center. This also disables the
-	ok/cancel/etc buttons and enables a hacky protocol on
-	stdin/stdout
-
-1999-09-07  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (destroy_window_frame): new arg, whether or not to
-	delete the top-level frame window or not
-	(list_frame_generator): handle building a new frame into an old
-	top-level window
-
-	* windows.c (Fset_window_frame): don't delete the parent frame
-	window, this prevents having to reparent the client back to the
-	root, and in turn prevents all flickering
-
-	* sawmill-ui.jl (ui-quit): tell the wm to save the custom file
-	before exiting
-
-	* images.c (Ftile_image): new function
-
-	* sawmill-ui.jl: changed the architecture, instead of the wm
-	connecting with the configurator, make the configurator connect
-	with the wm (using sawmill-client); re-enabled the "revert"
-	button
-
-	* sawmill.h (Lisp_Window): added `destroyed' bit
-	* windows.c (emit_pending_destroys): call destroy-notify-hook
-	where it's required
-	* events.c (destroy_notify): only call hook if it's not already
-	been called
-	(handle_input_mask): call emit_pending_destroys after each event
-	* display.c (error_handler): mark that may be input pending on
-	the X connection (so that the event loop will call
-	emit_pending_destroys)
-
-	* windows.c (install_window_frame, remove_window_frame): handle
-	adding and deleting from the save-set here (so that unmapped
-	but not destroyed windows are removed from it)
-
-1999-09-06  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl (build-frame-style:update-readme): strip
-	trailing whitespace from the README file
-
-	* functions.c (Fshow_message): don't set save_under and
-	backing_store in the message window--they slow down opaque
-	window movement on XFree86..
-
-	* windows.c, images.c, fonts.c, cursors.c, colors.c: define rep
-	comparison functions for these types, I'd forgotten that they
-	couldn't just be null pointers
-
-	* display.c (error_handler): don't call destroy-notify-hook
-	since it might generate X protocol requests (not allowed)
-
-	* frames.c (Fframe_state_mutex): when this variable is non-nil,
-	entering or leaving a frame-part's window won't affect its
-	state. As a hack, if you set this to `clicked' the frame part's
-	state will be set clicked (this is needed because LeaveNotify
-	events seem to be able arrive before the MotionNotify events
-	causing them)
-
-	* events.c (enter_notify, leave_notify): don't change
-	frame-part state if frame_state_mutex is set
-
-	* keys.c (Fallow_events): new function, wrapper for
-	XAllowEvents
-	(grab_event): all active grabs now use GrabModeSync
-
-	* events.c (button_press, key_press): call XAllowEvents
-	with AsyncPointer or AsyncKeyboard after handling the event,
-	since active grabs are now synchronous
-
-	* events.c (focus_in): only handle the event if the window is visible
-
-	* windows.c (find_window_by_id): print less debugging info
-
-1999-09-05  John Harper  <john dcs warwick ac uk>
-
-	* version 0.5
-
-1999-09-04  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl (frame-style): new widget type
-
-	* functions.c (Fshow_message): new function, displays a
-	specified string in the middle of the screen
-	* events.c (expose): recognize when the message_win is exposed
-	* main.c (main): call functions_kill
-
-	* frames.c (frame_part_focuser): deleted since it's exactly the
-	same as refresh_frame_parts ()
-
-	* session.c (session_init): only try to connect if
-	SESSION_MANAGER is set in the environment
-
-1999-09-03  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (add_window): only call place-window-hook if (as
-	well as not being in initialisation) the `placed' property of
-	the window isn't set
-	(Fwindow_group_id): check that w->wmhints isn't a null pointer
-
-	* session.c: the C portion of session management -- very minimal
-	* sawmill.h (enum exit_codes): new member `ec_session_died'
-
-	* main.c (Qsaved_command_line_args): new variable, contains the
-	pristine command line arguments. Provides the arguments to
-	exec() when restarting
-
-	* functions.c (Fgetpid): new function, should be in librep,
-	needed for session management
-
-	* main.c (Qsaved_command_line_args): new variable, a list
-	containing the unmodified args
-
-1999-09-02  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (Fx_raise_window): wrapper for XRaiseWindow ()
-
-	* version 0.4
-
-	* events.c (client_message): even if we can't find a client
-	window object for the event, still pass it through the hook
-
-	* gtk-style.c: helper program for `gtk' theme. Outputs the
-	default GTK style as an s-expression
-
-	* frames.c (refresh_frame_parts): new function
-
-	* windows.c (Frebuild_frame): new function
-
-	* images.c (Fclear_image): new function
-
-1999-09-01  John Harper  <john dcs warwick ac uk>
-
-	* images.c (Fmake_sized_image): replaced the three pixel colors
-	by one color object
-
-	* frames.c: added a `render-scale' attribute, allows the buffer
-	size of parts rendered on the fly to be reduced
-	* sawmill.h (struct frame_part): added render_scale field
-
-	* images.c (Fbevel_image): new function
-
-1999-08-31  John Harper  <john dcs warwick ac uk>
-
-	* frames.c: new attribute in frame part alists: `renderer', a
-	function called with args (IMAGE STATE). It should draw the
-	background of the frame part into IMAGE for STATE (nil,
-	focused, highlighted, clicked)
-
-	* sawmill.h (struct frame_part): new fields `renderer',
-	`rendered_image' and `rendered_state'
-
-	* images.c (make_image): search the list of images before
-	making a new lisp object
-	(Fmake_sized_image): new function, create a blank image of a
-	certain size and colour
-
-	* gradient.c (Fdraw_vertical_gradient,
-	Fdraw_horizontal_gradient, Fdraw_diagonal_gradient): new
-	plugin, new functions
-
-	* windows.c, main.c, keys.c, images.c, functions.c, frames.c,
-	fonts.c, events.c, cursors.c, colors.c: added doc strings for
-	built-in functions
-
-	* display.c (sys_init): don't connect to display if batch-mode
-	is non-nil
-	* keys.c, images.c, frames.c, fonts.c, cursors.c, colors.c: if
-	batch-mode is non-nil, don't do anything that would access the
-	display when initialising or shutting down
-
-	* windows.c (Fset_client_state): deleted
-
-	* functions.c (Fget_x_property, Fset_x_property): use CARD16
-	and CARD32 types to access 16- and 32-bit data respectively
-
-	* keys.c (num_lock_mod): initialised to the Num_Lock modifier,
-	ignored in events
-	(grab_event, ungrab_event): grab all combinations including
-	LockMask and num_lock_mod
-
-1999-08-30  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (translate_event): ignore the Lock modifier
-
-	* functions.c (Fgrab_pointer): pass last_event_time to
-	XGrabPointer (), not CurrentTime (since Fungrab_pointer also
-	passes last_event_time)
-
-	* events.c (handle_input_mask): set last_event_time to
-	CurrentTime on leaving the function
-
-	* sawmill.h: defining DEBUG to zero sends debugging output to
-	db_printf ()
-	* display.c (db_printf): replacement printf to store debugging
-	output in one of rep's debug buffers
-
-	* sawmill-ui.jl (keymap-shell): doesn't choke on non-symbol
-	commands anymore, but it's still not possible to edit arbitrary
-	forms..
-
-	* events.c (button_press): click the frame before looking for
-	the context map (since we only look for these maps in clicked
-	frame parts)
-	(unmap_notify): call reset_frame_parts
-
-	* windows.c (Fhide_window): call reset_frame_parts
-
-	* frames.c (reset_frame_parts): new function, resets clicked or
-	highlighted state associated with a window frame
-
-1999-08-29  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl: fix option-menu problems, abbreviate displayed
-	font names to just the font's family
-
-	* sawmill.h: define _GNU_SOURCE
-	* functions.c, client.c: some minor `-ansi -pedantic' fixes
-
-1999-08-27  John Harper  <john dcs warwick ac uk>
-
-	* events.c (colormap_notify): fix bug where changing a colormap
-	when no window is focused causes a segfault
-
-	* sawmill.h (XlibSpecificationRelease): if undefined, define to
-	4; this really means X11R4 or _less_
-
-	* display.c (XGetAtomNames): implement using XGetAtomName ()
-	for X11R5 or less
-
-	* events.c (configure_request): if we know about the window,
-	call raise-window or lower-window instead of XRaiseWindow () or
-	XLowerWindow ()
-
-	* sawmill-ui.jl (build-set): only call
-	gtk-option-menu-set-history if history is non-nil
-
-1999-08-26  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.h (struct frame_part): added `highlighted' and
-	`pending_refresh' bits
-
-	* events.c: handle highlighting frame parts, and temporarily
-	unclicking parts when the mouse leaves them. If the
-	ButtonRelease occurs when the mouse isn't in the part, the
-	context-map is ignored
-
-	* frames.c: the background/foreground attributes are now
-	(NORMAL FOCUSED HIGHLIGHTED CLICKED) (note addition of
-	highlighted class, displayed when the mouse is in the part)
-	(Vframe_draw_mutex): when t no frame parts are redrawn
-
-	* events.c (Qproperty_notify_hook, Qreparent_notify_hook): new
-	hooks
-	(get_event_mask): new function, returns an event mask that
-	would select a specified type of event
-
-	* keys.c (Fproxy_current_event): allow event_mask and propagate
-	args to XSendEvent to be specified
-
-	* frames.c (refresh_frame_part): new function, draws both
-	background and foreground
-
-	* sawmill-ui.jl (build-set): sets can now be displayed as
-	option menus, clists, as well as the old radio buttons,
-	controlled by the ui-set-style var, or the :widget key
-
-1999-08-25  John Harper  <john dcs warwick ac uk>
-
-	* display.c (beep): new function, hooked into rep_beep_fun
-
-	* functions.c (Fdelete_window): only send WM_DELETE_WINDOW
-	message if window has said it can handle it, otherwise
-	XKillClient
-
-	* windows.c (Fstacking_order): new function
-
-	* functions.c (Fraise_window, Flower_window,
-	Fraise_lower_window, Fcirculate_up, Fcirculate_down): deleted
-	(Frestack_windows): new function
-
-	* events.c: replace calls to XMapRaised by XMapWindow
-
-	* display.c (error_handler): don't report BadWindow errors that
-	we've already handled
-
-1999-08-24  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl (build-keymap-shell:update-doc): translate
-	newlines to spaces in doc strings
-	(build-keymap): flatten and wrap the keymap doc string
-
-	* colors.c (Fcolor_rgb): new function
-
-	* fonts.c (Ftext_width, Ffont_height): new functions
-
-	* sawmill-ui.jl (build-keymap-shell:set-binding): align the
-	clist flush left when scrolling to the selected command
-
-	* events.c (key_press): ignore KeyRelease events
-
-1999-08-23  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (list_frame_generator): was making the rectangle of
-	the client window too big when setting the shape mask
-
-	* commands.c (Fcall_command): the `W' specifier ignores the
-	current event's window if it's the root
-
-	* client.c: new option `-c COMMAND' to invoke an interactive
-	function
-
-	* sawmill-ui.jl (build-pages): use a HPaned widget to contain
-	the box and group frame, this stops the boundary changing to
-	match their relative sizes
-
-	* version 0.3a
-
-	* functions.c (Fgrab_pointer): remove the hack choosing which
-	window to grab in
-	(Fungrab_pointer): if we're waiting for a ButtonRelease on a
-	frame-part, unclick it
-
-	* events.c: changes to how frame-part "clicking" is handled
-	(Fquery_pointer): optional arg GET, to force a round-trip to
-	the server
-	(Faccept_x_input): new function, process any available X events
-
-	* sawmill-ui.jl (keymap-shell): this now has a new key
-	`:doc-path' giving the list of documentation databases. This is
-	used to display the doc-string of the selected command
-
-	* client.c: after sending the event, _always_ wait for a
-	PropertyNotify event, not just for synchronous requests
-
-1999-08-22  John Harper  <john dcs warwick ac uk>
-
-	* version 0.3
-
-	* client.c: new client-server protocol, using X properties to
-	allow inter-host communications
-	* server.h, server.c: deleted, the server is now Lisp code
-
-	* windows.c (x_find_window_by_id): try harder to find a window
-	object for an id, possibly returning an invalidated object
-	(remove_window): even if the window has been invalidated, try
-	to remove the frame when appropriate
-
-	* sawmill.h (Lisp_Window): new field `saved_id', this is
-	another copy of the window id, but isn't zeroed when the error
-	handler finds that the window has been deleted
-
-	* events.c (property_notify): between XGet.. calls, check if
-	the error handler invalidated the window
-
-	* events.c (destroy_notify): use the x_find_window_by_id
-	function to search for a window object for the destroyed window
-	(since the error handler may have invalidated it)
-
-	* keys.c: handle `Alt' similarly to `Meta' (i.e. find the
-	actual modifier bit then subsitute it)
-	* keys.h: added EV_MOD_ALT
-
-	* events.c (Fquery_pointer): only use the stored mouse position
-	if we're currently handling an event, and this event stored the
-	position
-
-	* functions.c (Fgrab_server, Fungrab_server): set
-	`rep_message_fun' to null whilst the server is grabbed (in case
-	stdout is to an xterm)
-
-	* functions.c (Fgrab_pointer): if the specified window object
-	doesn't have a mapped frame, then grab in the root window
-
-	* functions.c (Fget_x_property): return nil if property doesn't
-	exist
-
-1999-08-21  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (Fraise_window, Flower_window,
-	Fraise_lower_window, Fdelete_window, Fdestroy_window): these
-	now use the `W' interactive decl
-
-	* keys.c (Fcurrent_event_window): check if the window is a
-	frame part
-	(lookup_binding): new arg, CURRENT-WINDOW, the window whose
-	`keymap' property is to be scanned
-	(eval_input_event): if the event is a pointer event, look for a
-	binding in the window that received the event, not the window
-	with the input focus
-
-	* commands.c (Fcall_command): new interactive specs, `w', the
-	window that received the current event, and `W', either the
-	same as `w' or the focused window
-
-	* main.c (Qbefore_exit_hook): new hook; called before exiting
-
-	* keys.c (Fcurrent_event_window): as well as returning a window
-	object, this might instead return the symbol `root' or the
-	integer id of an unmanaged window
-	(Fproxy_current_event): send the current event on to a
-	specified window
-
-	* gnome.c: deleted, this is now done in lisp
-
-	* functions.c (Fdelete_window): accept integer window ids
-	(Fdestroy_window): if an integer window id, use XDestroyWindow,
-	not XKillClient
-	(Fsend_client_message): new function
-	(Fcreate_window): new function (so I can do gnome-wm in lisp)
-	(x-atom, x-atom-name): translate between symbols<->atoms
-
-	* events.c (client_message): now pass _all_ the data in the
-	event to the hook, format is (WINDOW TYPE-ATOM DATA-ARRAY).
-	DATA-ARRAY is a string (8-bit format) or vector of integers
-
-	* display.c (x_atom_symbol, x_win_from_arg): new functions
-
-1999-08-20  John Harper  <john dcs warwick ac uk>
-
-	* functions.c (Flist_x_properties, Fdelete_x_property,
-	Fset_x_property, Fget_x_property): new functions
-
-	* client.c (eval_lisp_form): don't use puts () to output the
-	result string since it could contain zero bytes
-
-	* windows.c (remove_window): a new argument FROM-ERROR. If
-	non-nil then we're being called from the error handler, and
-	thus won't generate any X protocol requests, let gc destroy the
-	frame later
-
-	* frames.c (frame_part_destroyer): don't try to delete parts
-	without windows
-
-1999-08-19  John Harper  <john dcs warwick ac uk>
-
-	* frames.c, events.c: it's possible for Imlib_render to trigger
-	the X error handler, and possibly invalidate the window that's
-	currently being manipulated. So test that `w->id != 0' in
-	suitable places
-
-1999-08-16  John Harper  <john dcs warwick ac uk>
-
-	* version 0.2
-
-	* display.c (sys_init): create a new window `no_focus_window'
-	that gets given the focus when no other window has it (so we
-	receive KeyPress events from it)
-	* windows.c (focus_on_window): when told to focus on nothing,
-	focus on the `no_focus_window'
-	* events.c (unmap_notify): if the window being unmapped has the
-	focus (after calling the unmap-notify-hook), unfocus it
-
-1999-08-15  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl: two new elements `keymap' and `keymap-shell',
-	for keymap customization
-
-	* events.c (circulate_notify): empty event handler
-
-	* keys.c (Fgrab_keymap, Fungrab_keymap): new functions
-
-	* keys.c (lookup_event_name): fix the bug where only the bottom
-	16 modifier bits were being checked
-
-1999-08-14  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl (build-color:clicked): hide the `Help' button
-	in the color selection dialog (since it does nothing)
-
-	* sawmill-ui.jl: always format color specifiers correctly
-
-1999-08-13  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl (build-color): implements a separate `color'
-	element (pretty similar to the `font' element)
-	(build-pages): pages are now implemented as a clist and a frame
-	(instead of a notebook). This can be changed via the
-	ui-pages-style variable
-
-	* frames.c (list_frame_generator): the `foreground',
-	`background' and `font' keys may now be functions
-
-	* frames.c (set_frame_part_bg): for shaped images, apply the
-	mask at the correct frame coordinates
-
-1999-08-12  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.h (Lisp_Window): cache the TRANSIENT_FOR hint
-	* windows.c (Fwindow_transient_p): use the cached value
-
-	* windows.c (focus_on_window): update `focus_window'
-	immediately, instead of waiting for the FocusIn event
-	* events.c, display.c: be more careful when changing the
-	`focus_window' variable
-
-	* events.c: record the time of the _two_ most recent pointer
-	positions, the new function Fquery_last_pointer allows access
-	to the earlier position
-
-1999-08-11  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl: use a ButtonBox for the control buttons, don't
-	display the Revert and Refresh buttons (but they're still
-	there, just not enabled)
-
-1999-08-10  John Harper  <john dcs warwick ac uk>
-
-	* sawmill-ui.jl, sawmill-menu.jl: copied from top-level
-	directory, these are now compiled before being installed
-
-	* events.c (handle_input_mask): new function, handle all
-	outstanding events matching a specified event mask
-
-	* windows.c (Fset_window_frame): between removing the old frame
-	and installing the new frame handle all SubstructureNotify
-	events to prevent the dread infinite frame-add-remove bug
-
-1999-08-09  John Harper  <john dcs warwick ac uk>
-
-	* sawmill.h (Lisp_Window): make `reparenting' an int so it can
-	be incremented and decremented
-	* windows.c, events.c: some magic to make the w->reparenting
-	work when called from Fset_window_frame
-
-	* frames.c (frame_part_destroyer): destroy frame part windows
-	and delete their contexts
-	(list_frame_generator): don't look at the frame's unshaped
-	property if the client window is shaped
-
-	* colors.c (Fcolor_name, Fcolorp): new functions
-	* fonts.c (Ffont_name, Ffontp): new functions
-
-1999-08-07  John Harper  <john dcs warwick ac uk>
-
-	* main.c (sawmill_symbols): set interrupt-mode and error-mode
-	to top-level; try to stop the wm getting hung in a
-	recursive-edit
-
-1999-08-04  John Harper  <john dcs warwick ac uk>
-
-	* gnome.c (rep_dl_init): delete some properties from the root
-	window that other wm's may have set but not removed
-
-1999-08-03  John Harper  <john dcs warwick ac uk>
-
-	* version 0.1
-
-	* main.c (Qsawmill_version): new variable
-
-1999-08-02  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (Fset_client_state): set the WM_STATE property of a
-	window
-
-	* main.c (add_hook): new function
-
-	* gnome.c: support the _WIN_STATE hint (but only the sticky
-	attribute)
-
-	* events.c (configure_request): raising a window uniconify's
-	it, so that the GNOME pager can uniconify windows (!?)
-
-	* cursors.c (Fget_cursor): if a symbol, dereference it's
-	cursor-shape property _before_ scanning the list for an
-	existing cursor
-
-	* windows.c (Fcall_window_hook): new function, similar to
-	call-hook, but first hook argument is always a window. Before
-	evaluating the symbol value, look for a property of the same
-	name in the window
-	* events.c, display.c, windows.c: where appropriate use
-	Fcall_window_hook instead of Fcall_hook
-
-	* gnome.c (rep_dl_init): if ignored-window-names or
-	sticky-window-names are void, set them to nil before consing on
-	the gnome window names
-
-1999-08-01  John Harper  <john dcs warwick ac uk>
-
-	* gnome.c (Fgnome_set_workspace): if no workspace is active,
-	pretend that workspace zero is
-
-	* display.c (error_handler): call destroy-notify-hook _after_
-	setting window->id to zero
-	(sys_init): select for SubstructureNotify on root window
-
-	* events.c (client_message): call `client-message-hook' if
-	message isn't handled. This is an `or' style hook
-
-1999-07-31  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (list_frame_generator): detect when regenerating a
-	frame by looking at w->frame instead of w->frame_parts (which
-	can be null even when the window is framed)
-
-	* gnome.c: new loadable module, minimal GNOME compliance
-	(client list, button proxying, workspace details)
-
-	* windows.c (Fwindow_size_hints): pass along the PPosition,
-	PSize, USPosition and USSize flags
-
-	* keys.c (event_proxy_fun): hook called when an unbound event
-	occurs. Should return TRUE if it handles the event
-
-1999-07-30  John Harper  <john dcs warwick ac uk>
-
-	* frames.c: fix stupid stack-smashing bug
-
-	* images.c (Fimage_modifier, Fset_image_modifier): new
-	functions for playing with Imlib's image modifiers
-
-	* frames.c (list_frame_generator): handle propagating the shape
-	of the client to the frame here since it's a lot less ugly
-	* windows.c: don't call set_window_shape in so many places
-
-1999-07-29  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (add_window): set WM_STATE of client windows
-	(Fwindow_put): when the `keymap' property changes, ungrab the
-	old keymap, then grab the new one
-
-	* keys.c (Fbind_keys, Funbind_keys): grab/ungrab events in
-	client windows if binding to the `global-keymap' or a window's
-	`keymap' property
-
-	* frames.c (list_frame_generator): indirect through multiple
-	symbols in frame_style
-
-	* windows.c, server.c, functions.c, events.c, display.c:
-	replaced some calls to XSync by XFlush. (XSync also buffers any
-	pending events, preventing select from returning)
-
-	* display.c: add a call to XSync in the rep_redisplay_fun hook
-
-1999-07-28  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (fix_window_size): call set_window_shape
-
-	* windows.c (add_window): set frame_style to nil not
-	default-frame initially
-
-	* frames.c: remove the frame data type, now frames are just
-	lists, a null list is a null frame. Also, a window's frame may
-	be specified as a symbol, in this case the plist of the symbol
-	is used for the frame properties
-
-	* windows.c: select VisibiltyChangeMask on the client window
-	not the frame, the frame was always PartiallyObscured (by the
-	client?)
-	* events.c (visibility_notify): don't check that the event
-	window is the frame anymore
-
-	* sawmill.h (Lisp_Window): new field `shaped' set if the client
-	window is shaped
-	* events.c: handle shaped client windows (ShapeNotify events)
-	* windows.c (set_window_shape): new function, copies the client
-	windows shape to the frame
-	(install_window_frame): call set_window_shape
-
-	* display.c (shape_event_base, shape_error_base): new variables
-
-	* frames.c (list_frame_generator): when regenerating a frame
-	recenter the client window in the resized frame window
-
-	* events.c (button_press): fake an unwind-protect around the
-	event evaluation, so a ButtonRelease can unclick buttons
-	without aborting
-
-	* windows.c (install_window_frame): also select
-	SubstructureRedirectMask for frame, so that we get
-	ConfigureRequest events for the client window
-
-1999-07-25  John Harper  <john dcs warwick ac uk>
-
-	* frames.c (list_frame_generator): add LeaveWindowMask to frame
-	parts
-
-	* windows.c (Qplace_window_hook): new hook, called when windows
-	are mapped for the first time
-	(Fwindow_transient_p): now returns the id of the other window
-	if the window is a transient
-	(Fwindow_id, Fwindow_group_id): new functions
-	(Fwindow_size_hints): new function, returns the size hints as
-	an alist
-
-	* sawmill.h: added exit types for the clean_exit_jmp_buf
-
-	* main.c (Fquit, Frestart): new functions
-
-	* keys.c (Qroot_window_keymap): window to use when mouse is
-	over the root
-
-	* functions.c (Fsync_server): new function, calls XSync ()
-
-	* events.c (button_press): handle ButtonPress before evaluating
-	the binding, and ButtonRelease after the binding
-	(leave_notify): if leaving a frame part, ensure that the
-	clicked count is zero
-



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]