diff --git a/src/org/openstreetmap/josm/data/osm/PrimitiveData.java b/src/org/openstreetmap/josm/data/osm/PrimitiveData.java
index 693d277..7c02278 100644
a
|
b
|
public abstract class PrimitiveData extends AbstractPrimitive implements Seriali
|
54 | 54 | @Override |
55 | 55 | public String toString() { |
56 | 56 | StringBuilder builder = new StringBuilder(); |
57 | | builder.append(id).append(Arrays.toString(keys)).append(getFlagsAsString()); |
| 57 | builder.append(id).append(' ').append(Arrays.toString(keys)).append(' ').append(getFlagsAsString()); |
58 | 58 | return builder.toString(); |
59 | 59 | } |
60 | 60 | |
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTransferData.java b/src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTransferData.java
index 1acd354..91a235c 100644
a
|
b
|
public final class PrimitiveTransferData implements Serializable {
|
149 | 149 | * @return <code>true</code> if invalid data is contained in this set. |
150 | 150 | */ |
151 | 151 | public boolean hasIncompleteData() { |
152 | | for (PrimitiveData pd : getAll()) { |
153 | | if (pd.isIncomplete()) { |
154 | | return true; |
155 | | } |
156 | | } |
157 | | return false; |
| 152 | return getAll().stream().anyMatch(p -> p.isIncomplete() || !p.isVisible()); |
158 | 153 | } |
159 | 154 | } |
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java
index 804b209..a6d0841 100644
a
|
b
|
import org.openstreetmap.josm.data.osm.WayData;
|
25 | 25 | import org.openstreetmap.josm.gui.ExtendedDialog; |
26 | 26 | import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData; |
27 | 27 | import org.openstreetmap.josm.gui.layer.OsmDataLayer; |
| 28 | import org.openstreetmap.josm.tools.bugreport.BugReport; |
28 | 29 | |
29 | 30 | /** |
30 | 31 | * This transfer support allows us to transfer primitives. This is the default paste action when primitives were copied. |
… |
… |
public final class PrimitiveDataPaster extends AbstractOsmDataPaster {
|
66 | 67 | |
67 | 68 | // Update references in copied buffer |
68 | 69 | for (PrimitiveData data : bufferCopy) { |
69 | | if (data instanceof NodeData) { |
70 | | NodeData nodeData = (NodeData) data; |
71 | | nodeData.setEastNorth(nodeData.getEastNorth().add(offset)); |
72 | | } else if (data instanceof WayData) { |
73 | | updateNodes(newIds.get(OsmPrimitiveType.NODE), data); |
74 | | } else if (data instanceof RelationData) { |
75 | | updateMembers(newIds, data); |
| 70 | try { |
| 71 | if (data instanceof NodeData) { |
| 72 | NodeData nodeData = (NodeData) data; |
| 73 | nodeData.setEastNorth(nodeData.getEastNorth().add(offset)); |
| 74 | } else if (data instanceof WayData) { |
| 75 | updateNodes(newIds.get(OsmPrimitiveType.NODE), data); |
| 76 | } else if (data instanceof RelationData) { |
| 77 | updateMembers(newIds, data); |
| 78 | } |
| 79 | } catch (RuntimeException e) { |
| 80 | throw BugReport.intercept(e).put("data", data); |
76 | 81 | } |
77 | 82 | } |
78 | 83 | return new AddPrimitivesCommand(bufferCopy, toSelect, layer); |
… |
… |
public final class PrimitiveDataPaster extends AbstractOsmDataPaster {
|
86 | 91 | newIds.put(OsmPrimitiveType.RELATION, new HashMap<Long, Long>()); |
87 | 92 | |
88 | 93 | for (PrimitiveData data : pasteBuffer.getAll()) { |
89 | | if (data.isIncomplete()) { |
| 94 | if (data.isIncomplete() || !data.isVisible()) { |
90 | 95 | continue; |
91 | 96 | } |
92 | 97 | PrimitiveData copy = data.makeCopy(); |