Browse Source

Tidied up an assertion when using empty treeviews.

tags/2021-05-28
jules 13 years ago
parent
commit
04401e7f3e
1 changed files with 28 additions and 30 deletions
  1. +28
    -30
      modules/juce_gui_basics/widgets/juce_TreeView.cpp

+ 28
- 30
modules/juce_gui_basics/widgets/juce_TreeView.cpp View File

@@ -589,10 +589,7 @@ TreeViewItem* TreeView::getSelectedItem (const int index) const noexcept
int TreeView::getNumRowsInTree() const
{
if (rootItem != nullptr)
return rootItem->getNumRows() - (rootItemVisible ? 0 : 1);
return 0;
return rootItem != nullptr ? (rootItem->getNumRows() - (rootItemVisible ? 0 : 1)) : 0;
}
TreeViewItem* TreeView::getItemOnRow (int index) const
@@ -699,44 +696,45 @@ void TreeView::enablementChanged()
void TreeView::moveSelectedRow (const int delta)
{
int rowSelected = 0;
const int numRowsInTree = getNumRowsInTree();
TreeViewItem* const firstSelected = getSelectedItem (0);
if (firstSelected != nullptr)
rowSelected = firstSelected->getRowNumberInTree();
if (numRowsInTree > 0)
{
int rowSelected = 0;
rowSelected = jlimit (0, getNumRowsInTree() - 1, rowSelected + delta);
TreeViewItem* const firstSelected = getSelectedItem (0);
if (firstSelected != nullptr)
rowSelected = firstSelected->getRowNumberInTree();
for (;;)
{
TreeViewItem* item = getItemOnRow (rowSelected);
rowSelected = jlimit (0, numRowsInTree - 1, rowSelected + delta);
if (item != nullptr)
for (;;)
{
if (! item->canBeSelected())
{
// if the row we want to highlight doesn't allow it, try skipping
// to the next item..
const int nextRowToTry = jlimit (0, getNumRowsInTree() - 1,
rowSelected + (delta < 0 ? -1 : 1));
TreeViewItem* const item = getItemOnRow (rowSelected);
if (rowSelected != nextRowToTry)
{
rowSelected = nextRowToTry;
continue;
}
else
if (item != nullptr)
{
if (! item->canBeSelected())
{
// if the row we want to highlight doesn't allow it, try skipping
// to the next item..
const int nextRowToTry = jlimit (0, numRowsInTree - 1, rowSelected + (delta < 0 ? -1 : 1));
if (rowSelected != nextRowToTry)
{
rowSelected = nextRowToTry;
continue;
}
break;
}
}
item->setSelected (true, true);
item->setSelected (true, true);
scrollToKeepItemVisible (item);
}
scrollToKeepItemVisible (item);
break;
}
break;
}
}


Loading…
Cancel
Save