Ignore:
Timestamp:
2013-06-28T17:39:49+02:00 (11 years ago)
Author:
akks
Message:

fix #8829: relation was often hanging JOSM after 6036 + better highlighting

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java

    r6036 r6038  
    2121import javax.swing.KeyStroke;
    2222import javax.swing.ListSelectionModel;
     23import javax.swing.SwingUtilities;
    2324import javax.swing.event.ListSelectionEvent;
    2425import javax.swing.event.ListSelectionListener;
     
    118119    }
    119120
    120     private void initHighlighting() {
    121         getMemberTableModel().getSelectionModel().addListSelectionListener(new ListSelectionListener() {
     121    ListSelectionListener highlighterListener = new ListSelectionListener() {
    122122            @Override
    123123            public void valueChanged(ListSelectionEvent lse) {
    124124                if (Main.isDisplayingMapView()) {
    125125                    Collection<RelationMember> sel = getMemberTableModel().getSelectedMembers();
    126                     ArrayList<OsmPrimitive> toHighlight = new ArrayList<OsmPrimitive>();
     126                    final ArrayList<OsmPrimitive> toHighlight = new ArrayList<OsmPrimitive>();
    127127                    for (RelationMember r: sel) {
    128128                        if (r.getMember().isUsable()) {
     
    130130                        }
    131131                    }
    132                     if (highlightHelper.highlightOnly(toHighlight)) {
    133                         Main.map.mapView.repaint();
    134                     }
     132                    SwingUtilities.invokeLater(new Runnable() {
     133                        @Override
     134                        public void run() {
     135                            if (highlightHelper.highlightOnly(toHighlight)) {
     136                                Main.map.mapView.repaint();
     137                            }
     138                        }
     139                    });
    135140                }
    136             }});
     141            }};
     142   
     143    private void initHighlighting() {
     144        getMemberTableModel().getSelectionModel().addListSelectionListener(highlighterListener);
    137145        if (Main.isDisplayingMapView()) {
    138146            HighlightHelper.clearAllHighlighted();
     
    200208        super.unlinkAsListener();
    201209        MapView.removeLayerChangeListener(zoomToGap);
    202         highlightHelper.clear();
     210    }
     211   
     212    public void stopHighlighting() {
     213        if (highlighterListener == null) return;
     214        getMemberTableModel().getSelectionModel().removeListSelectionListener(highlighterListener);
     215        highlighterListener = null;
     216        if (Main.isDisplayingMapView()) {
     217            HighlightHelper.clearAllHighlighted();
     218            Main.map.mapView.repaint();
     219        }
    203220    }
    204221
Note: See TracChangeset for help on using the changeset viewer.