upgrade to JUCE 5.4.3. Remove (probably) unused JUCE modules. Remove VST2 target (it's been end-of-life'd by Steinberg and by JUCE)

This commit is contained in:
Alex Birch
2019-06-22 20:41:38 +01:00
parent d22c2cd4fa
commit 9ee566b251
1140 changed files with 67534 additions and 105952 deletions

View File

@ -108,7 +108,7 @@ void AlertWindow::addButton (const String& name,
b->setWantsKeyboardFocus (true);
b->setMouseClickGrabsKeyboardFocus (false);
b->setCommandToTrigger (0, returnValue, false);
b->setCommandToTrigger (nullptr, returnValue, false);
b->addShortcut (shortcutKey1);
b->addShortcut (shortcutKey2);
b->onClick = [this, b] { exitAlert (b); };

View File

@ -76,7 +76,7 @@ public:
Component* associatedComponent = nullptr);
/** Destroys the AlertWindow */
~AlertWindow();
~AlertWindow() override;
//==============================================================================
/** Returns the type of alert icon that was specified when the window
@ -423,7 +423,7 @@ public:
*/
struct JUCE_API LookAndFeelMethods
{
virtual ~LookAndFeelMethods() {}
virtual ~LookAndFeelMethods() = default;
virtual AlertWindow* createAlertWindow (const String& title, const String& message,
const String& button1,

View File

@ -42,8 +42,7 @@ CallOutBox::CallOutBox (Component& c, Rectangle<int> area, Component* const pare
{
setAlwaysOnTop (juce_areThereAnyAlwaysOnTopWindows());
updatePosition (area, Desktop::getInstance().getDisplays()
.getDisplayContaining (area.getCentre()).userArea);
updatePosition (area, Desktop::getInstance().getDisplays().findDisplayForRect (area).userArea);
addToDesktop (ComponentPeer::windowIsTemporary);

View File

@ -79,10 +79,10 @@ public:
Component* parentComponent);
/** Destructor. */
~CallOutBox();
~CallOutBox() override;
//==============================================================================
/** Changes the length of the arrow. */
/** Changes the base width of the arrow. */
void setArrowSize (float newSize);
/** Updates the position and size of the box.
@ -141,7 +141,7 @@ public:
/** This abstract base class is implemented by LookAndFeel classes. */
struct JUCE_API LookAndFeelMethods
{
virtual ~LookAndFeelMethods() {}
virtual ~LookAndFeelMethods() = default;
virtual void drawCallOutBoxBackground (CallOutBox&, Graphics&, const Path&, Image&) = 0;
virtual int getCallOutBoxBorderSize (const CallOutBox&) = 0;

View File

@ -109,11 +109,15 @@ void ComponentPeer::handlePaint (LowLevelGraphicsContext& contextToPaintTo)
g.addTransform (component.getTransform());
auto peerBounds = getBounds();
auto componentBounds = component.getLocalBounds();
if (peerBounds.getWidth() != component.getWidth() || peerBounds.getHeight() != component.getHeight())
if (component.isTransformed())
componentBounds = componentBounds.transformedBy (component.getTransform());
if (peerBounds.getWidth() != componentBounds.getWidth() || peerBounds.getHeight() != componentBounds.getHeight())
// Tweak the scaling so that the component's integer size exactly aligns with the peer's scaled size
g.addTransform (AffineTransform::scale (peerBounds.getWidth() / (float) component.getWidth(),
peerBounds.getHeight() / (float) component.getHeight()));
g.addTransform (AffineTransform::scale (peerBounds.getWidth() / (float) componentBounds.getWidth(),
peerBounds.getHeight() / (float) componentBounds.getHeight()));
#if JUCE_ENABLE_REPAINT_DEBUGGING
#ifdef JUCE_IS_REPAINT_DEBUGGING_ACTIVE

View File

@ -72,7 +72,7 @@ public:
windowIgnoresKeyPresses = (1 << 10), /**< Tells the window not to catch any keypresses. This can
be used for things like plugin windows, to stop them interfering
with the host's shortcut keys */
windowIsSemiTransparent = (1 << 31) /**< Not intended for public use - makes a window transparent. */
windowIsSemiTransparent = (1 << 30) /**< Not intended for public use - makes a window transparent. */
};
@ -377,6 +377,36 @@ public:
*/
static ModifierKeys getCurrentModifiersRealtime() noexcept;
//==============================================================================
/** Used to receive callbacks when the OS scale factor of this ComponentPeer changes.
This is used internally by some native JUCE windows on Windows and Linux and you
shouldn't need to worry about it in your own code unless you are dealing directly
with native windows.
*/
struct JUCE_API ScaleFactorListener
{
/** Destructor. */
virtual ~ScaleFactorListener() = default;
/** Called when the scale factor changes. */
virtual void nativeScaleFactorChanged (double newScaleFactor) = 0;
};
/** Adds a scale factor listener. */
void addScaleFactorListener (ScaleFactorListener* listenerToAdd) { scaleFactorListeners.add (listenerToAdd); }
/** Removes a scale factor listener. */
void removeScaleFactorListener (ScaleFactorListener* listenerToRemove) { scaleFactorListeners.remove (listenerToRemove); }
//==============================================================================
/** On Windows and Linux this will return the OS scaling factor currently being applied
to the native window. This is used to convert between physical and logical pixels
at the OS API level and you shouldn't need to use it in your own code unless you
are dealing directly with the native window.
*/
virtual double getPlatformScaleFactor() const noexcept { return 1.0; }
protected:
//==============================================================================
Component& component;
@ -384,6 +414,7 @@ protected:
Rectangle<int> lastNonFullscreenBounds;
ComponentBoundsConstrainer* constrainer = nullptr;
static std::function<ModifierKeys()> getNativeRealtimeModifiers;
ListenerList<ScaleFactorListener> scaleFactorListeners;
private:
//==============================================================================

View File

@ -72,7 +72,7 @@ public:
/** Destructor.
If a content component has been set with setContentOwned(), it will be deleted.
*/
~DialogWindow();
~DialogWindow() override;
//==============================================================================
/** This class defines a collection of settings to be used to open a DialogWindow.
@ -153,7 +153,7 @@ public:
//==============================================================================
/** Easy way of quickly showing a dialog box containing a given component.
Note: this method has been superceded by the DialogWindow::LaunchOptions structure,
Note: This method has been superceded by the DialogWindow::LaunchOptions structure,
which does the same job with some extra flexibility. The showDialog method is here
for backwards compatibility, but please use DialogWindow::LaunchOptions in new code.
@ -199,7 +199,7 @@ public:
#if JUCE_MODAL_LOOPS_PERMITTED || DOXYGEN
/** Easy way of quickly showing a dialog box containing a given component.
Note: this method has been superceded by the DialogWindow::LaunchOptions structure,
Note: This method has been superceded by the DialogWindow::LaunchOptions structure,
which does the same job with some extra flexibility. The showDialog method is here
for backwards compatibility, but please use DialogWindow::LaunchOptions in new code.

View File

@ -212,7 +212,7 @@ void DocumentWindow::paint (Graphics& g)
titleBarArea.getHeight(),
titleSpaceX1,
jmax (1, titleSpaceX2 - titleSpaceX1),
titleBarIcon.isValid() ? &titleBarIcon : 0,
titleBarIcon.isValid() ? &titleBarIcon : nullptr,
! drawTitleTextCentred);
}

View File

@ -95,7 +95,7 @@ public:
/** Destructor.
If a content component has been set with setContentOwned(), it will be deleted.
*/
~DocumentWindow();
~DocumentWindow() override;
//==============================================================================
/** Changes the component's name.
@ -232,7 +232,7 @@ public:
*/
struct JUCE_API LookAndFeelMethods
{
virtual ~LookAndFeelMethods() {}
virtual ~LookAndFeelMethods() = default;
virtual void drawDocumentWindowTitleBar (DocumentWindow&,
Graphics&, int w, int h,
@ -286,7 +286,6 @@ private:
MenuBarModel* menuBarModel = nullptr;
class ButtonListenerProxy;
friend struct ContainerDeletePolicy<ButtonListenerProxy>;
std::unique_ptr<ButtonListenerProxy> buttonListener;
void repaintTitleBar();

View File

@ -565,7 +565,7 @@ bool ResizableWindow::restoreWindowStateFromString (const String& s)
if (onScreenArea.getWidth() * onScreenArea.getHeight() < 32 * 32)
{
auto screen = desktop.getDisplays().getDisplayContaining (newPos.getCentre()).userArea;
auto screen = desktop.getDisplays().findDisplayForRect (newPos).userArea;
newPos.setSize (jmin (newPos.getWidth(), screen.getWidth()),
jmin (newPos.getHeight(), screen.getHeight()));

View File

@ -79,7 +79,7 @@ public:
/** Destructor.
If a content component has been set with setContentOwned(), it will be deleted.
*/
~ResizableWindow();
~ResizableWindow() override;
//==============================================================================
/** Returns the colour currently being used for the window's background.
@ -326,7 +326,7 @@ public:
*/
struct JUCE_API LookAndFeelMethods
{
virtual ~LookAndFeelMethods() {}
virtual ~LookAndFeelMethods() = default;
//==============================================================================
virtual void drawCornerResizer (Graphics&, int w, int h, bool isMouseOver, bool isMouseDragging) = 0;

View File

@ -59,7 +59,7 @@ ThreadWithProgressWindow::~ThreadWithProgressWindow()
void ThreadWithProgressWindow::launchThread (int priority)
{
jassert (MessageManager::getInstance()->isThisTheMessageThread());
JUCE_ASSERT_MESSAGE_THREAD
startThread (priority);
startTimer (100);
@ -87,7 +87,7 @@ void ThreadWithProgressWindow::timerCallback()
{
bool threadStillRunning = isThreadRunning();
if (! (threadStillRunning && alertWindow->isCurrentlyModal()))
if (! (threadStillRunning && alertWindow->isCurrentlyModal (false)))
{
stopTimer();
stopThread (timeOutMsWhenCancelling);

View File

@ -111,7 +111,7 @@ public:
Component* componentToCentreAround = nullptr);
/** Destructor. */
~ThreadWithProgressWindow();
~ThreadWithProgressWindow() override;
//==============================================================================
#if JUCE_MODAL_LOOPS_PERMITTED

View File

@ -92,8 +92,7 @@ void TooltipWindow::displayTip (Point<int> screenPos, const String& tip)
}
else
{
updatePosition (tip, screenPos, Desktop::getInstance().getDisplays()
.getDisplayContaining (screenPos).userArea);
updatePosition (tip, screenPos, Desktop::getInstance().getDisplays().findDisplayForPoint (screenPos).userArea);
addToDesktop (ComponentPeer::windowHasDropShadow
| ComponentPeer::windowIsTemporary
@ -104,12 +103,15 @@ void TooltipWindow::displayTip (Point<int> screenPos, const String& tip)
#if JUCE_DEBUG
activeTooltipWindows.addIfNotAlreadyThere (this);
auto* parent = getParentComponent();
for (auto* w : activeTooltipWindows)
{
if (w != this && w->tipShowing == tipShowing)
if (w != this && w->tipShowing == tipShowing && w->getParentComponent() == parent)
{
// Looks like you have more than one TooltipWindow showing the same tip..
// Be careful not to create more than one instance of this class!
// Be careful not to create more than one instance of this class with the
// same parent component!
jassertfalse;
}
}
@ -153,6 +155,7 @@ void TooltipWindow::timerCallback()
auto now = Time::getApproximateMillisecondCounter();
auto* newComp = mouseSource.isTouch() ? nullptr : mouseSource.getComponentUnderMouse();
auto newTip = newComp != nullptr ? getTipFor (*newComp) : String();
bool tipChanged = (newTip != lastTipUnderMouse || newComp != lastComponentUnderMouse);
lastComponentUnderMouse = newComp;

View File

@ -32,11 +32,15 @@ namespace juce
A window that displays a pop-up tooltip when the mouse hovers over another component.
To enable tooltips in your app, just create a single instance of a TooltipWindow
object. Note that if you instantiate more than one instance of this class, you'll
end up with multiple tooltips being shown! This is a common problem when compiling
audio plug-ins with JUCE: depending on the way you instantiate TooltipWindow,
you may end up with a TooltipWindow for each plug-in instance. To avoid this use a
SharedResourcePointer to instantiate the TooltipWindow only once.
object. Note that if you instantiate more than one instance of this class with the
same parentComponent (even if both TooltipWindow's parentComponent is nil), you'll
end up with multiple tooltips being shown! To avoid this use a SharedResourcePointer
to instantiate the TooltipWindow only once.
For audio plug-ins (which should not be opening native windows) it is better
to add a TooltipWindow as a member variable to the editor and ensure that the
editor is the parentComponent of your TooltipWindow. This will ensure that your
TooltipWindow is scaled according to your editor and the DAWs scaling setting.
The TooltipWindow object will then stay invisible, waiting until the mouse
hovers for the specified length of time - it will then see if it's currently
@ -61,7 +65,7 @@ public:
To change the style of tooltips, see the LookAndFeel class for its tooltip
methods.
@param parentComponent if set to 0, the TooltipWindow will appear on the desktop,
@param parentComponent if set to nullptr, the TooltipWindow will appear on the desktop,
otherwise the tooltip will be added to the given parent
component.
@param millisecondsBeforeTipAppears the time for which the mouse has to stay still
@ -73,7 +77,7 @@ public:
int millisecondsBeforeTipAppears = 700);
/** Destructor. */
~TooltipWindow();
~TooltipWindow() override;
//==============================================================================
/** Changes the time before the tip appears.
@ -113,7 +117,7 @@ public:
*/
struct JUCE_API LookAndFeelMethods
{
virtual ~LookAndFeelMethods() {}
virtual ~LookAndFeelMethods() = default;
/** returns the bounds for a tooltip at the given screen coordinate, constrained within the given desktop area. */
virtual Rectangle<int> getTooltipBounds (const String& tipText, Point<int> screenPos, Rectangle<int> parentArea) = 0;

View File

@ -32,8 +32,8 @@ class TopLevelWindowManager : private Timer,
private DeletedAtShutdown
{
public:
TopLevelWindowManager() {}
~TopLevelWindowManager() { clearSingletonInstance(); }
TopLevelWindowManager() {}
~TopLevelWindowManager() override { clearSingletonInstance(); }
JUCE_DECLARE_SINGLETON_SINGLETHREADED_MINIMAL (TopLevelWindowManager)

View File

@ -64,7 +64,7 @@ public:
TopLevelWindow (const String& name, bool addToDesktop);
/** Destructor. */
~TopLevelWindow();
~TopLevelWindow() override;
//==============================================================================
/** True if this is currently the TopLevelWindow that is actively being used.