I've made some rather major changes to KToolBar and related classes
author Kurt Granroth
committer Kurt Granroth
commit 1c6cd54bea631cc81980675bef6268e4c07f126d
tree cb47acbb0041121b17ef975f2d77bc61bd957f28
parent 15839f50df16e2bd50b71ff9699de8d62f081375
I've made some rather major changes to KToolBar and related classes
that don't change the API very much but do change how the toolbar
behave somewhat.

The core conceptual change is that toolbar buttons now have a LOT more
control over their own size. This makes sense. The buttons know how
big their pixmaps are and how big their text is.. it's silly to have
the toolbar (which knows *neither* size) to dictate the proper size.

The second conceptual change came after studying other toolbars
(netscape, windows, macos) and I noticed two things: all buttons are
the same size and most buttons are square (equal width and height).
Those that aren't square have a wider width then height. So now our
toolbar does that also. HOWEVER, I'm sure that that isn't the
greatest idea for all toolbars, so right now, it only applies to the
"main" toolbar (those that use honor_mode)

The third conceptual change is related to button states. There are
now three states -- disabled, default, and active. The default state
is the icon either desaturated or greyscale... muted somehow. The
active state (when the mouse is over the icon) is the normal look of
the icon. Disabled state is obvious. This is also inspired by other
mainstream toolbars (and discussions with tackat)

The actual desaturation effect is commented out right now.
Unfortunately, there are some nasty Qt and png interaction errors that
produce very strange results with our toolbar buttons.

You'll notice that TONS of code is touched in the toolbar code.. much
more then is absolutely necessary. This was because while I was
making the changes, I found it hard to actually find where to look for
things. So I cleaned things up.

A list of the major changes:
o Removed item_size parameter from toolbar constructor
o Renamed 'beToggle' to 'setToggle' (more consistant)
o Completely rearranged KToolBarButton code
o Removed references to menus in KToolBarButton
o Added setIcon() to KToolBarButton, allowing it to load its own icon.
It will default to Medium for "normal" toolbars and whatever the
global setting is for "main" toolbars
o Added methods to allow name-based icons to be used in KToolBar

A list of the not-so-major changes
o Added (and used extensively in some cases) private data classes for
all toolbar classes
o Cleaned up enums in KToolBarItem
o Added Separator item to KToolBarItem
o Added itemType() function to KToolBarItem (not sure why it was never
there before)
o We don't want our item list to be publicly available in KToolBar

And one tiny bug fix
o Separators work correctly after flattening and unflattening the

And probably a bit more that I've forgotten.

svn path=/trunk/kdelibs/; revision=42288