Ticket #13948: validator_seems_to_hang_3.patch
File validator_seems_to_hang_3.patch, 2.1 KB (added by , 7 years ago) |
---|
-
src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
104 104 removeKeyListener(keyListener); 105 105 } 106 106 } 107 addDataSetListener(); 108 } 109 110 private void addDataSetListener() { 111 if (getErrors().isEmpty()) 112 return; 107 113 DataSet ds = Main.getLayerManager().getEditDataSet(); 108 114 if (ds != null) { 109 115 ds.addDataSetListener(this); … … 302 308 */ 303 309 public final void setErrorList(List<TestError> errors) { 304 310 this.errors = errors; 311 addDataSetListener(); 305 312 if (isVisible()) { 306 313 buildTree(); 307 314 } … … 320 327 errors.add(error); 321 328 } 322 329 } 330 addDataSetListener(); 323 331 if (isVisible()) { 324 332 buildTree(); 325 333 } … … 436 444 } 437 445 438 446 @Override public void primitivesRemoved(PrimitivesRemovedEvent event) { 439 // Remove purged primitives (fix #8639) 440 for (TestError err : errors) { 441 try { 442 err.getPrimitives().removeAll(event.getPrimitives()); 443 } catch (UnsupportedOperationException e) { 444 if (event.getPrimitives().containsAll(err.getPrimitives())) { 445 err.getPrimitives().clear(); 446 } else { 447 Main.warn(e, "Unable to remove primitives from "+err+'.'); 448 } 449 } 450 } 447 // Remove errors which list of primitives refer to purged primitives (fix #8639) 448 setErrorList(errors.stream() 449 .filter(err -> event.getPrimitives().stream().noneMatch(prim -> err.getPrimitives().contains(prim))) 450 .collect(Collectors.toList())); 451 451 } 452 452 453 453 @Override public void primitivesAdded(PrimitivesAddedEvent event) {