Ignore:
Timestamp:
2009-10-29T19:45:49+01:00 (17 years ago)
Author:
Gubaer
Message:

applied #3780: patch by hansendc: Shift selection is broken

Location:
trunk/src/org/openstreetmap/josm/actions
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java

    r2323 r2348  
    8181        Main.main.undoRedo.add(new SequenceCommand(tr("Reverse ways"), c));
    8282        if (propertiesUpdated) {
    83             DataSet.fireSelectionChanged(getCurrentDataSet().getSelected());
     83            getCurrentDataSet().fireSelectionChanged();
    8484        }
    8585        Main.map.repaint();
  • trunk/src/org/openstreetmap/josm/actions/UploadAction.java

    r2323 r2348  
    688688            //
    689689            layer.cleanupAfterUpload(processedPrimitives);
    690             DataSet.fireSelectionChanged(layer.data.getSelected());
     690            layer.data.fireSelectionChanged();
    691691            layer.fireDataChange();
    692692            if (lastException != null) {
  • trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java

    r2339 r2348  
    245245        // primitives
    246246        //
    247         DataSet.fireSelectionChanged(getCurrentDataSet().getSelected());
     247        getCurrentDataSet().fireSelectionChanged();
    248248    }
    249249
     
    272272    private void tryAgain(MouseEvent e) {
    273273        getCurrentDataSet().setSelected();
    274         DataSet.fireSelectionChanged(getCurrentDataSet().getSelected());
     274        Main.main.getCurrentDataSet().fireSelectionChanged();
    275275        mouseClicked(e);
    276276    }
     
    284284        // let everybody else know about the current selection
    285285        //
    286         DataSet.fireSelectionChanged(getCurrentDataSet().getSelected());
     286        Main.main.getCurrentDataSet().fireSelectionChanged();
    287287        lastUsedNode = null;
    288288        wayIsFinished = true;
     
    345345                // (this is just a convenience option so that people don't
    346346                // have to switch modes)
    347                 newSelection.clear();
    348                 newSelection.add(n);
     347                getCurrentDataSet().setSelected(n);
     348                selection = getCurrentDataSet().getSelected();
    349349                // The user explicitly selected a node, so let him continue drawing
    350350                wayIsFinished = false;
     
    523523
    524524                extendedWay = true;
    525                 newSelection.clear();
    526                 newSelection.add(wayToSelect);
     525                ds.setSelected(way);
     526                ds.fireSelectionChanged();
    527527            }
    528528        }
     
    540540                }
    541541            }
    542             newSelection.add(n);
     542
     543            ds.setSelected(n);
     544            ds.fireSelectionChanged();
    543545        } else if (!newNode) {
    544546            title = tr("Connect existing way to node");
     
    585587                    (posn0 < selectedWay.getNodesCount()-1) && targetNode.equals(selectedWay.getNode(posn0+1))) {  // next node
    586588                getCurrentDataSet().setSelected(targetNode);
    587                 DataSet.fireSelectionChanged(getCurrentDataSet().getSelected());
     589                getCurrentDataSet().fireSelectionChanged();
    588590                lastUsedNode = targetNode;
    589591                return true;
  • trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java

    r2310 r2348  
    499499                    }
    500500                }
    501                 DataSet.fireSelectionChanged(selection);
     501                getCurrentDataSet().fireSelectionChanged();
    502502            }
    503503        }
     
    515515    public void selectPrims(Collection<OsmPrimitive> selectionList, boolean shift,
    516516            boolean ctrl, boolean released, boolean area) {
     517        DataSet ds = getCurrentDataSet();
    517518        if ((shift && ctrl) || (ctrl && !released))
    518519            return; // not allowed together
    519520
    520         Collection<OsmPrimitive> curSel;
    521         if (!ctrl && !shift) {
    522             curSel = new LinkedList<OsmPrimitive>(); // new selection will replace the old.
     521        // plain clicks with no modifiers clear the selection
     522        if (!ctrl && !shift)
     523            ds.clearSelection();
     524
     525        if (ctrl) {
     526            // Ctrl on an item toggles its selection status,
     527            // but Ctrl on an *area* just clears those items
     528            // out of the selection.
     529            if (area)
     530                ds.clearSelection(selectionList);
     531            else
     532                ds.toggleSelected(selectionList);
    523533        } else {
    524             curSel = getCurrentDataSet().getSelected();
    525         }
    526 
    527         for (OsmPrimitive osm : selectionList)
    528         {
    529             if (ctrl)
    530             {
    531                 if(curSel.contains(osm)) {
    532                     curSel.remove(osm);
    533                 } else if(!area) {
    534                     curSel.add(osm);
    535                 }
    536             } else {
    537                 curSel.add(osm);
    538             }
    539         }
    540         getCurrentDataSet().setSelected(curSel);
     534            // This is either a plain click (which means we
     535            // previously cleared the selection), or a
     536            // shift-click where we are adding things to an
     537            // existing selection.
     538            ds.addSelected(selectionList);
     539        }
     540        ds.fireSelectionChanged();
    541541        Main.map.mapView.repaint();
    542542    }
Note: See TracChangeset for help on using the changeset viewer.