Release 1.14

Ok, just got another release out - a mixture of stuff this time, with a few new goodies, a bit of eye-candy tweaking and some bugfixes. Here’s the list:

  • tweaks to ComboBox to make it look and work better, and also to give control over the text justification
  • buttons and menu items can now be linked to a command in a KeyPressMappingSet, to trigger commands automatically
  • change to Buttons - rather than using an ActionListener, buttons now use a special ButtonListener to respond to callbacks. This allows for up/down messages as well as clicks, and provides a pointer to the button that triggered the event. You might have to alter a few of your classes to deal with this - sorry! but it’s not too difficult to change and it does make your code neater and more readable.
  • Rewrote BubbleComponent to now be a base class for drawing arbitrary graphics inside a speech bubble shape. Created BubbleMessageComponent as a subclass for showing a text message in a bubble (like the old BubbleComponent used to do).
  • Sliders now have an optional pop-up bubble that shows you their current value while they’re being dragged. This is handy for sliders which don’t have a text box. See Slider::setPopupDisplayEnabled()
  • Sliders can now have a suffix which they append to the text string that they display, to make it easy to show units without having to write a subclass
  • cosmetic improvements to combo-boxes, menus, textboxes, sliders, and a few other bits + pieces
  • mouse events now have a click counter to detect triple and quadruple clicks, and the TextEditor uses these to select the current paragraph or entire document
  • added methods to the Desktop class to allow “global” MouseListeners to be registered, that will be told about all mouse events to all components
  • new classes : MenuBarComponent and MenuBarModel for doing menu bars (obviously). This is a lightweight menu bar component, not yet an OS-specific menubar, which I’ll eventually implement on the Mac, but the same model will apply to both.
  • A few 64-bit compatibility tweaks, and the MessageCallbackFunction definition (used in MessageManager::callFunctionOnMessageThread()) now returns a void* instead of an int. This shouldn’t affect many people.
  • new class: FileBasedDocument - writing all the load/save/save-as logic for documents is pretty tedious, so this handy base-class takes care of all that stuff for you, doing all the file dialog boxes and asking whether to overwrite existing files, etc.
  • on Windows, you can now build juce as a DLL, and your app can link to the DLL version by simply defining the JUCE_DLL macro before including the juce headers

Great googly moogly!

Button stuff is good. Got to go and repair about a million buttons now but!

All for the good tho. And there goes my PushAndHoldButton class I imagine!!