diff --git a/src/main/java/net/rptools/maptool/client/functions/ShapeFunctions.java b/src/main/java/net/rptools/maptool/client/functions/ShapeFunctions.java index 0edb8b6288..714c0ff554 100644 --- a/src/main/java/net/rptools/maptool/client/functions/ShapeFunctions.java +++ b/src/main/java/net/rptools/maptool/client/functions/ShapeFunctions.java @@ -521,7 +521,9 @@ private Object drawShape( if (!CACHED_SHAPES.containsKey(shapeName)) { throw new ParserException(I18N.getText(OBJECT_NOT_FOUND, functionName, shapeName)); } - ShapeDrawable shapeDrawable = CACHED_SHAPES.get(shapeName); + ShapeDrawable shapeDrawable = new ShapeDrawable(CACHED_SHAPES.get(shapeName)); + shapeDrawable.setId( + new GUID()); // this gives the drawn element a separate ID to the cached shape Rectangle bounds = shapeDrawable.getBounds(); /* Sanity checks */ diff --git a/src/main/java/net/rptools/maptool/model/drawing/AbstractDrawing.java b/src/main/java/net/rptools/maptool/model/drawing/AbstractDrawing.java index 31c662a051..f50d67e4f4 100644 --- a/src/main/java/net/rptools/maptool/model/drawing/AbstractDrawing.java +++ b/src/main/java/net/rptools/maptool/model/drawing/AbstractDrawing.java @@ -46,8 +46,7 @@ protected AbstractDrawing(GUID id) { } protected AbstractDrawing(AbstractDrawing other) { - // The only thing we don't preserve is the ID. - this.id = new GUID(); + this.id = other.id; this.layer = other.layer; this.name = other.name; }