From 8efe5abb1a60237ebb85db555c77dd8780e7cb98 Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 19 Nov 2013 21:22:21 +0000 Subject: [PATCH] Avoided DragAndDropContainer holding onto its description object after a drag finishes. --- .../mouse/juce_DragAndDropContainer.cpp | 20 +++++++++---------- .../mouse/juce_DragAndDropContainer.h | 4 ++-- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp b/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp index d29c65f197..2f7856d372 100644 --- a/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp +++ b/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp @@ -34,14 +34,13 @@ public: DragImageComponent (const Image& im, const var& desc, Component* const sourceComponent, - Component* const mouseDragSource_, - DragAndDropContainer& owner_, - Point imageOffset_) + Component* const mouseSource, + DragAndDropContainer& ddc, + Point offset) : sourceDetails (desc, sourceComponent, Point()), - image (im), - owner (owner_), - mouseDragSource (mouseDragSource_), - imageOffset (imageOffset_), + image (im), owner (ddc), + mouseDragSource (mouseSource), + imageOffset (offset), hasCheckedForExternalDrag (false) { setSize (im.getWidth(), im.getHeight()); @@ -189,8 +188,9 @@ public: return targetComponent == mouseDragSource; } -private: DragAndDropTarget::SourceDetails sourceDetails; + +private: Image image; DragAndDropContainer& owner; WeakReference mouseDragSource, currentlyOverComp; @@ -391,8 +391,6 @@ void DragAndDropContainer::startDragging (const var& sourceDescription, dragImageComponent = new DragImageComponent (dragImage, sourceDescription, sourceComponent, draggingSource->getComponentUnderMouse(), *this, imageOffset); - currentDragDesc = sourceDescription; - if (allowDraggingToExternalWindows) { if (! Desktop::canUseSemiTransparentWindows()) @@ -435,7 +433,7 @@ bool DragAndDropContainer::isDragAndDropActive() const var DragAndDropContainer::getCurrentDragDescription() const { - return dragImageComponent != nullptr ? currentDragDesc + return dragImageComponent != nullptr ? dragImageComponent->sourceDetails.description : var(); } diff --git a/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h b/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h index 70873780ed..7d0fed0de9 100644 --- a/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h +++ b/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h @@ -169,8 +169,8 @@ private: //============================================================================== class DragImageComponent; friend class DragImageComponent; - ScopedPointer dragImageComponent; - var currentDragDesc; + friend struct ContainerDeletePolicy; + ScopedPointer dragImageComponent; JUCE_DEPRECATED (virtual bool shouldDropFilesWhenDraggedExternally (const String&, Component*, StringArray&, bool&)) { return false; }