Window: throw when multiselect results in no selections

This commit is contained in:
Maxime Coste 2011-12-20 19:27:13 +00:00
parent 42a24895de
commit 7116ed6d61

View File

@ -236,6 +236,11 @@ void Window::select(const Selector& selector, bool append)
scroll_to_keep_cursor_visible_ifn(); scroll_to_keep_cursor_visible_ifn();
} }
struct nothing_selected : public runtime_error
{
nothing_selected() : runtime_error("nothing was selected") {}
};
void Window::multi_select(const MultiSelector& selector) void Window::multi_select(const MultiSelector& selector)
{ {
check_invariant(); check_invariant();
@ -247,11 +252,11 @@ void Window::multi_select(const MultiSelector& selector)
std::copy(selections.begin(), selections.end(), std::copy(selections.begin(), selections.end(),
std::back_inserter(new_selections)); std::back_inserter(new_selections));
} }
if (not new_selections.empty()) if (new_selections.empty())
{ throw nothing_selected();
m_selections = std::move(new_selections); m_selections = std::move(new_selections);
scroll_to_keep_cursor_visible_ifn(); scroll_to_keep_cursor_visible_ifn();
}
} }
BufferString Window::selection_content() const BufferString Window::selection_content() const