diff --git a/modules/juce_gui_basics/widgets/juce_TreeView.cpp b/modules/juce_gui_basics/widgets/juce_TreeView.cpp index 3a49df3ec6..12c95afc78 100644 --- a/modules/juce_gui_basics/widgets/juce_TreeView.cpp +++ b/modules/juce_gui_basics/widgets/juce_TreeView.cpp @@ -742,10 +742,18 @@ void TreeView::scrollToKeepItemVisible (TreeViewItem* item) } } -void TreeView::toggleOpenSelectedItem() +bool TreeView::toggleOpenSelectedItem() { if (TreeViewItem* const firstSelected = getSelectedItem (0)) - firstSelected->setOpen (! firstSelected->isOpen()); + { + if (firstSelected->mightContainSubItems()) + { + firstSelected->setOpen (! firstSelected->isOpen()); + return true; + } + } + + return false; } void TreeView::moveOutOfSelectedItem() @@ -822,7 +830,7 @@ bool TreeView::keyPressed (const KeyPress& key) if (key == KeyPress::endKey) { moveSelectedRow (0x3fffffff); return true; } if (key == KeyPress::pageUpKey) { moveByPages (-1); return true; } if (key == KeyPress::pageDownKey) { moveByPages (1); return true; } - if (key == KeyPress::returnKey) { toggleOpenSelectedItem(); return true; } + if (key == KeyPress::returnKey) { return toggleOpenSelectedItem(); } if (key == KeyPress::leftKey) { moveOutOfSelectedItem(); return true; } if (key == KeyPress::rightKey) { moveIntoSelectedItem(); return true; } } diff --git a/modules/juce_gui_basics/widgets/juce_TreeView.h b/modules/juce_gui_basics/widgets/juce_TreeView.h index 822774085b..ad6fd51afb 100644 --- a/modules/juce_gui_basics/widgets/juce_TreeView.h +++ b/modules/juce_gui_basics/widgets/juce_TreeView.h @@ -875,7 +875,7 @@ private: void hideDragHighlight() noexcept; void handleDrag (const StringArray&, const SourceDetails&); void handleDrop (const StringArray&, const SourceDetails&); - void toggleOpenSelectedItem(); + bool toggleOpenSelectedItem(); void moveOutOfSelectedItem(); void moveIntoSelectedItem(); void moveByPages (int numPages);