ChangeLog from Blackbox (this code's previous project):
+Changes from 0.62.1 to 0.65.0:
+ - added Taiwan Chinese (zh_TW), Hungarian (hu_HU), Latvian (lv_LV),
+ Korean (ko_KR), Norwegian (no_NO), Polish (pl_PL), Romanian (ro_RO) and
+ Ukrainian (uk_UA) nls files and updated most of the others.
+ - added French man pages
+ - remove slit and netwm as compile time options
+ - strip much of BaseDisplay's original functionality and move it to the
+ blackbox class.
+ - huge amounts of internal cleanups
+ - added emacs local variables to each file that prevent the addition of tabs
+ - added a Util.cc file which contains useful functions with no obvious home.
+ - move code over to the STL
+ - removed several unused variables and otherwise reduced the memory usage
+ of the objects in Blackbox. For the record the binary is roughly 100k
+ larger than 0.62.0 and that is mostly due to the STL but there is also a
+ fair bit of new code. However for the most part blackbox runs faster and
+ is still one of the leanest window managers out there today.
+ - bsetroot now sets _XROOTPMAP_ID, so pseudo transparent apps will be happy
+ - beginnings of a strut implementation. toolbar and slit are removed from
+ the available screen area if 'full maximize' is not set
+ - XReparentWindow sends an UnmapNotify to the window manager however
+ in certain cases the window is already unmapped so the window manager
+ never gets the event and the unmapNotify event is where reparentNotify was
+ handled. Added a reparentNotifyEvent handler in the BlackboxWindow class
+ and a new case in the Blackbox class's process_event function.
+ - no more blackbox->grab/ungrab calls everywhere
+ - compression of motion and expose
+ - Now we have one function which turns ~/ into /home/user/. This is now
+ called everywhere this expansion should be done. Even added this to the
+ resource.menu_file so now the menu file may be specified as
+ ~/blackbox_menu.
+ - added a TimerQueue which is a priority_queue with the ability to release
+ items it contains before they reach the top of the queue. Also added a
+ TimerQueueManager protocol class which BaseDisplay now inherits from.
+ - BTimer now defaults to NOT recurring. Most of the timers in blackbox were
+ one shots so I saw little benefit in defaulting to repeating timers.
+ - update transient handling, should solve issues with apps like acroread.
+ added a getTransientInfo() method of the BlackboxWindow class which
+ handles checking the transient state in X and setting the appropriate
+ variables on the window. To attack the infinite loops this
+ function ensures that client.transient != this and we check for loops
+ of the form A -> B -> C -> A. The new transient code also allows for one
+ window to have multiple transients so applications like xmms and web
+ browsers are better behaved.
+ - even better ICCCM support and focus handling
+ - wmswallow works
+ - fix for clock clipping in the toolbar
+ - better support for non decorated windows and toggling decor
+ - the geometry window shown when moving or resizing a window now handles the
+ parentrelative setting better. parentrelative support has been improved
+ for all of the other widgets as well.
+ - better window group handling
+ - improved edge snap support (still no window to window snapping)
+ - changing preferences no longer leads to windows being raised
+ - the window's "send to" menu ignores the current workspace, which is a
+ better UI approach
+ - new placeWindow algorithm. Blows the old one out of the water. Not only
+ is it faster but it is also cleaner code too (-: Went from number 5 in
+ the profiling results to under 30. Image rendering is now the slowest
+ part of managing of new windows.
+ Because of the new code layout, support is now there for new and
+ different layout options but this will wait for after 0.65.0.
+ - smart window placement ignores shaded windows now
+ - new option in the Config menu which allows Scroll Lock to disable
+ Blackbox's keybindings.
+
Changes from 0.62.0 to 0.62.1:
- the lock modifier code handles user redefined modifiers better
- check if the locale actually needs multibyte support before using multibyte