diff --git a/docs/JuceAPIDocs.zip b/docs/JuceAPIDocs.zip index ff6bb70f74..7282fc1d3a 100644 Binary files a/docs/JuceAPIDocs.zip and b/docs/JuceAPIDocs.zip differ diff --git a/extras/audio plugins/demo/src/JucePluginCharacteristics.h b/extras/audio plugins/demo/src/JucePluginCharacteristics.h index 1086291603..4021234d19 100644 --- a/extras/audio plugins/demo/src/JucePluginCharacteristics.h +++ b/extras/audio plugins/demo/src/JucePluginCharacteristics.h @@ -250,6 +250,18 @@ */ #define JucePlugin_CFBundleIdentifier "com.rawmaterialsoftware.JuceDemo" +/** In an AU, some hosts take the name of Cocoa class that creates the UI and + actually show it to the user in a list (why??)... Anyway, this macro lets you + provide a sensible name for that class to make it clear what plugin it refers to. + Obviously this has to be a valid obj-C class name. + + Just to make things a little more complicated, this name must also be unique to this + precise version of your software. Otherwise, if the host loads two plugins that use the + same class name, the obj-C linker will almost certainly connect the wrong modules together + and cause total meltdown. +*/ +#define JucePlugin_AUCocoaViewClassName JuceDemoAU_V1 + //============================================================================== /* RTAS settings */ diff --git a/extras/audio plugins/wrapper/AU/juce_AU_Wrapper.mm b/extras/audio plugins/wrapper/AU/juce_AU_Wrapper.mm index 950d1ac1c7..c33e746bc5 100644 --- a/extras/audio plugins/wrapper/AU/juce_AU_Wrapper.mm +++ b/extras/audio plugins/wrapper/AU/juce_AU_Wrapper.mm @@ -71,8 +71,8 @@ extern AudioProcessor* JUCE_CALLTYPE createPluginFilter(); #define appendMacro2(a, b, c, d) appendMacro1(a, b, c, d) #define MakeObjCClassName(rootName) appendMacro2 (rootName, JUCE_MAJOR_VERSION, JUCE_MINOR_VERSION, JucePlugin_AUExportPrefix) -#define JuceUICreationClass MakeObjCClassName(JuceUICreationClass) -#define JuceUIViewClass MakeObjCClassName(JuceUIViewClass) +#define JuceUICreationClass JucePlugin_AUCocoaViewClassName +#define JuceUIViewClass MakeObjCClassName(JuceUIViewClass) class JuceAU; class EditorCompHolder; diff --git a/extras/audio plugins/wrapper/juce_IncludeCharacteristics.h b/extras/audio plugins/wrapper/juce_IncludeCharacteristics.h index 24736047b1..d500a5d666 100644 --- a/extras/audio plugins/wrapper/juce_IncludeCharacteristics.h +++ b/extras/audio plugins/wrapper/juce_IncludeCharacteristics.h @@ -102,4 +102,9 @@ #error "You need to define the JucePlugin_WinBag_path value in your JucePluginCharacteristics.h file!" #endif +#if JucePlugin_Build_AU && ! defined (JucePlugin_AUCocoaViewClassName) + #error "You need to define the JucePlugin_AUCocoaViewClassName value in your JucePluginCharacteristics.h file!" +#endif + + #endif // __JUCE_INCLUDECHARACTERISTICS_JUCEHEADER__ diff --git a/extras/juce demo/src/ApplicationStartup.cpp b/extras/juce demo/src/ApplicationStartup.cpp index a3be1b1b8c..52134eef29 100644 --- a/extras/juce demo/src/ApplicationStartup.cpp +++ b/extras/juce demo/src/ApplicationStartup.cpp @@ -102,7 +102,7 @@ public: bool moreThanOneInstanceAllowed() { - return false; + return true; } void anotherInstanceStarted (const String& commandLine) diff --git a/juce_Config.h b/juce_Config.h index 5a82791550..c598481323 100644 --- a/juce_Config.h +++ b/juce_Config.h @@ -272,5 +272,15 @@ #endif //============================================================================= +// If only building the core classes, we can explicitly turn off some features to avoid including them: +#if JUCE_ONLY_BUILD_CORE_LIBRARY + #define JUCE_QUICKTIME 0 + #define JUCE_OPENGL 0 + #define JUCE_USE_CDBURNER 0 + #define JUCE_USE_CDREADER 0 + #define JUCE_WEB_BROWSER 0 + #define JUCE_PLUGINHOST_AU 0 + #define JUCE_PLUGINHOST_VST 0 +#endif #endif diff --git a/src/gui/components/buttons/juce_Button.h b/src/gui/components/buttons/juce_Button.h index a5f7aee05a..f31a13949f 100644 --- a/src/gui/components/buttons/juce_Button.h +++ b/src/gui/components/buttons/juce_Button.h @@ -235,9 +235,7 @@ public: The button registers itself with its top-level parent component for keypresses. Note that a different way of linking buttons to keypresses is by using the - setKeyPressToTrigger() method to invoke a command - the difference being that - setting a shortcut allows the button to be temporarily linked to a keypress - only while it's on-screen. + setCommandToTrigger() method to invoke a command. @see clearShortcuts */ diff --git a/src/gui/components/lookandfeel/juce_LookAndFeel.cpp b/src/gui/components/lookandfeel/juce_LookAndFeel.cpp index dc2bd8d791..ed3566109a 100644 --- a/src/gui/components/lookandfeel/juce_LookAndFeel.cpp +++ b/src/gui/components/lookandfeel/juce_LookAndFeel.cpp @@ -2474,7 +2474,7 @@ void LookAndFeel::drawPropertyPanelSectionHeader (Graphics& g, const String& nam const int buttonSize = (height * 3) / 4; const int buttonIndent = (height - buttonSize) / 2; - drawTreeviewPlusMinusBox (g, buttonIndent, buttonIndent, buttonSize, buttonSize, ! isOpen); + drawTreeviewPlusMinusBox (g, buttonIndent, buttonIndent, buttonSize, buttonSize, ! isOpen, false); const int textX = buttonIndent * 2 + buttonSize + 2; diff --git a/src/gui/components/properties/juce_PropertyComponent.h b/src/gui/components/properties/juce_PropertyComponent.h index e794b7339d..9cdeaff479 100644 --- a/src/gui/components/properties/juce_PropertyComponent.h +++ b/src/gui/components/properties/juce_PropertyComponent.h @@ -29,7 +29,7 @@ class EditableProperty; #include "../juce_Component.h" - +#include "../mouse/juce_TooltipClient.h" //============================================================================== /** @@ -47,7 +47,8 @@ class EditableProperty; @see PropertyPanel, TextPropertyComponent, SliderPropertyComponent, ChoicePropertyComponent, ButtonPropertyComponent, BooleanPropertyComponent */ -class JUCE_API PropertyComponent : public Component +class JUCE_API PropertyComponent : public Component, + public SettableTooltipClient { public: //============================================================================== diff --git a/src/gui/components/special/juce_QuickTimeMovieComponent.h b/src/gui/components/special/juce_QuickTimeMovieComponent.h index d4922864e8..10a3cf5b9c 100644 --- a/src/gui/components/special/juce_QuickTimeMovieComponent.h +++ b/src/gui/components/special/juce_QuickTimeMovieComponent.h @@ -88,7 +88,7 @@ public: component isn't visible can cause problems, because QuickTime needs a window handle to do its stuff. - @param movieFile the .mov file to open + @param movieURL the .mov file to open @param isControllerVisible whether to show a controller bar at the bottom @returns true if the movie opens successfully */ diff --git a/src/native/mac/juce_mac_CameraDevice.mm b/src/native/mac/juce_mac_CameraDevice.mm index 628448ff44..c926d6e7e6 100644 --- a/src/native/mac/juce_mac_CameraDevice.mm +++ b/src/native/mac/juce_mac_CameraDevice.mm @@ -265,7 +265,7 @@ END_JUCE_NAMESPACE fromConnection: (QTCaptureConnection*) connection { if (firstRecordedTime == 0) - firstRecordedTime = new Time (Time::getCurrentTime()); + firstRecordedTime = new Time (Time::getCurrentTime() - RelativeTime::milliseconds (50)); } @end