From 7c2363ee5b9bacc50c0eccfe322af45d1511021a Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Wed, 12 Mar 2014 15:02:49 -0700 Subject: [PATCH] Add rref overloads to SetSelectedSet and SetSelectionAndActive --- src/base_grid.cpp | 13 +++++++++++++ src/base_grid.h | 2 ++ src/selection_controller.h | 2 ++ 3 files changed, 17 insertions(+) diff --git a/src/base_grid.cpp b/src/base_grid.cpp index 9ac3f3edf..5d8e2dab3 100644 --- a/src/base_grid.cpp +++ b/src/base_grid.cpp @@ -960,6 +960,12 @@ void BaseGrid::SetSelectedSet(const Selection &new_selection) { Refresh(false); } +void BaseGrid::SetSelectedSet(Selection&& new_selection) { + selection = std::move(new_selection); + AnnounceSelectedSetChanged(); + Refresh(false); +} + void BaseGrid::SetActiveLine(AssDialogue *new_line) { if (new_line != active_line) { assert(new_line == nullptr || line_index_map.count(new_line)); @@ -980,6 +986,13 @@ void BaseGrid::SetSelectionAndActive(Selection const& new_selection, AssDialogue EndBatch(); } +void BaseGrid::SetSelectionAndActive(Selection&& new_selection, AssDialogue *new_line) { + BeginBatch(); + SetSelectedSet(std::move(new_selection)); + SetActiveLine(new_line); + EndBatch(); +} + void BaseGrid::PrevLine() { if (!active_line) return; auto it = context->ass->Events.iterator_to(*active_line); diff --git a/src/base_grid.h b/src/base_grid.h index 7468f0511..33d51e69f 100644 --- a/src/base_grid.h +++ b/src/base_grid.h @@ -126,10 +126,12 @@ public: // SelectionController implementation void SetActiveLine(AssDialogue *new_line) override; AssDialogue * GetActiveLine() const override { return active_line; } + void SetSelectedSet(Selection&& new_selection) override; void SetSelectedSet(const Selection &new_selection) override; void GetSelectedSet(Selection &res) const override { res = selection; } Selection const& GetSelectedSet() const override { return selection; } void SetSelectionAndActive(Selection const& new_selection, AssDialogue *new_line) override;; + void SetSelectionAndActive(Selection&& new_selection, AssDialogue *new_line) override;; void NextLine() override; void PrevLine() override; diff --git a/src/selection_controller.h b/src/selection_controller.h index af2ec17af..70e5faa50 100644 --- a/src/selection_controller.h +++ b/src/selection_controller.h @@ -98,6 +98,7 @@ public: /// because the new set was identical to the old set, no change notification may /// be sent. virtual void SetSelectedSet(const Selection &new_selection) = 0; + virtual void SetSelectedSet(Selection&& new_selection) = 0; /// @brief Obtain the selected set /// @param[out] selection Filled with the selected set on return @@ -115,6 +116,7 @@ public: /// change to either of them, and is guaranteed to announce the active line /// change before the selection change. virtual void SetSelectionAndActive(Selection const& new_selection, ItemDataType new_line) = 0; + virtual void SetSelectionAndActive(Selection&& new_selection, ItemDataType new_line) = 0; /// @brief Change the active line to the next in sequence ///