diff --git a/src/core/control/tools/EditSelection.cpp b/src/core/control/tools/EditSelection.cpp index 7212610a9f4f..a44deb544d33 100644 --- a/src/core/control/tools/EditSelection.cpp +++ b/src/core/control/tools/EditSelection.cpp @@ -64,7 +64,7 @@ EditSelection::EditSelection(UndoRedoHandler* undo, const PageRef& page, XojPage EditSelection::EditSelection(UndoRedoHandler* undo, Selection* selection, XojPageView* view): snappingHandler(view->getXournal()->getControl()->getSettings()) { - calcSizeFromElements(selection->selectedElements); + Range r = calcSizeFromElements(selection->selectedElements); construct(undo, view, view->getPage()); @@ -80,7 +80,7 @@ EditSelection::EditSelection(UndoRedoHandler* undo, Selection* selection, XojPag this->sourceLayer->removeElement(e, false); } - view->rerenderPage(); + view->rerenderRange(r); } EditSelection::EditSelection(UndoRedoHandler* undo, Element* e, XojPageView* view, const PageRef& page): @@ -97,7 +97,7 @@ EditSelection::EditSelection(UndoRedoHandler* undo, Element* e, XojPageView* vie EditSelection::EditSelection(UndoRedoHandler* undo, const vector& elements, XojPageView* view, const PageRef& page): snappingHandler(view->getXournal()->getControl()->getSettings()) { - calcSizeFromElements(elements); + Range r = calcSizeFromElements(elements); construct(undo, view, page); for (Element* e: elements) { @@ -105,13 +105,13 @@ EditSelection::EditSelection(UndoRedoHandler* undo, const vector& elem this->sourceLayer->removeElement(e, false); } - view->rerenderPage(); + view->rerenderRange(r); } EditSelection::EditSelection(UndoRedoHandler* undo, XojPageView* view, const PageRef& page, Layer* layer): snappingHandler(view->getXournal()->getControl()->getSettings()) { const auto& elements = layer->getElements(); - calcSizeFromElements(elements); + Range r = calcSizeFromElements(elements); construct(undo, view, page); long i = 0L; @@ -122,17 +122,17 @@ EditSelection::EditSelection(UndoRedoHandler* undo, XojPageView* view, const Pag layer->clearNoFree(); - view->rerenderPage(); + view->rerenderRange(r); } -void EditSelection::calcSizeFromElements(vector elements) { +auto EditSelection::calcSizeFromElements(vector elements) -> Range { if (elements.empty()) { x = 0; y = 0; width = 0; height = 0; snappedBounds = Rectangle{}; - return; + return Range(); } Element* first = elements.front(); @@ -153,6 +153,7 @@ void EditSelection::calcSizeFromElements(vector elements) { height = range.getHeight() + 3 * this->btnWidth; snappedBounds = rect; + return range; } void EditSelection::construct(UndoRedoHandler* undo, XojPageView* view, const PageRef& sourcePage) { diff --git a/src/core/control/tools/EditSelection.h b/src/core/control/tools/EditSelection.h index 0e77ea9fea84..c02adc43d504 100644 --- a/src/core/control/tools/EditSelection.h +++ b/src/core/control/tools/EditSelection.h @@ -60,7 +60,7 @@ class EditSelection: public ElementContainer, public Serializable { /** * Calculate the size from the element list */ - void calcSizeFromElements(std::vector elements); + auto calcSizeFromElements(std::vector elements) -> Range; public: /**