Changeset 15238 in josm


Ignore:
Timestamp:
2019-07-10T00:52:47+02:00 (6 days ago)
Author:
Don-vip
Message:

fix #17894 - fix moving of 2+ selected relation members, events optimization

Location:
trunk/src/org/openstreetmap/josm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/ReorderableModel.java

    r15226 r15238  
    7373     * @param delta negative or positive delta
    7474     * @param selectedRows rows to move
    75      * @return {@code true} if rows have been moved down
     75     * @return {@code true} if rows have been moved
    7676     */
    7777    default boolean doMove(int delta, int... selectedRows) {
    78         for (int row: selectedRows) {
    79             T t1 = getValue(row);
    80             T t2 = getValue(row + delta);
    81             setValue(row, t2);
    82             setValue(row + delta, t1);
     78        if (delta != 0) {
     79            if (delta < 0) {
     80                for (int row: selectedRows) {
     81                    setValue(row + delta, setValue(row, getValue(row + delta)));
     82                }
     83            } else {
     84                for (int i = selectedRows.length - 1; i >= 0; i--) {
     85                    int row = selectedRows[i];
     86                    setValue(row + delta, setValue(row, getValue(row + delta)));
     87                }
     88            }
    8389        }
    84         return true;
     90        return delta != 0 && selectedRows.length > 0;
    8591    }
    8692}
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java

    r15236 r15238  
    298298            return;
    299299        int offset = 0;
     300        final ListSelectionModel selectionModel = getSelectionModel();
     301        selectionModel.setValueIsAdjusting(true);
    300302        for (int row : selectedRows) {
    301303            row -= offset;
    302304            if (members.size() > row) {
    303305                members.remove(row);
    304                 getSelectionModel().removeIndexInterval(row, row);
     306                selectionModel.removeIndexInterval(row, row);
    305307                offset++;
    306308            }
    307309        }
     310        selectionModel.setValueIsAdjusting(false);
    308311        fireTableDataChanged();
    309312    }
Note: See TracChangeset for help on using the changeset viewer.