summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorMichael Stahl <michael.stahl@allotropia.de>2021-03-08 20:03:35 +0100
committerMichael Stahl <michael.stahl@allotropia.de>2021-03-15 10:15:57 +0100
commit9bc6160e0acbc78be998129ea55ed7e4529959fa (patch)
treed07f099dbf264a24c4d291997637fc49d5ebbf96 /svx
parentbfa320ef2ac7ab9a84f86eee6dfa7f3ee67fa630 (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.cxx20
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);
}