|
@@ -0,0 +1,467 @@ |
|
|
|
|
|
diff --git a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp |
|
|
|
|
|
index 7642040bd..ed02448b8 100644 |
|
|
|
|
|
--- a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp |
|
|
|
|
|
+++ b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp |
|
|
|
|
|
@@ -842,6 +842,26 @@ namespace WavFileHelpers |
|
|
|
|
|
return out.getMemoryBlock();
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
+
|
|
|
|
|
|
+ //==============================================================================
|
|
|
|
|
|
+ struct Clm_Chunk
|
|
|
|
|
|
+ {
|
|
|
|
|
|
+ static MemoryBlock createFrom (const StringPairArray& values)
|
|
|
|
|
|
+ {
|
|
|
|
|
|
+ MemoryOutputStream out;
|
|
|
|
|
|
+ auto s = values["clm "];
|
|
|
|
|
|
+
|
|
|
|
|
|
+ if (s.isNotEmpty())
|
|
|
|
|
|
+ {
|
|
|
|
|
|
+ out.writeString (s);
|
|
|
|
|
|
+
|
|
|
|
|
|
+ if ((out.getDataSize() & 1) != 0)
|
|
|
|
|
|
+ out.writeByte(0);
|
|
|
|
|
|
+ }
|
|
|
|
|
|
+
|
|
|
|
|
|
+ return out.getMemoryBlock();
|
|
|
|
|
|
+ }
|
|
|
|
|
|
+ };
|
|
|
|
|
|
|
|
|
|
|
|
//==============================================================================
|
|
|
|
|
|
namespace AXMLChunk
|
|
|
|
|
|
@@ -1321,6 +1341,7 @@ public: |
|
|
|
|
|
listInfoChunk = ListInfoChunk::createFrom (metadataValues);
|
|
|
|
|
|
acidChunk = AcidChunk::createFrom (metadataValues);
|
|
|
|
|
|
trckChunk = TracktionChunk::createFrom (metadataValues);
|
|
|
|
|
|
+ clm_Chunk = Clm_Chunk::createFrom (metadataValues);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
headerPosition = out->getPosition();
|
|
|
|
|
|
@@ -1383,7 +1404,7 @@ public: |
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
- MemoryBlock tempBlock, bwavChunk, axmlChunk, smplChunk, instChunk, cueChunk, listChunk, listInfoChunk, acidChunk, trckChunk;
|
|
|
|
|
|
+ MemoryBlock tempBlock, bwavChunk, axmlChunk, smplChunk, instChunk, cueChunk, listChunk, listInfoChunk, acidChunk, trckChunk, clm_Chunk;
|
|
|
|
|
|
uint64 lengthInSamples = 0, bytesWritten = 0;
|
|
|
|
|
|
int64 headerPosition = 0;
|
|
|
|
|
|
bool writeFailed = false;
|
|
|
|
|
|
@@ -1421,6 +1442,7 @@ private: |
|
|
|
|
|
+ chunkSize (listInfoChunk)
|
|
|
|
|
|
+ chunkSize (acidChunk)
|
|
|
|
|
|
+ chunkSize (trckChunk)
|
|
|
|
|
|
+ + chunkSize (clm_Chunk)
|
|
|
|
|
|
+ (8 + 28)); // (ds64 chunk)
|
|
|
|
|
|
|
|
|
|
|
|
riffChunkSize += (riffChunkSize & 1);
|
|
|
|
|
|
@@ -1503,6 +1525,7 @@ private: |
|
|
|
|
|
writeChunk (listInfoChunk, chunkName ("LIST"));
|
|
|
|
|
|
writeChunk (acidChunk, chunkName ("acid"));
|
|
|
|
|
|
writeChunk (trckChunk, chunkName ("Trkn"));
|
|
|
|
|
|
+ writeChunk (clm_Chunk, chunkName ("clm "));
|
|
|
|
|
|
|
|
|
|
|
|
writeChunkHeader (chunkName ("data"), isRF64 ? -1 : (int) (lengthInSamples * bytesPerFrame));
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp |
|
|
|
|
|
index 7909098c9..19eb385fd 100644 |
|
|
|
|
|
--- a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp |
|
|
|
|
|
+++ b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp |
|
|
|
|
|
@@ -28,6 +28,9 @@ |
|
|
|
|
|
|
|
|
|
|
|
//==============================================================================
|
|
|
|
|
|
#if JucePlugin_Build_VST3 && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX)
|
|
|
|
|
|
+#if JUCE_LINUX^M
|
|
|
|
|
|
+ #include <arpa/inet.h>^M
|
|
|
|
|
|
+#endif^M
|
|
|
|
|
|
|
|
|
|
|
|
#if JUCE_PLUGINHOST_VST3
|
|
|
|
|
|
#if JUCE_MAC
|
|
|
|
|
|
@@ -2618,6 +2621,9 @@ public: |
|
|
|
|
|
//==============================================================================
|
|
|
|
|
|
void processParameterChanges (Vst::IParameterChanges& paramChanges)
|
|
|
|
|
|
{
|
|
|
|
|
|
+ if (juceVST3EditController == nullptr)
|
|
|
|
|
|
+ return;
|
|
|
|
|
|
+
|
|
|
|
|
|
jassert (pluginInstance != nullptr);
|
|
|
|
|
|
|
|
|
|
|
|
auto numParamsChanged = paramChanges.getParameterCount();
|
|
|
|
|
|
diff --git a/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp b/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp |
|
|
|
|
|
index 50cae68ed..549d8edb8 100644 |
|
|
|
|
|
--- a/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp |
|
|
|
|
|
+++ b/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp |
|
|
|
|
|
@@ -393,6 +393,7 @@ public: |
|
|
|
|
|
AlertWindow::showMessageBoxAsync (AlertWindow::WarningIcon,
|
|
|
|
|
|
TRANS("Error when trying to open audio device!"),
|
|
|
|
|
|
error);
|
|
|
|
|
|
+ resized();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool showDeviceControlPanel()
|
|
|
|
|
|
@@ -1120,6 +1121,8 @@ void AudioDeviceSelectorComponent::updateMidiOutput() |
|
|
|
|
|
deviceManager.setDefaultMidiOutputDevice ({});
|
|
|
|
|
|
else
|
|
|
|
|
|
deviceManager.setDefaultMidiOutputDevice (currentMidiOutputs[selectedId - 1].identifier);
|
|
|
|
|
|
+
|
|
|
|
|
|
+ resized();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void AudioDeviceSelectorComponent::changeListenerCallback (ChangeBroadcaster*)
|
|
|
|
|
|
diff --git a/modules/juce_core/native/juce_curl_Network.cpp b/modules/juce_core/native/juce_curl_Network.cpp |
|
|
|
|
|
index 00d428350..dd3375ff7 100644 |
|
|
|
|
|
--- a/modules/juce_core/native/juce_curl_Network.cpp |
|
|
|
|
|
+++ b/modules/juce_core/native/juce_curl_Network.cpp |
|
|
|
|
|
@@ -332,6 +332,9 @@ public: |
|
|
|
|
|
// or 3) data is in the in buffer
|
|
|
|
|
|
while ((! finished) && curlBuffer.getSize() == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
+ if (Thread::currentThreadShouldExit())
|
|
|
|
|
|
+ return false;
|
|
|
|
|
|
+
|
|
|
|
|
|
{
|
|
|
|
|
|
const ScopedLock lock (cleanupLock);
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/modules/juce_dsp/native/juce_sse_SIMDNativeOps.h b/modules/juce_dsp/native/juce_sse_SIMDNativeOps.h |
|
|
|
|
|
index 7f64d433d..e9360e0de 100644 |
|
|
|
|
|
--- a/modules/juce_dsp/native/juce_sse_SIMDNativeOps.h |
|
|
|
|
|
+++ b/modules/juce_dsp/native/juce_sse_SIMDNativeOps.h |
|
|
|
|
|
@@ -74,6 +74,7 @@ struct SIMDNativeOps<float> |
|
|
|
|
|
static forcedinline __m128 JUCE_VECTOR_CALLTYPE add (__m128 a, __m128 b) noexcept { return _mm_add_ps (a, b); }
|
|
|
|
|
|
static forcedinline __m128 JUCE_VECTOR_CALLTYPE sub (__m128 a, __m128 b) noexcept { return _mm_sub_ps (a, b); }
|
|
|
|
|
|
static forcedinline __m128 JUCE_VECTOR_CALLTYPE mul (__m128 a, __m128 b) noexcept { return _mm_mul_ps (a, b); }
|
|
|
|
|
|
+ static forcedinline __m128 JUCE_VECTOR_CALLTYPE div (__m128 a, __m128 b) noexcept { return _mm_div_ps (a, b); }
|
|
|
|
|
|
static forcedinline __m128 JUCE_VECTOR_CALLTYPE bit_and (__m128 a, __m128 b) noexcept { return _mm_and_ps (a, b); }
|
|
|
|
|
|
static forcedinline __m128 JUCE_VECTOR_CALLTYPE bit_or (__m128 a, __m128 b) noexcept { return _mm_or_ps (a, b); }
|
|
|
|
|
|
static forcedinline __m128 JUCE_VECTOR_CALLTYPE bit_xor (__m128 a, __m128 b) noexcept { return _mm_xor_ps (a, b); }
|
|
|
|
|
|
@@ -142,6 +143,7 @@ struct SIMDNativeOps<double> |
|
|
|
|
|
static forcedinline __m128d JUCE_VECTOR_CALLTYPE add (__m128d a, __m128d b) noexcept { return _mm_add_pd (a, b); }
|
|
|
|
|
|
static forcedinline __m128d JUCE_VECTOR_CALLTYPE sub (__m128d a, __m128d b) noexcept { return _mm_sub_pd (a, b); }
|
|
|
|
|
|
static forcedinline __m128d JUCE_VECTOR_CALLTYPE mul (__m128d a, __m128d b) noexcept { return _mm_mul_pd (a, b); }
|
|
|
|
|
|
+ static forcedinline __m128d JUCE_VECTOR_CALLTYPE div (__m128d a, __m128d b) noexcept { return _mm_div_pd (a, b); }
|
|
|
|
|
|
static forcedinline __m128d JUCE_VECTOR_CALLTYPE bit_and (__m128d a, __m128d b) noexcept { return _mm_and_pd (a, b); }
|
|
|
|
|
|
static forcedinline __m128d JUCE_VECTOR_CALLTYPE bit_or (__m128d a, __m128d b) noexcept { return _mm_or_pd (a, b); }
|
|
|
|
|
|
static forcedinline __m128d JUCE_VECTOR_CALLTYPE bit_xor (__m128d a, __m128d b) noexcept { return _mm_xor_pd (a, b); }
|
|
|
|
|
|
diff --git a/modules/juce_events/native/juce_mac_MessageManager.mm b/modules/juce_events/native/juce_mac_MessageManager.mm |
|
|
|
|
|
index 7a0718868..9d83519ff 100644 |
|
|
|
|
|
--- a/modules/juce_events/native/juce_mac_MessageManager.mm |
|
|
|
|
|
+++ b/modules/juce_events/native/juce_mac_MessageManager.mm |
|
|
|
|
|
@@ -369,6 +369,7 @@ void MessageManager::runDispatchLoop() |
|
|
|
|
|
static void shutdownNSApp()
|
|
|
|
|
|
{
|
|
|
|
|
|
[NSApp stop: nil];
|
|
|
|
|
|
+ [NSEvent stopPeriodicEvents];
|
|
|
|
|
|
[NSEvent startPeriodicEventsAfterDelay: 0 withPeriod: 0.1];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/buttons/juce_Button.cpp b/modules/juce_gui_basics/buttons/juce_Button.cpp |
|
|
|
|
|
index 1df2d6e20..e5c243eda 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/buttons/juce_Button.cpp |
|
|
|
|
|
+++ b/modules/juce_gui_basics/buttons/juce_Button.cpp |
|
|
|
|
|
@@ -482,10 +482,7 @@ void Button::mouseDrag (const MouseEvent& e) |
|
|
|
|
|
|
|
|
|
|
|
bool Button::isMouseSourceOver (const MouseEvent& e)
|
|
|
|
|
|
{
|
|
|
|
|
|
- if (e.source.isTouch() || e.source.isPen())
|
|
|
|
|
|
- return getLocalBounds().toFloat().contains (e.position);
|
|
|
|
|
|
-
|
|
|
|
|
|
- return isMouseOver();
|
|
|
|
|
|
+ return getLocalBounds().toFloat().contains (e.position);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Button::focusGained (FocusChangeType)
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp b/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp |
|
|
|
|
|
index 314544638..f3b61e2c3 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp |
|
|
|
|
|
+++ b/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp |
|
|
|
|
|
@@ -76,9 +76,6 @@ void ShapeButton::setShape (const Path& newShape, |
|
|
|
|
|
shape = newShape;
|
|
|
|
|
|
maintainShapeProportions = maintainShapeProportions_;
|
|
|
|
|
|
|
|
|
|
|
|
- shadow.setShadowProperties (DropShadow (Colours::black.withAlpha (0.5f), 3, Point<int>()));
|
|
|
|
|
|
- setComponentEffect (hasShadow ? &shadow : nullptr);
|
|
|
|
|
|
-
|
|
|
|
|
|
if (resizeNowToFitThisShape)
|
|
|
|
|
|
{
|
|
|
|
|
|
auto newBounds = shape.getBounds();
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/buttons/juce_ShapeButton.h b/modules/juce_gui_basics/buttons/juce_ShapeButton.h |
|
|
|
|
|
index 6863b1cab..5f9cee9ee 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/buttons/juce_ShapeButton.h |
|
|
|
|
|
+++ b/modules/juce_gui_basics/buttons/juce_ShapeButton.h |
|
|
|
|
|
@@ -88,6 +88,8 @@ public: |
|
|
|
|
|
Colour overColourOn,
|
|
|
|
|
|
Colour downColourOn);
|
|
|
|
|
|
|
|
|
|
|
|
+ void setShadowColour (Colour shadow) { shadowColour = shadow; }
|
|
|
|
|
|
+
|
|
|
|
|
|
/** Set whether the button should use the 'on' set of colours when its toggle state is 'on'.
|
|
|
|
|
|
By default these will be the same as the normal colours but the setOnColours method can be
|
|
|
|
|
|
used to provide a different set of colours.
|
|
|
|
|
|
@@ -112,9 +114,8 @@ public: |
|
|
|
|
|
private:
|
|
|
|
|
|
//==============================================================================
|
|
|
|
|
|
Colour normalColour, overColour, downColour,
|
|
|
|
|
|
- normalColourOn, overColourOn, downColourOn, outlineColour;
|
|
|
|
|
|
+ normalColourOn, overColourOn, downColourOn, outlineColour, shadowColour;
|
|
|
|
|
|
bool useOnColours;
|
|
|
|
|
|
- DropShadowEffect shadow;
|
|
|
|
|
|
Path shape;
|
|
|
|
|
|
BorderSize<int> border;
|
|
|
|
|
|
bool maintainShapeProportions;
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/components/juce_Component.cpp b/modules/juce_gui_basics/components/juce_Component.cpp |
|
|
|
|
|
index fa8d3ccf5..b2d75c655 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/components/juce_Component.cpp |
|
|
|
|
|
+++ b/modules/juce_gui_basics/components/juce_Component.cpp |
|
|
|
|
|
@@ -3021,7 +3021,8 @@ void Component::modifierKeysChanged (const ModifierKeys& modifiers) |
|
|
|
|
|
|
|
|
|
|
|
void Component::internalModifierKeysChanged()
|
|
|
|
|
|
{
|
|
|
|
|
|
- sendFakeMouseMove();
|
|
|
|
|
|
+ auto mainMouse = Desktop::getInstance().getMainMouseSource();
|
|
|
|
|
|
+ mainMouse.triggerFakeMove();
|
|
|
|
|
|
modifierKeysChanged (ModifierKeys::currentModifiers);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/components/juce_Component.h b/modules/juce_gui_basics/components/juce_Component.h |
|
|
|
|
|
index 3add1db6b..ca84bc80e 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/components/juce_Component.h |
|
|
|
|
|
+++ b/modules/juce_gui_basics/components/juce_Component.h |
|
|
|
|
|
@@ -439,7 +439,7 @@ public: |
|
|
|
|
|
|
|
|
|
|
|
@see setBounds, ComponentListener::componentMovedOrResized
|
|
|
|
|
|
*/
|
|
|
|
|
|
- void setTopLeftPosition (Point<int> newTopLeftPosition);
|
|
|
|
|
|
+ virtual void setTopLeftPosition (Point<int> newTopLeftPosition);
|
|
|
|
|
|
|
|
|
|
|
|
/** Moves the component to a new position.
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp b/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp |
|
|
|
|
|
index 7c6b83fbf..a84cf5a91 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp |
|
|
|
|
|
+++ b/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp |
|
|
|
|
|
@@ -43,14 +43,9 @@ void CaretComponent::paint (Graphics& g) |
|
|
|
|
|
g.fillRect (getLocalBounds());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
-void CaretComponent::timerCallback()
|
|
|
|
|
|
-{
|
|
|
|
|
|
- setVisible (shouldBeShown() && ! isVisible());
|
|
|
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
|
|
void CaretComponent::setCaretPosition (const Rectangle<int>& characterArea)
|
|
|
|
|
|
{
|
|
|
|
|
|
- startTimer (380);
|
|
|
|
|
|
setVisible (shouldBeShown());
|
|
|
|
|
|
setBounds (characterArea.withWidth (2));
|
|
|
|
|
|
}
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/keyboard/juce_CaretComponent.h b/modules/juce_gui_basics/keyboard/juce_CaretComponent.h |
|
|
|
|
|
index a10b26c69..97894c075 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/keyboard/juce_CaretComponent.h |
|
|
|
|
|
+++ b/modules/juce_gui_basics/keyboard/juce_CaretComponent.h |
|
|
|
|
|
@@ -31,8 +31,7 @@ namespace juce |
|
|
|
|
|
|
|
|
|
|
|
@tags{GUI}
|
|
|
|
|
|
*/
|
|
|
|
|
|
-class JUCE_API CaretComponent : public Component,
|
|
|
|
|
|
- private Timer
|
|
|
|
|
|
+class JUCE_API CaretComponent : public Component
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
//==============================================================================
|
|
|
|
|
|
@@ -73,7 +72,6 @@ private: |
|
|
|
|
|
Component* owner;
|
|
|
|
|
|
|
|
|
|
|
|
bool shouldBeShown() const;
|
|
|
|
|
|
- void timerCallback() override;
|
|
|
|
|
|
|
|
|
|
|
|
JUCE_DECLARE_NON_COPYABLE (CaretComponent)
|
|
|
|
|
|
};
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp b/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp |
|
|
|
|
|
index 9ea63b215..7e8f14993 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp |
|
|
|
|
|
+++ b/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp |
|
|
|
|
|
@@ -271,23 +271,6 @@ void ComponentBoundsConstrainer::checkBounds (Rectangle<int>& bounds, |
|
|
|
|
|
bounds.setWidth (roundToInt (bounds.getHeight() * aspectRatio));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
|
|
|
- if ((isStretchingTop || isStretchingBottom) && ! (isStretchingLeft || isStretchingRight))
|
|
|
|
|
|
- {
|
|
|
|
|
|
- bounds.setX (old.getX() + (old.getWidth() - bounds.getWidth()) / 2);
|
|
|
|
|
|
- }
|
|
|
|
|
|
- else if ((isStretchingLeft || isStretchingRight) && ! (isStretchingTop || isStretchingBottom))
|
|
|
|
|
|
- {
|
|
|
|
|
|
- bounds.setY (old.getY() + (old.getHeight() - bounds.getHeight()) / 2);
|
|
|
|
|
|
- }
|
|
|
|
|
|
- else
|
|
|
|
|
|
- {
|
|
|
|
|
|
- if (isStretchingLeft)
|
|
|
|
|
|
- bounds.setX (old.getRight() - bounds.getWidth());
|
|
|
|
|
|
-
|
|
|
|
|
|
- if (isStretchingTop)
|
|
|
|
|
|
- bounds.setY (old.getBottom() - bounds.getHeight());
|
|
|
|
|
|
- }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
jassert (! bounds.isEmpty());
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp |
|
|
|
|
|
index 738fed8c1..f9f79994c 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp |
|
|
|
|
|
+++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp |
|
|
|
|
|
@@ -41,8 +41,6 @@ LookAndFeel_V1::LookAndFeel_V1() |
|
|
|
|
|
setColour (PopupMenu::highlightedBackgroundColourId, Colour (0xbfa4c2ce));
|
|
|
|
|
|
setColour (PopupMenu::highlightedTextColourId, Colours::black);
|
|
|
|
|
|
setColour (TextEditor::focusedOutlineColourId, findColour (TextButton::buttonColourId));
|
|
|
|
|
|
-
|
|
|
|
|
|
- scrollbarShadow.setShadowProperties (DropShadow (Colours::black.withAlpha (0.5f), 2, Point<int>()));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
LookAndFeel_V1::~LookAndFeel_V1()
|
|
|
|
|
|
@@ -291,7 +289,7 @@ void LookAndFeel_V1::drawScrollbar (Graphics& g, ScrollBar& bar, |
|
|
|
|
|
|
|
|
|
|
|
ImageEffectFilter* LookAndFeel_V1::getScrollbarEffect()
|
|
|
|
|
|
{
|
|
|
|
|
|
- return &scrollbarShadow;
|
|
|
|
|
|
+ return nullptr;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -477,7 +475,7 @@ Button* LookAndFeel_V1::createSliderButton (Slider&, const bool isIncrement) |
|
|
|
|
|
|
|
|
|
|
|
ImageEffectFilter* LookAndFeel_V1::getSliderEffect (Slider&)
|
|
|
|
|
|
{
|
|
|
|
|
|
- return &scrollbarShadow;
|
|
|
|
|
|
+ return nullptr;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int LookAndFeel_V1::getSliderThumbRadius (Slider&)
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h |
|
|
|
|
|
index b6c05aed7..51508a57a 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h |
|
|
|
|
|
+++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h |
|
|
|
|
|
@@ -97,8 +97,6 @@ public: |
|
|
|
|
|
bool positionTitleBarButtonsOnLeft) override;
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
- DropShadowEffect scrollbarShadow;
|
|
|
|
|
|
-
|
|
|
|
|
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LookAndFeel_V1)
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp |
|
|
|
|
|
index 21042d0b2..829fed8e6 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp |
|
|
|
|
|
+++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp |
|
|
|
|
|
@@ -1292,8 +1292,6 @@ void LookAndFeel_V4::drawCallOutBoxBackground (CallOutBox& box, Graphics& g, |
|
|
|
|
|
{
|
|
|
|
|
|
cachedImage = { Image::ARGB, box.getWidth(), box.getHeight(), true };
|
|
|
|
|
|
Graphics g2 (cachedImage);
|
|
|
|
|
|
-
|
|
|
|
|
|
- DropShadow (Colours::black.withAlpha (0.7f), 8, { 0, 2 }).drawForPath (g2, path);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
g.setColour (Colours::black);
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp b/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp |
|
|
|
|
|
index 7c0848644..2017bccb5 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp |
|
|
|
|
|
+++ b/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp |
|
|
|
|
|
@@ -30,9 +30,6 @@ BubbleComponent::BubbleComponent() |
|
|
|
|
|
: allowablePlacements (above | below | left | right)
|
|
|
|
|
|
{
|
|
|
|
|
|
setInterceptsMouseClicks (false, false);
|
|
|
|
|
|
-
|
|
|
|
|
|
- shadow.setShadowProperties (DropShadow (Colours::black.withAlpha (0.35f), 5, Point<int>()));
|
|
|
|
|
|
- setComponentEffect (&shadow);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BubbleComponent::~BubbleComponent() {}
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/misc/juce_BubbleComponent.h b/modules/juce_gui_basics/misc/juce_BubbleComponent.h |
|
|
|
|
|
index f086c8ff3..cca6205a3 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/misc/juce_BubbleComponent.h |
|
|
|
|
|
+++ b/modules/juce_gui_basics/misc/juce_BubbleComponent.h |
|
|
|
|
|
@@ -178,7 +178,6 @@ private: |
|
|
|
|
|
Rectangle<int> content;
|
|
|
|
|
|
Point<int> arrowTip;
|
|
|
|
|
|
int allowablePlacements;
|
|
|
|
|
|
- DropShadowEffect shadow;
|
|
|
|
|
|
|
|
|
|
|
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BubbleComponent)
|
|
|
|
|
|
};
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/native/juce_win32_Windowing.cpp b/modules/juce_gui_basics/native/juce_win32_Windowing.cpp |
|
|
|
|
|
index f18b890f4..e92e9af14 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/native/juce_win32_Windowing.cpp |
|
|
|
|
|
+++ b/modules/juce_gui_basics/native/juce_win32_Windowing.cpp |
|
|
|
|
|
@@ -1816,7 +1816,7 @@ public: |
|
|
|
|
|
if (peerIsDeleted)
|
|
|
|
|
|
return S_FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
- peer.handleDragExit (dragInfo);
|
|
|
|
|
|
+ peer.handleDragDrop (dragInfo);
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/widgets/juce_Slider.cpp b/modules/juce_gui_basics/widgets/juce_Slider.cpp |
|
|
|
|
|
index 731193ff1..0f68f6efa 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/widgets/juce_Slider.cpp |
|
|
|
|
|
+++ b/modules/juce_gui_basics/widgets/juce_Slider.cpp |
|
|
|
|
|
@@ -749,7 +749,7 @@ public: |
|
|
|
|
|
? e.position.x - mouseDragStartPos.x
|
|
|
|
|
|
: mouseDragStartPos.y - e.position.y;
|
|
|
|
|
|
|
|
|
|
|
|
- newPos = owner.valueToProportionOfLength (valueOnMouseDown)
|
|
|
|
|
|
+ newPos = owner.valueToProportionOfLength (valueWhenLastDragged)
|
|
|
|
|
|
+ mouseDiff * (1.0 / pixelsForFullDragExtent);
|
|
|
|
|
|
|
|
|
|
|
|
if (style == IncDecButtons)
|
|
|
|
|
|
@@ -763,7 +763,7 @@ public: |
|
|
|
|
|
auto mouseDiff = (e.position.x - mouseDragStartPos.x)
|
|
|
|
|
|
+ (mouseDragStartPos.y - e.position.y);
|
|
|
|
|
|
|
|
|
|
|
|
- newPos = owner.valueToProportionOfLength (valueOnMouseDown)
|
|
|
|
|
|
+ newPos = owner.valueToProportionOfLength (valueWhenLastDragged)
|
|
|
|
|
|
+ mouseDiff * (1.0 / pixelsForFullDragExtent);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
@@ -774,6 +774,7 @@ public: |
|
|
|
|
|
newPos = 1.0 - newPos;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+ mouseDragStartPos = e.position;
|
|
|
|
|
|
newPos = (isRotary() && ! rotaryParams.stopAtEnd) ? newPos - std::floor (newPos)
|
|
|
|
|
|
: jlimit (0.0, 1.0, newPos);
|
|
|
|
|
|
valueWhenLastDragged = owner.proportionOfLengthToValue (newPos);
|
|
|
|
|
|
diff --git a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp |
|
|
|
|
|
index 233c23305..70afc33a1 100644 |
|
|
|
|
|
--- a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp |
|
|
|
|
|
+++ b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp |
|
|
|
|
|
@@ -833,6 +833,11 @@ struct TextEditor::TextHolderComponent : public Component, |
|
|
|
|
|
{
|
|
|
|
|
|
owner.drawContent (g);
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
|
|
|
+ void setTopLeftPosition(Point<int> new_position) override {
|
|
|
|
|
|
+ Component::setTopLeftPosition(new_position);
|
|
|
|
|
|
+ owner.textChanged();
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
void restartTimer()
|
|
|
|
|
|
{
|
|
|
|
|
|
@@ -1558,6 +1563,9 @@ void TextEditor::moveCaretTo (const int newPosition, const bool isSelecting) |
|
|
|
|
|
moveCaret (newPosition);
|
|
|
|
|
|
selection = Range<int>::emptyRange (getCaretPosition());
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
|
|
|
+ if (listeners.size() != 0 || onTextChange != nullptr)
|
|
|
|
|
|
+ postCommandMessage (TextEditorDefs::textChangeMessageId);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int TextEditor::getTextIndexAt (const int x, const int y)
|
|
|
|
|
|
@@ -2141,6 +2149,9 @@ void TextEditor::focusGained (FocusChangeType cause) |
|
|
|
|
|
|
|
|
|
|
|
repaint();
|
|
|
|
|
|
updateCaretPosition();
|
|
|
|
|
|
+
|
|
|
|
|
|
+ if (listeners.size() != 0 || onTextChange != nullptr)
|
|
|
|
|
|
+ postCommandMessage (TextEditorDefs::textChangeMessageId);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void TextEditor::focusLost (FocusChangeType)
|