diff options
author | Michael Stahl <michael.stahl@allotropia.de> | 2021-03-08 20:03:35 +0100 |
---|---|---|
committer | Michael Stahl <michael.stahl@allotropia.de> | 2021-03-15 10:15:57 +0100 |
commit | 9bc6160e0acbc78be998129ea55ed7e4529959fa (patch) | |
tree | d07f099dbf264a24c4d291997637fc49d5ebbf96 /svx | |
parent | bfa320ef2ac7ab9a84f86eee6dfa7f3ee67fa630 (diff) |
tdf#133487 sw ODF export: reorder flys' ZOrder/z-index...
... so background shapes have lower z-index than foreground shapes,
as is recommended by ODF 1.3.
Also let SdrObjList::sort() record Undo actions, because earlier Undo
actions could expect the previous sort order.
Change-Id: Idbecf0a2acd525d42efc0ac92677b1c7987cc6ad
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112180
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/svdraw/svdpage.cxx | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/svx/source/svdraw/svdpage.cxx b/svx/source/svdraw/svdpage.cxx index 0c7c806ad4a8..d07f40e4f701 100644 --- a/svx/source/svdraw/svdpage.cxx +++ b/svx/source/svdraw/svdpage.cxx @@ -40,6 +40,9 @@ #include <svx/svdmodel.hxx> #include <svx/svdlayer.hxx> #include <svx/svdpagv.hxx> +#include <svx/svdundo.hxx> +#include <svx/strings.hrc> +#include <svx/dialmgr.hxx> #include <svx/xfillit0.hxx> #include <svx/fmdpage.hxx> @@ -667,12 +670,29 @@ void SdrObjList::sort( std::vector<sal_Int32>& sortOrder) } #endif + SdrModel & rModel(getSdrPageFromSdrObjList()->getSdrModelFromSdrPage()); + bool const isUndo(rModel.IsUndoEnabled()); + if (isUndo) + { + rModel.BegUndo(SvxResId(STR_SortShapes)); + } + for (size_t i = 0; i < aNewSortOrder.size(); ++i) { aNewList[i] = maList[ aNewSortOrder[i] ]; + if (isUndo && i != sal::static_int_cast<size_t>(aNewSortOrder[i])) + { + rModel.AddUndo(rModel.GetSdrUndoFactory().CreateUndoObjectOrdNum( + *aNewList[i], aNewSortOrder[i], i)); + } aNewList[i]->SetOrdNum(i); } + if (isUndo) + { + rModel.EndUndo(); + } + std::swap(aNewList, maList); } |