diff --git a/src/base_grid.cpp b/src/base_grid.cpp index 669b91dda63472e6f3c245f0d5e0e2bd36fc6185..274ea6c6f7a0ea0ab0b2ddb056ac0dab514b0a1a 100644 --- a/src/base_grid.cpp +++ b/src/base_grid.cpp @@ -1020,11 +1020,11 @@ void BaseGrid::SetByFrame(bool state) { Refresh(false); } -void BaseGrid::SetSelectedSet(const Selection &new_selection) { +void BaseGrid::SetSelectedSet(Selection new_selection) { Selection inserted, removed; set_difference(new_selection, selection, inserted); set_difference(selection, new_selection, removed); - selection = new_selection; + selection = std::move(new_selection); AnnounceSelectedSetChanged(inserted, removed); Refresh(false); } @@ -1042,9 +1042,9 @@ void BaseGrid::SetActiveLine(AssDialogue *new_line) { extendRow = GetDialogueIndex(new_line); } -void BaseGrid::SetSelectionAndActive(Selection const& new_selection, AssDialogue *new_line) { +void BaseGrid::SetSelectionAndActive(Selection new_selection, AssDialogue *new_line) { BeginBatch(); - SetSelectedSet(new_selection); + SetSelectedSet(std::move(new_selection)); SetActiveLine(new_line); EndBatch(); } diff --git a/src/base_grid.h b/src/base_grid.h index 2d829fd04ee4f6a460b150bbaf0f45d5f8121b6a..d187f663a525f325bdd19aba115e5ce5a7e6cb14 100644 --- a/src/base_grid.h +++ b/src/base_grid.h @@ -130,10 +130,10 @@ public: // SelectionController implementation void SetActiveLine(AssDialogue *new_line) override; AssDialogue * GetActiveLine() const override { return active_line; } - void SetSelectedSet(const Selection &new_selection) override; + void SetSelectedSet(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 d08dc8c7cc8dda70510360a46811337c6e3adada..7cceaf7f671989a8fe7e2592722d2e525bea29c1 100644 --- a/src/selection_controller.h +++ b/src/selection_controller.h @@ -97,7 +97,7 @@ public: /// If no change happens to the selected set, whether because it was refused or /// 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 @@ -114,7 +114,7 @@ public: /// This sets both the active line and selected set before announcing the /// 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 ///