From 0e3295972171c61f4c8ea510df69a39f62494ce3 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Wed, 4 Nov 2015 20:13:06 +0100 Subject: [PATCH] helpers: treat no selection as a full range --- src/helpers.h | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/helpers.h b/src/helpers.h index 2b820ca3..19d66b53 100644 --- a/src/helpers.h +++ b/src/helpers.h @@ -103,7 +103,9 @@ std::vector getSelected(Iterator first, Iterator last) 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 bool findRange(Iterator &first, Iterator &last) { @@ -124,13 +126,24 @@ bool findRange(Iterator &first, Iterator &last) 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 bool findSelectedRange(Iterator &first, Iterator &last) { + auto orig_first = first; 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) { if (!it->isSelected())