From bec0dc0090451532c2b8dbb92f84dfe54ad1d5cf Mon Sep 17 00:00:00 2001 From: Craig Watson Date: Sun, 14 May 2017 20:35:20 -0400 Subject: [PATCH] Fix saving of strokes that were partially erased This ensures that when part of a line is erased, `UBGraphicsStroke::isNominalLine` will no longer return true. This was problematic as `UBSvgSubsetAdaptor` uses this to know whether or not to save a stroke as polyline. If it saves the stroke as a polyline, then the erased portions of the stroke reappear after saving. Therefore, we now force saving of the stroke as a group of polygons when it has been partially erased. --- src/domain/UBGraphicsPolygonItem.h | 2 ++ src/domain/UBGraphicsScene.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/src/domain/UBGraphicsPolygonItem.h b/src/domain/UBGraphicsPolygonItem.h index eb5eb815..8dcc26b1 100644 --- a/src/domain/UBGraphicsPolygonItem.h +++ b/src/domain/UBGraphicsPolygonItem.h @@ -109,6 +109,8 @@ class UBGraphicsPolygonItem : public QGraphicsPolygonItem, public UBItem qreal originalWidth() { return mOriginalWidth;} bool isNominalLine() {return mIsNominalLine;} + void setNominalLine(bool isNominalLine) { mIsNominalLine = isNominalLine; } + QColor colorOnDarkBackground() const { return mColorOnDarkBackground; diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 0ee33c5c..a70c5528 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -893,6 +893,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) UBGraphicsPolygonItem* polygonItem = new UBGraphicsPolygonItem(intersectedPolygons[i][j], intersectedPolygonItem->parentItem()); intersectedPolygonItem->copyItemParameters(polygonItem); + polygonItem->setNominalLine(false); polygonItem->setStroke(intersectedPolygonItem->stroke()); polygonItem->setStrokesGroup(intersectedPolygonItem->strokesGroup()); intersectedPolygonItem->strokesGroup()->addToGroup(polygonItem);