Ticket #5109: left-right.diff

File left-right.diff, 3.4 KB (added by PetrDlouhy, 13 years ago)

few-liner which fixes left-right bug (ex1) and connection bug

  • src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java

    diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
    index 137e43d..eb5a129 100644
    a b public class MemberTableModel extends AbstractTableModel implements TableModelLi  
    951951            con.add(null);
    952952        }
    953953
    954         int firstGroupIdx=0;
     954        firstGroupIdx=0;
    955955
    956956        lastForwardWay = UNCONNECTED;
    957957        lastBackwardWay = UNCONNECTED;
    public class MemberTableModel extends AbstractTableModel implements TableModelLi  
    983983                if(lastBackwardWay == UNCONNECTED && lastForwardWay == UNCONNECTED){ //Beginning of new oneway
    984984                    wct.isOnewayHead = true;
    985985                    lastForwardWay = i-1;
    986                     lastBackwardWay = i;
     986                    lastBackwardWay = i-1;
    987987                    onewayBeginning = true;
    988988                }
    989989            }           
    public class MemberTableModel extends AbstractTableModel implements TableModelLi  
    10161016            lastWct = wct;
    10171017
    10181018            if(!wct.linkPrev) {
    1019                 if(i > 0) makeLoopIfNeeded(con, i-1, firstGroupIdx);
     1019                if(i > 0) makeLoopIfNeeded(con, i-1);
    10201020                firstGroupIdx = i;
    10211021            }
    10221022        }
    1023         makeLoopIfNeeded(con, members.size()-1, firstGroupIdx);
     1023        makeLoopIfNeeded(con, members.size()-1);
    10241024        connectionType = con;
    10251025        //        for (int i=0; i<con.size(); ++i) {
    10261026        //            System.err.println(con.get(i));
    public class MemberTableModel extends AbstractTableModel implements TableModelLi  
    10551055        return isForward(member) || isBackward(member);
    10561056    }
    10571057
    1058     private void makeLoopIfNeeded(final List<WayConnectionType> con, final int i, final int firstGroupIdx) {
     1058    int firstGroupIdx;
     1059    private void makeLoopIfNeeded(final List<WayConnectionType> con, final int i) {
    10591060        boolean loop;
    10601061        if (i == firstGroupIdx) { //is primitive loop
    10611062            loop = determineDirection(i, FORWARD, i) == FORWARD;
    public class MemberTableModel extends AbstractTableModel implements TableModelLi  
    10911092        Direction dirFW = determineDirection(lastForwardWay, con.get(lastForwardWay).direction, i);
    10921093        Direction dirBW = NONE;
    10931094        if(onewayBeginning) {
    1094             if(lastBackwardWay != i)
    1095                 dirBW = determineDirection(lastBackwardWay, reverse(con.get(lastBackwardWay).direction), i, true);
     1095            if(lastBackwardWay < 0)
     1096                dirBW = determineDirection(firstGroupIdx, reverse(con.get(firstGroupIdx).direction), i, true);
     1097            else
     1098                dirBW = determineDirection(lastBackwardWay, con.get(lastBackwardWay).direction, i, true);
     1099
    10961100            if(dirBW != NONE)
    10971101                onewayBeginning = false;
    10981102        } else
    public class MemberTableModel extends AbstractTableModel implements TableModelLi  
    11161120                if(isOneway(m)){
    11171121                    wct.isOnewayHead = true;
    11181122                    lastForwardWay = i-1;
    1119                     lastBackwardWay = i;
     1123                    lastBackwardWay = i-1;
    11201124                } else {
    11211125                    lastForwardWay = UNCONNECTED;
    11221126                    lastBackwardWay = UNCONNECTED;