Browse Source

TreeViewItem::setSelected() - avoided deselecting items before re-selecting them if they're already selected.

tags/2021-05-28
jules 11 years ago
parent
commit
00aa1df346
2 changed files with 7 additions and 6 deletions
  1. +6
    -5
      modules/juce_gui_basics/widgets/juce_TreeView.cpp
  2. +1
    -1
      modules/juce_gui_basics/widgets/juce_TreeView.h

+ 6
- 5
modules/juce_gui_basics/widgets/juce_TreeView.cpp View File

@@ -560,7 +560,7 @@ Viewport* TreeView::getViewport() const noexcept
void TreeView::clearSelectedItems()
{
if (rootItem != nullptr)
rootItem->deselectAllRecursively();
rootItem->deselectAllRecursively (nullptr);
}
int TreeView::getNumSelectedItems (int maximumDepthToSearchTo) const noexcept
@@ -1299,12 +1299,13 @@ bool TreeViewItem::isSelected() const noexcept
return selected;
}
void TreeViewItem::deselectAllRecursively()
void TreeViewItem::deselectAllRecursively (TreeViewItem* itemToIgnore)
{
setSelected (false, false);
if (this != itemToIgnore)
setSelected (false, false);
for (int i = 0; i < subItems.size(); ++i)
subItems.getUnchecked(i)->deselectAllRecursively();
subItems.getUnchecked(i)->deselectAllRecursively (itemToIgnore);
}
void TreeViewItem::setSelected (const bool shouldBeSelected,
@@ -1315,7 +1316,7 @@ void TreeViewItem::setSelected (const bool shouldBeSelected,
return;
if (deselectOtherItemsFirst)
getTopLevelItem()->deselectAllRecursively();
getTopLevelItem()->deselectAllRecursively (this);
if (shouldBeSelected != selected)
{


+ 1
- 1
modules/juce_gui_basics/widgets/juce_TreeView.h View File

@@ -557,7 +557,7 @@ private:
TreeViewItem* getDeepestOpenParentItem() noexcept;
int getNumRows() const noexcept;
TreeViewItem* getItemOnRow (int index) noexcept;
void deselectAllRecursively();
void deselectAllRecursively (TreeViewItem* itemToIgnore);
int countSelectedItemsRecursively (int depth) const noexcept;
TreeViewItem* getSelectedItemWithIndex (int index) noexcept;
TreeViewItem* getNextVisibleItem (bool recurse) const noexcept;


Loading…
Cancel
Save