From e094da34bced0aaf118f8443763bfd43450f87ce Mon Sep 17 00:00:00 2001 From: Craig Watson Date: Sun, 22 Jan 2017 20:58:34 -0500 Subject: [PATCH] Fix saving/loading of strokes' positions Fixed issue that appeared with previous commit, where grouped strokes' positions were sometimes saved and loaded incorrectly. Strokes and their transforms should now be saved correctly whether they are grouped or not --- src/adaptors/UBSvgSubsetAdaptor.cpp | 9 ++++----- src/domain/UBGraphicsStrokesGroup.cpp | 3 ++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index 9d6203c1..3f2018d6 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -1145,11 +1145,6 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(UBDocumentProxy* proxy, mXmlWriter.writeStartElement("g"); openStroke = currentStroke; - QMatrix matrix = item->sceneMatrix(); - - if (!matrix.isIdentity()) - mXmlWriter.writeAttribute("transform", toSvgTransform(matrix)); - UBGraphicsStroke* stroke = dynamic_cast(currentStroke); if (stroke) @@ -1170,6 +1165,10 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(UBDocumentProxy* proxy, mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "uuid", UBStringUtils::toCanonicalUuid(sg->uuid())); + QMatrix matrix = sg->sceneMatrix(); + if (!matrix.isIdentity()) + mXmlWriter.writeAttribute("transform", toSvgTransform(matrix)); + qDebug() << "Attributes written"; groupHoldsInfo = true; diff --git a/src/domain/UBGraphicsStrokesGroup.cpp b/src/domain/UBGraphicsStrokesGroup.cpp index a2606700..39cde9ee 100644 --- a/src/domain/UBGraphicsStrokesGroup.cpp +++ b/src/domain/UBGraphicsStrokesGroup.cpp @@ -173,7 +173,7 @@ UBItem* UBGraphicsStrokesGroup::deepCopy() const } } const_cast(this)->setTransform(groupTransform); - copy->setTransform(sceneTransform()); + copy->setTransform(groupTransform); return copy; } @@ -184,6 +184,7 @@ void UBGraphicsStrokesGroup::copyItemParameters(UBItem *copy) const if(NULL != cp) { cp->setTransform(transform()); + cp->setPos(pos()); cp->setFlag(QGraphicsItem::ItemIsMovable, true); cp->setFlag(QGraphicsItem::ItemIsSelectable, true);