helpers: treat no selection as a full range

This commit is contained in:
Andrzej Rybczak
2015-11-04 20:13:06 +01:00
parent 2dc7af8166
commit 0e32959721

View File

@@ -103,7 +103,9 @@ std::vector<Iterator> getSelected(Iterator first, Iterator last)
return result; return result;
} }
/// @return true if range that begins and ends with selected items was found /// @return true if range that begins and ends with selected items was
/// found, false when there is no selected items (in which case first
/// == last).
template <typename Iterator> template <typename Iterator>
bool findRange(Iterator &first, Iterator &last) bool findRange(Iterator &first, Iterator &last)
{ {
@@ -124,13 +126,24 @@ bool findRange(Iterator &first, Iterator &last)
return true; return true;
} }
/// @return true if fully selected range was found, false otherwise. /// @return true if fully selected range was found or no selected
/// items were found, false otherwise.
template <typename Iterator> template <typename Iterator>
bool findSelectedRange(Iterator &first, Iterator &last) bool findSelectedRange(Iterator &first, Iterator &last)
{ {
auto orig_first = first;
if (!findRange(first, last)) if (!findRange(first, last))
return false; {
// we have range, now check if it's filled with selected items // If no selected items were found, return original range.
if (first == last)
{
first = orig_first;
return true;
}
else
return false;
}
// We have range, now check if it's filled with selected items.
for (auto it = first; it != last; ++it) for (auto it = first; it != last; ++it)
{ {
if (!it->isSelected()) if (!it->isSelected())