Don't call ::constrain() in setFullScreen(true), because many
[blackbox.git] / ChangeLog-0.60.x
blob8f9fead464f2b523845f1784af982a29e4e93143
1 ChangeLog for 0.60.x
3 Changes from 0.62.1 to 0.65.0:
4   - added Taiwan Chinese (zh_TW), Hungarian (hu_HU), Latvian (lv_LV),
5     Korean (ko_KR), Norwegian (no_NO), Polish (pl_PL), Romanian (ro_RO) and
6     Ukrainian (uk_UA) nls files and updated most of the others.
7   - removed the Estonian (ee_ET) and Turkish (tr_TR) locales due to their
8     being heavily out of date and unmaintained
9   - remove slit and netwm as compile time options
10   - strip much of BaseDisplay's original functionality and move it to the
11     blackbox class.
12   - huge amounts of internal cleanups
13   - added emacs local variables to each file that prevent the addition of tabs
14   - added a Util.cc file which contains useful functions with no obvious home.
15   - move code over to the STL
16   - removed several unused variables and otherwise reduced the memory usage
17     of the objects in Blackbox.  For the record the binary is roughly 100k
18     larger than 0.62.0 and that is mostly due to the STL but there is also a
19     fair bit of new code.  However for the most part blackbox runs faster and
20     is still one of the leanest window managers out there today.
21   - bsetroot now sets _XROOTPMAP_ID, so pseudo transparent apps will be happy
22   - beginnings of a strut implementation.  toolbar and slit are removed from
23     the available screen area if 'full maximize' is not set
24   - XReparentWindow sends an UnmapNotify to the window manager however
25     in certain cases the window is already unmapped so the window manager
26     never gets the event and the unmapNotify event is where reparentNotify was
27     handled.  Added a reparentNotifyEvent handler in the BlackboxWindow class
28     and a new case in the Blackbox class's process_event function.
29   - no more blackbox->grab/ungrab calls everywhere
30   - compression of motion and expose
31   - Now we have one function which turns ~/ into /home/user/.  This is now
32     called everywhere this expansion should be done.  Even added this to the
33     resource.menu_file so now the menu file may be specified as
34     ~/blackbox_menu.
35   - added a TimerQueue which is a priority_queue with the ability to release
36     items it contains before they reach the top of the queue.  Also added a
37     TimerQueueManager protocol class which BaseDisplay now inherits from.
38   - BTimer now defaults to NOT recurring.  Most of the timers in blackbox were
39     one shots so I saw little benefit in defaulting to repeating timers.
40   - update transient handling, should solve issues with apps like acroread.
41     added a getTransientInfo() method of the BlackboxWindow class which
42     handles checking the transient state in X and setting the appropriate
43     variables on the window.  To attack the infinite loops this
44     function ensures that client.transient != this and we check for loops
45     of the form A -> B -> C -> A.  The new transient code also allows for one
46     window to have multiple transients so applications like xmms and web
47     browsers are better behaved.
48   - even better ICCCM support and focus handling
49   - wmswallow works
50   - fix for clock clipping in the toolbar
51   - better support for non decorated windows and toggling decor
52   - the geometry window shown when moving or resizing a window now handles the
53     parentrelative setting better.  parentrelative support has been improved
54     for all of the other widgets as well.
55   - better window group handling
56   - improved edge snap support (still no window to window snapping)
57   - changing preferences no longer leads to windows being raised
58   - the window's "send to" menu ignores the current workspace, which is a
59     better UI approach
60   - new placeWindow algorithm.  Blows the old one out of the water.  Not only
61     is it faster but it is also cleaner code too (-:  Went from number 5 in
62     the profiling results to under 30.  Image rendering is now the slowest
63     part of managing of new windows.
64     Because of the new code layout, support is now there for new and
65     different layout options but this will wait for after 0.65.0.
66   - smart window placement ignores shaded windows now
67   - new option in the Config menu which allows Scroll Lock to disable
68     Blackbox's keybindings.
70 Changes from 0.62.0 to 0.62.1:
71   - the lock modifier code handles user redefined modifiers better
72   - check if the locale actually needs multibyte support before using
73     multibyte functions
74   - use srcdir in all of the makefiles
75   - added zh_CN (Chinese) nls support
77 Changes from 0.61.1 to 0.62.0:
78   - the immorel release
79   - added the ja_JP nls directory and man pages
80   - general code touchups
81   - blackbox-nls.hh is always generated even if --disable-nls is used.
82     This allows us to not have all of those hideous #ifdef NLS chunks.
83     Nothing to worry about, if you do not want NLS this does not affect you
84   - Workspace::placeWindow() cleanups.  Also a speed bump from reducing the
85     use of iterator->current() and changing the delta from 1 to 8
86   - cleanups to compile with g++ 3.0
87   - make distclean actually removes Translation.m and blackbox-nls.hh.
88     Also fixed Makefile.am to pass --foreign instead of --gnu when calling
89     the autotools.
90   - fixed a desciptor leak in BScreen::parseMenuFile, seems opendir
91     lacked a matching closedir.
92   - fix transient window handling code in Workspace::removeWindow() so
93     transients give focus back to their parents properly.  The code originally
94     handled sloppy focus then transient windows, so we just flopped the
95     if/elsif.  This is immediately noticable with web browsers and their open
96     location windows.
97   - plugged a small leak in ~Toolbar
98   - fixed list::insert so you really can insert at item number 2.  While there
99     I cleaned up the code a bit.
100   - added decoration to the atom state stored in a window
101   - fixed a typo in bsetroot.cc: 'on of' -> 'one of'.
102   - fixed the window menu gets left open when another window button is pressed
103     issue with a call to windowmenu->hide() in window->maximize()
104   - applied xOr's patch for decoration handling
105   - applied xOr's patch for the maximize, shade, unmaximize bug
106   - applied Kennis' patch for sending incorrect Slit configure notices
107   - BlackboxWindow's flags have been moved into a flags structure
108   - applied xOr's patch for border handling
109   - resizing a window turns off its maximized flag.  Before a resized window
110     thought it was still maximized and maximizing a double action
111   - BlackboxWindow::withdraw no longet sets the state to Withdrawn.
112     This confused some X clients.
113   - updated the manpages and added Dutch NLS support (thanks Wilbert)
114   - added it_IT nls files, thanks Luca Marrazzo <marra.luca@libero.it>
115   - the menu file mentioned in the manpage is now based on DEFAULT_MENU
116   - configure script found basename in -lgen, but did not set HAVE_BASENAME
117     causing compilation problems on irix and possibly others.  Added a call
118     to AC_DEFINE in AC_CHECK_LIB to fix this.
119   - menu is no longer installed, you need to copy it yourself
120   - cleaned up i18n code a little.  Several member functions were declared
121     but never used and getMessage() had a default argument which was also
122     never used.
123   - i18n will now compile cleanly on machines without nl_types.h
124   - the lock modifiers no longer stop blackbox!
125   - maximize a window via bbkeys and the maximize button is not redrawn, fixed
126   - now exit with an error code if an unknown option is passed
127   - autoraise and multiple dialog windows yields segv bug fixed
128     also lengthened the default auto raise delay from 250 to 400
129   - another iteration of autoraise and dialog box handling, this time we
130     noticed that nothing ever reset blackbox.focused_window to 0 when a window
131     was removed
132   - check if the window is visible before changeBlackboxHints() calls maximize
133   - placeWindow no longer takes edgeSnapThreshhold into account
134   - ignore style files ending in ~
135   - support locale specifiers with @euro in them
136   - added Slovenian man pages and nls, thanks Ales Kosir
137   - Toolbar name editing buffer reduced to 128 chars, logic added to make sure
138     this buffer is not overrun
139   - added German nls files, thanks Jan Schaumann
140   - added my name to the code, updated the version output
141     
142 Changes from 0.61.0 to 0.61.1:
143   - fixed some of the code to explicitly use colormaps so that when
144     blackbox decides to use a non-default visual everything will
145     still work (although it may look darn ugly)
146   - optimizations to the deiconify/raising code to (hopefully) deal
147     with a rather nasty bug, plus make things a little more efficient
148   - changed the code so that the close button is always redrawn on
149     button release events, just in case the client decides not to
150     close in response to the message (see Acroread)
151   - tinkered with the Makefiles again to make sure Blackbox
152     completely cleans up after itself during an uninstall
153   - fixed a glitch in window placement that was making Blackbox
154     place some larger windows at coordinates near 2**31
155   - merged in a patch from nyz which fixed a bug with not sending
156     configure events when a window is both moved and resized (eg
157     when the left resize grip is used) as well as optimized some
158     of the show/hide code to use the stacking order
159   - fixed a bug in blackbox's support of the X shape extension...
160     it wasn't correctly resetting the bounding region after a window
161     was resized
162   - fixed a glitch with the geometry window where it would persist
163     if the client was unmapped while in motion
164   - tweaked the code for decorating transient windows so that it
165     is possible to use MOD1+Mouse3 to resize transients as long as
166     there is not some other reason to disable functions.resize
169 Changes from 0.60.3 to 0.61.0:
170   - added slightly updated copies of the blackbox/bsetroot manpages.
171   - reworked the Windowmenu code so that using the second mouse
172     button on the Send To menu moves you along with the window
173   - merged in bsd-snprintf.(h|c) from openssh so that Blackbox can
174     compile on older boxes without (v)snprintf in their standard lib.
175   - fixed a pair of problems where blackbox was not returning icons
176     and slit apps to a useable state at shutdown
177   - fixed a problem with menus not getting layered correctly after
178     a reconfigure or menu reload
179   - changed the behavior of the various MOD1+ButtonPresses on windows...
180     they should now be more consistent with the button behavior on the
181     decorations :
182             . MOD1+Button1 raises and moves the window (unchanged)
183             . MOD1+Button2 lowers the window (used to resize the window)
184             . MOD1+Button3 resizes the window (new button combo)
185   - fixed a small but _extremely_ annoying bug exposed by cvsup
186   - styled frames are now a thing of the past... the textures formerly
187     known as window.frame.(un)focus have been replaced by solid colors
188     window.frame.(un)focusColor... the thickness of the frame is now
189     determined by frameWidth, which will default to bevelWidth if not
190     specified
191   - middle clicking on a window in a workspace's window list now moves
192     the window to the current workspace
193   - fixed a minor glitch with the appearance of window labels for
194     certain newly-started apps (i.e. rxvt)
195   - added a new configure option for both the toolbar and the slit --
196     autohide. Hopefully this should help quell the demands for the
197     removal of the toolbar...
198   - added code to better handle apps that change the window focus
199   - changed the command execution code (used to handle rootCommands
200     and executable menu items) to be more robust... compound commands
201     should now work
202   - a new-and-slightly-improved implementation of unstyled frames should
203     mean slightly better performance than previously
204   - fixed a couple of stupid bugs in the new code for handling
205     Solid Flat textures more efficiently
206   - fixed the nls makefiles so that they respect DESTDIR, behave better
207     if you reinstall over an existing installation, and actually remove
208     their files on a make uninstall
209   - added cthulhain's bsetbg script to the util directory... see the
210     file README.bsetbg for more information
211   - added Estonian, French and Danish translations
213 Changes from 0.60.2 to 0.60.3:
214   - put in a (temporary?) fix for a bug with the new way icons are
215     handled. Previously an icon was created only for non-transient
216     windows, which means that 1) minimized transient windows were
217     not getting cleaned up at shutdown, and that 2) one could
218     conceivably lose access to a minimized transient if there were
219     a break in the transient chain.
221     For the time being, every iconified window gets an icon. In
222     order to make this a little nicer, if a window doesn't provide
223     an icon title, the window title is used in the icon menu, rather
224     than 'Unnamed'.
225   - fixed a bug in handling the destruction of intermediate
226     transient windows. The code was leaving the transient of a
227     destroyed window with a reference to the now non-existent
228     window. This can lead to all sorts of problems.
229   - fixed a slight positioning error when the slit is on the right
230     side of the screen
231   - included a new style, Minimal, which is designed for use on 8-bit
232     displays. It tries to use a bare minimum of colors, and with the
233     new code regarding Flat Solid, should consume very little memory.
234   - made yet another alteration to the way focus changes after a window
235     closes under ClickToFocus. Blackbox now tracks the stacking order of
236     all windows and uses this information to give the focus to the topmost
237     window.
238   - new configure option :
239         --enable-styled-frames   include support for fully-styled window
240                                  frames -- these are the decorations which
241                                  are affected by the window.frame* theme
242                                  entries. This option is turned on by
243                                  default.
245                                  Because of the way they are implemented,
246                                  these are typically the most memory and
247                                  render intensive of the various blackbox
248                                  decorations, even if they are typically
249                                  only a pixel or so wide. Disabling this
250                                  feature can result in a substantial
251                                  decrease in X memory usage, but it's
252                                  enabled by default to remain compatible
253                                  with previous versions.
255   - added a whole mess of logic so that blackbox will use
256     XSetWindowBackground for Flat Solid textures instead generating
257     a pixmap (which would be subsequently cached)... should help cut
258     down some on the X memory usage
259   - altered the behavior of the BImageControl timer... now it will
260     fire every cacheLife minutes, regardless of when anything has
261     been removed from the cache
262   - modified the NLS build code yet again... at this point we've
263     hopefully hit the least common denominator and it should work
264     for everyone
265   - dealt with a possible problem in the BlackboxWindow constructor
266     where we referred to a member after deletion
267   - removed a last lingering bit of the allocate()/deallocate() code
268   - fixed a pair of string formatting problems
271 Changes from 0.60.1 to 0.60.2:
272   - updated README.bbtools, since bbpager and bbkeys were updated to work with
273     0.60.x (also removed the .diffs from the source tree)
274   - fix for compiling with NLS support on Solaris
275   - added Turkish, Russian and Swedish translations
276   - applied patch for more correct Spanish translations
277   - added completed pt_BR (Brazillian Porteguese) translation
278   - removed mem.h and the allocate()/deallocate() calls throughout blackbox
279     these have been unused for a long time, and needed to go away :)
280   - compile fixes for --enable-debug
281   - changed the font loading/drawing code... XFontSets are only used if
282     the locale is set properly.  So you can still compile with nls support,
283     but do not set your LANG environment variable, and your fonts will be
284     loaded and drawn the old way
285   - smarter Basemenu::drawItem() code added, i noticed alot of flicker when
286     moving menus, because of code constantly redrawing menus items... this
287     has been significatly modified and sped up quite a bit
288   - fixed a bug where iconified windows wouldn't remove themselves from the
289     icon menu when they unmapped/closed themselves (which would result in a
290     crash if you selected this dead item)
291   - fixed a potential crash in Workspace::removeWindow() that had relation
292     to focus last window on workspace... one person experience gibberish being
293     displayed, another experienced a crash
294   - fixed a flicker problem when changing focus between windows rapidly
295     (the toolbar's window label was getting redrawn twice per focus, not
296     optimum behavior)
297   - fixed the infamous bsetroot segfault... this was quite a feat... took 3
298     people in excess of 8 hours to find... and it was a simple one line change
301 Changes from 0.51.3.1 to 0.60.1: (note:  0.60.1 is 0.60.0 non-alpha)
302   - changed licensing for Blackbox from GNU GPL to more open BSD license
303     see the file LICENSE
304   - removed alot of empty files that did nothing but passify automake/autoconf
305     Blackbox now passes --foreign to automake to lessen the requirements for
306     files like NEWS,AUTHORS,COPYING,README,etc.
307   - new configure options:
308         --enable-ordered-pseudo this enables a new algorithm for dithering
309                                 on pseudocolor (8 bit) displays... a noticable
310                                 pattern is visible when using this.  you may or
311                                 may not like it... just something different
312                                 if you want it, but is turned off by default.
314         --enable-debug          turn on verbose debugging output... this
315                                 isn't very complete or really very helpful...
316                                 right now it just describes memory usage and
317                                 tracks a few X event handlers... this is turned
318                                 off by default
320         --enable-nls            turn on natural language support... this option
321                                 will turn on the use of catgets(3) to read
322                                 native language text from any of the supported
323                                 locales (see the nls/ directory for current
324                                 translations)...
326                                 This option also turns on the use of XFontSets,
327                                 which allows the display of multibyte
328                                 characters, like Japanese or Korean.
329                                 This option is turned on by default.
331         --enable-timed-cache    turn on/off the new timed pixmap cache... this
332                                 differs from the old pixmap cache in that
333                                 instead of releasing unused pixmaps
334                                 immediately, it waits for <X> minutes, where
335                                 <X> is set with session.cacheLife in your
336                                 ~/.blackboxrc...  this option is turned on
337                                 by default.
339   - changed the default menu to include a listing of workspaces (and their
340     window lists) and the new configuration menu (see below)
341   - included new default styles, contributed by regulars on
342     irc.openproject.net's #blackbox
343   - generated default "translation" catalog for the C/POSIX locale... the
344     same catalog is used for English (en_US for now, will add others
345     as necessary)
346   - included translation for Spanish (es_ES) and Brazilian
347     Portuguese (pt_BR)... if you are interested in doing a
348     translation, email me at blackbox@alug.org
349   - properties and hints added for communication with bbpager and bbkeys, the
350     two most common "blackbox addons"
351   - KDE 1.x support has been completely removed, pending approval of the new
352     window manager specification to be used by KDE2 and GNOME
353   - a (broken!) base for the new window manager spec was put in place, but
354     using --enable-newspec will result in code that will not compile
355   - added a timer class to handle internal timeouts without using
356     getitimer/setitimer/SIGARLM... this will enable other things to be done,
357     as any number of timers with any timeout can be used
358   - Blackbox will search for the highest depth supported by each visual on
359     each screen... basically this means that blackbox will try to use
360     TrueColor if a TrueColor visual exists (but it's not the default visual)
361   - menu hilite changed from being just a color to being a texture and new
362     window decoration layout... as a result the style file syntax has changed,
363     old styles for 0.5x.x will not work.  See the included styles for examples,
364     and browse by http://bb.themes.org/
365   - added support for enabled/disabled and selectable menuitems, this is for
366     use in the configmenu mostly (but is used in the windowmenu)
367   - added the Configmenu, which is insertable into your menu by using:
369         [config] (Catchy Label)
371     changes made in the configmenu take effect immediately, and are saved in
372     your ~/.blackbxrc... current tunable settings:
374         Focus model
375         Window placement
376         Image dithering
377         Opaque window moving
378         Full Maximization
379         Focus New Windows
380         Focus Last Window on Workspace
382     the window placement and focus model options will be discussed below
383   - added texture type "ParentRelative" which causes the decoration to display
384     the contents of it's parent... this is a sort of pseudo-transparent option
385     and doesn't work for all decorations... see the included style named
386     "Operation" for an example of ParentRelative
387   - added support for solid interlacing... for example:
389         toolbar:                raised interlaced solid bevel1
390         toolbar.color:          grey
391         toolbar.colorTo:        darkgrey
393     will cause the toolbar base to be draw with solid lines, one line grey,
394     the next darkgrey, the next grey, the next darkgrey, ...
395   - changed dithering algorithm for TrueColor displays from Floyd-Steinberg to
396     an ordered dither... dithering at 8bpp (Pseudocolor) can be either FS or
397     ordered, but must be selected at compile time...
399     NOTE:  when using ordered pseudocolor (8bpp) dithering, your
400     session.colorsPerChannel ***MUST*** be 4, otherwise your display will
401     not display *any* correct colors
402   - fixed TrueColor rendering to do aligned writes (suppresses warnings on
403     Alpha Linux machines)
404   - added support for GrayScale/StaticGray displays (completely untested)
405   - made linked lists smarter, they can now have as many iterators assigned to
406     them as you want... no more FATAL errors
407   - added the Netizen class, which is a client that has 
408     _BLACKBOX_STRUCTURE_MESSAGES listed in their WM_PROTOCOLS... these clients
409     get notified of window add, remove, focus, shade, iconify, maximize,
410     resize, etc.
412     the two most common Netizens are bbpager and bbkeys
413   - when loading an incomplete style, blackbox now uses default colors to
414     draw decorations (instead of the annoying "see-through" effect)
415   - added menu tag [config]... which inserts the Configmenu into your rootmenu
416   - made [include] handling smarter, it will only read regular files (it
417     won't read a directory in case you ever accidentally put one there)
418   - the slit and toolbar menus now include a placement option, which will place
419     them in various positions on the screen
420   - included a slit menu option to choose it's direction (horizontal or
421     vertical)
422   - added options to the slit and toolbar menus to have them always stacked
423     above other windows
424   - right clicking on the workspace label no longer initiates a workspacename
425     edit... right clicking anywhere on the toolbar brings up the toolbar menu,
426     which has an entry that lets you change the workspace name
427   - iconified windows no longer show up in the window list for the current
428     workspace... just in the icon submenu
429   - ClickToFocus now works like one would think, clicking anywhere in a window
430     will focus it
431   - overall... this version of blackbox has and does alot more than previously
432     just take it for a test drive and see how well you like it