diff --git a/examples/Demo/Source/Demos/ValueTreesDemo.cpp b/examples/Demo/Source/Demos/ValueTreesDemo.cpp index c9d6729b23..b907a81d29 100644 --- a/examples/Demo/Source/Demos/ValueTreesDemo.cpp +++ b/examples/Demo/Source/Demos/ValueTreesDemo.cpp @@ -76,12 +76,13 @@ public: void itemDropped (const DragAndDropTarget::SourceDetails&, int insertIndex) override { - moveItems (*getOwnerView(), - getSelectedTreeViewItems (*getOwnerView()), - tree, insertIndex, undoManager); + OwnedArray selectedTrees; + getSelectedTreeViewItems (*getOwnerView(), selectedTrees); + + moveItems (*getOwnerView(), selectedTrees, tree, insertIndex, undoManager); } - static void moveItems (TreeView& treeView, const Array& items, + static void moveItems (TreeView& treeView, const OwnedArray& items, ValueTree newParent, int insertIndex, UndoManager& undoManager) { if (items.size() > 0) @@ -90,7 +91,7 @@ public: for (int i = items.size(); --i >= 0;) { - ValueTree& v = items.getReference(i); + ValueTree& v = *items.getUnchecked(i); if (v.getParent().isValid() && newParent != v && ! newParent.isAChildOf (v)) { @@ -107,17 +108,13 @@ public: } } - static Array getSelectedTreeViewItems (TreeView& treeView) + static void getSelectedTreeViewItems (TreeView& treeView, OwnedArray& items) { - Array items; - const int numSelected = treeView.getNumSelectedItems(); for (int i = 0; i < numSelected; ++i) if (const ValueTreeItem* vti = dynamic_cast (treeView.getSelectedItem (i))) - items.add (vti->tree); - - return items; + items.add (new ValueTree (vti->tree)); } private: @@ -237,11 +234,12 @@ public: void deleteSelectedItems() { - Array selectedItems (ValueTreeItem::getSelectedTreeViewItems (tree)); + OwnedArray selectedItems; + ValueTreeItem::getSelectedTreeViewItems (tree, selectedItems); for (int i = selectedItems.size(); --i >= 0;) { - ValueTree& v = selectedItems.getReference(i); + ValueTree& v = *selectedItems.getUnchecked(i); if (v.getParent().isValid()) v.getParent().removeChild (v, &undoManager);