From 3430e228c8beb7cf0c8836b48d4dbc83ebc67ff4 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Wed, 21 Oct 2020 00:58:41 -0500 Subject: [PATCH] [nostalgia/core/studio] Make TileSheetClipboards that are passed around use heap --- src/nostalgia/core/studio/tilesheeteditor.cpp | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/nostalgia/core/studio/tilesheeteditor.cpp b/src/nostalgia/core/studio/tilesheeteditor.cpp index efb1c1027..9d68093b4 100644 --- a/src/nostalgia/core/studio/tilesheeteditor.cpp +++ b/src/nostalgia/core/studio/tilesheeteditor.cpp @@ -322,13 +322,13 @@ class InsertTileCommand: public QUndoCommand { class PasteClipboardCommand: public QUndoCommand { private: SheetData *m_sheetData = nullptr; - TileSheetClipboard m_restore; - TileSheetClipboard m_apply; + std::unique_ptr m_restore; + std::unique_ptr m_apply; public: PasteClipboardCommand(SheetData *sheetData, - const TileSheetClipboard &restore, - const TileSheetClipboard &apply): m_sheetData(sheetData), m_restore(restore), m_apply(apply) { + std::unique_ptr &&restore, + std::unique_ptr &&apply): m_sheetData(sheetData), m_restore(std::move(restore)), m_apply(std::move(apply)) { } virtual ~PasteClipboardCommand() = default; @@ -338,11 +338,11 @@ class PasteClipboardCommand: public QUndoCommand { } void redo() override { - m_sheetData->applyClipboard(m_apply); + m_sheetData->applyClipboard(*m_apply); } void undo() override { - m_sheetData->applyClipboard(m_restore); + m_sheetData->applyClipboard(*m_restore); } }; @@ -618,16 +618,16 @@ void SheetData::cutToClipboard() { void SheetData::cutToClipboard(TileSheetClipboard *cb) { const auto start = ptToIdx(cb->point1(), m_columns); const auto end = ptToIdx(cb->point2(), m_columns); - TileSheetClipboard apply; + auto apply = std::make_unique(); for (int i = start; i <= end; ++i) { const auto s = m_pixelSelected[i]; if (s) { cb->add(i, m_pixels[i]); - apply.add(i, 0); + apply->add(i, 0); } } - apply.setPoints(cb->point1(), cb->point2()); - m_cmdStack->push(new PasteClipboardCommand(this, *cb, apply)); + apply->setPoints(cb->point1(), cb->point2()); + m_cmdStack->push(new PasteClipboardCommand(this, std::make_unique(*cb), std::move(apply))); } void SheetData::copyToClipboard() { @@ -647,14 +647,14 @@ void SheetData::copyToClipboard(TileSheetClipboard *cb) { } void SheetData::pasteClipboard() { - TileSheetClipboard apply = m_clipboard; - TileSheetClipboard restore; - const auto p2 = m_selectionStart + (apply.point2() - apply.point1()); - apply.setPoints(m_selectionStart, p2); - restore.setPoints(m_selectionStart, p2); + auto apply = std::make_unique(m_clipboard); + auto restore = std::make_unique(); + const auto p2 = m_selectionStart + (apply->point2() - apply->point1()); + apply->setPoints(m_selectionStart, p2); + restore->setPoints(m_selectionStart, p2); markSelection(p2); - copyToClipboard(&restore); - m_cmdStack->push(new PasteClipboardCommand(this, restore, apply)); + copyToClipboard(restore.get()); + m_cmdStack->push(new PasteClipboardCommand(this, std::move(restore), std::move(apply))); } void SheetData::applyClipboard(const TileSheetClipboard &cb) {