Ticket #9891: selectedprop.diff
File selectedprop.diff, 5.2 KB (added by , 10 years ago) |
---|
-
src/org/openstreetmap/josm/data/osm/DataSet.java
499 499 throw new RuntimeException("failed to remove primitive: "+primitive); 500 500 synchronized (selectionLock) { 501 501 selectedPrimitives.remove(primitive); 502 selection Snapshot = null;502 selectionChanged(primitive); 503 503 } 504 504 allPrimitives.remove(primitive); 505 505 primitive.setDataset(null); … … 548 548 } 549 549 } 550 550 551 private void selectionChanged(OsmPrimitive p){ 552 selectionChanged(Collections.singleton(p)); 553 } 554 555 private void selectionChanged(Collection<OsmPrimitive> col){ 556 for (OsmPrimitive o : col) { 557 o.clearCachedStyle(); 558 for (OsmPrimitive ref : o.getReferrers()) { 559 ref.clearCachedStyle(); 560 } 561 } 562 selectionSnapshot = null; 563 } 564 565 /** 566 * List of currently selected primitives. 567 */ 551 568 private Set<OsmPrimitive> selectedPrimitives = new LinkedHashSet<>(); 569 /** 570 * Cache of the collection returned by {@link getAllSelected()}. Must be 571 * invalidated by the calling function through {@link selectionChanged()} 572 * when selection is changed. 573 */ 552 574 private Collection<OsmPrimitive> selectionSnapshot; 553 575 554 576 /** … … 662 684 for (PrimitiveId o : osm) { 663 685 changed = changed | this.__toggleSelected(o); 664 686 } 665 if (changed) {666 selectionSnapshot = null;667 }668 687 } 669 688 if (changed) { 670 689 fireSelectionChanged(); … … 686 705 if (!selectedPrimitives.remove(primitive)) { 687 706 selectedPrimitives.add(primitive); 688 707 } 689 selection Snapshot = null;708 selectionChanged(primitive); 690 709 return true; 691 710 } 692 711 … … 733 752 addSelected(selection, false); 734 753 changed = !oldSelection.equals(selectedPrimitives); 735 754 if (changed) { 736 selection Snapshot = null;755 selectionChanged(oldSelection); 737 756 } 738 757 } 739 758 … … 803 822 OsmPrimitive primitive = getPrimitiveByIdChecked(id); 804 823 if (primitive != null) { 805 824 changed = changed | selectedPrimitives.add(primitive); 825 selectionChanged(primitive); 806 826 } 807 827 } 808 if (changed) {809 selectionSnapshot = null;810 }811 828 } 812 829 if (fireSelectionChangeEvent && changed) { 813 830 fireSelectionChanged(); … … 848 865 OsmPrimitive primitive = getPrimitiveById(id); 849 866 if (primitive != null) { 850 867 changed = changed | selectedPrimitives.remove(primitive); 868 selectionChanged(primitive); 851 869 } 852 870 } 853 if (changed) {854 selectionSnapshot = null;855 }856 871 } 857 872 if (changed) { 858 873 fireSelectionChanged(); … … 865 880 public void clearSelection() { 866 881 if (!selectedPrimitives.isEmpty()) { 867 882 synchronized (selectionLock) { 883 selectionChanged(selectedPrimitives); 868 884 selectedPrimitives.clear(); 869 selectionSnapshot = null;870 885 } 871 886 fireSelectionChanged(); 872 887 } … … 1268 1283 OsmPrimitive primitive = it.next(); 1269 1284 if (primitive.isDeleted() && (!primitive.isVisible() || primitive.isNew())) { 1270 1285 selectedPrimitives.remove(primitive); 1271 selection Snapshot = null;1286 selectionChanged(primitive); 1272 1287 allPrimitives.remove(primitive); 1273 1288 primitive.setDataset(null); 1274 1289 changed = true; -
src/org/openstreetmap/josm/gui/mappaint/Environment.java
221 221 } 222 222 223 223 public String getRole() { 224 if (getContext().equals(Context.PRIMITIVE))225 return null;224 //if (getContext().equals(Context.PRIMITIVE)) 225 // return null; 226 226 227 227 if (parent instanceof Relation) 228 228 return ((Relation) parent).getMember(index).getRole(); -
src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
401 401 break; 402 402 case "modified": 403 403 return e.osm.isModified() || e.osm.isNewOrUndeleted(); 404 case "selected": 405 return e.osm.isSelected(); 404 406 case "new": 405 407 return e.osm.isNew(); 406 408 case "connection":