Fossil SCM
Fix a problem in which normal merge arrows were often drawn as normal merge arrows.
Commit
8b3e3e007e5f359e02e57cfc6e71c9545f4145a964953ba043024724eedab608
Parent
236586d6f20e7c4…
2 files changed
+4
+1
-1
+4
| --- src/graph.c | ||
| +++ src/graph.c | ||
| @@ -49,10 +49,11 @@ | ||
| 49 | 49 | int idx; /* Row index. First is 1. 0 used for "none" */ |
| 50 | 50 | int idxTop; /* Direct descendent highest up on the graph */ |
| 51 | 51 | GraphRow *pChild; /* Child immediately above this node */ |
| 52 | 52 | u8 isDup; /* True if this is duplicate of a prior entry */ |
| 53 | 53 | u8 isLeaf; /* True if this is a leaf node */ |
| 54 | + u8 hasNormalOutMerge; /* Is parent of at laest 1 non-cherrypick merge */ | |
| 54 | 55 | u8 timeWarp; /* Child is earlier in time */ |
| 55 | 56 | u8 bDescender; /* True if riser from bottom of graph to here. */ |
| 56 | 57 | i8 iRail; /* Which rail this check-in appears on. 0-based.*/ |
| 57 | 58 | i8 mergeOut; /* Merge out to this rail. -1 if no merge-out */ |
| 58 | 59 | u8 mergeIn[GR_MAX_RAIL]; /* Merge in from non-zero rails */ |
| @@ -321,10 +322,13 @@ | ||
| 321 | 322 | pLoop=pLoop->pNext){ |
| 322 | 323 | pLoop->railInUse |= mask; |
| 323 | 324 | } |
| 324 | 325 | } |
| 325 | 326 | } |
| 327 | + if( !isCherrypick ){ | |
| 328 | + pParent->hasNormalOutMerge = 1; | |
| 329 | + } | |
| 326 | 330 | pChild->mergeIn[pParent->mergeOut] = isCherrypick ? 2 : 1; |
| 327 | 331 | } |
| 328 | 332 | |
| 329 | 333 | /* |
| 330 | 334 | ** Compute the maximum rail number. |
| 331 | 335 |
| --- src/graph.c | |
| +++ src/graph.c | |
| @@ -49,10 +49,11 @@ | |
| 49 | int idx; /* Row index. First is 1. 0 used for "none" */ |
| 50 | int idxTop; /* Direct descendent highest up on the graph */ |
| 51 | GraphRow *pChild; /* Child immediately above this node */ |
| 52 | u8 isDup; /* True if this is duplicate of a prior entry */ |
| 53 | u8 isLeaf; /* True if this is a leaf node */ |
| 54 | u8 timeWarp; /* Child is earlier in time */ |
| 55 | u8 bDescender; /* True if riser from bottom of graph to here. */ |
| 56 | i8 iRail; /* Which rail this check-in appears on. 0-based.*/ |
| 57 | i8 mergeOut; /* Merge out to this rail. -1 if no merge-out */ |
| 58 | u8 mergeIn[GR_MAX_RAIL]; /* Merge in from non-zero rails */ |
| @@ -321,10 +322,13 @@ | |
| 321 | pLoop=pLoop->pNext){ |
| 322 | pLoop->railInUse |= mask; |
| 323 | } |
| 324 | } |
| 325 | } |
| 326 | pChild->mergeIn[pParent->mergeOut] = isCherrypick ? 2 : 1; |
| 327 | } |
| 328 | |
| 329 | /* |
| 330 | ** Compute the maximum rail number. |
| 331 |
| --- src/graph.c | |
| +++ src/graph.c | |
| @@ -49,10 +49,11 @@ | |
| 49 | int idx; /* Row index. First is 1. 0 used for "none" */ |
| 50 | int idxTop; /* Direct descendent highest up on the graph */ |
| 51 | GraphRow *pChild; /* Child immediately above this node */ |
| 52 | u8 isDup; /* True if this is duplicate of a prior entry */ |
| 53 | u8 isLeaf; /* True if this is a leaf node */ |
| 54 | u8 hasNormalOutMerge; /* Is parent of at laest 1 non-cherrypick merge */ |
| 55 | u8 timeWarp; /* Child is earlier in time */ |
| 56 | u8 bDescender; /* True if riser from bottom of graph to here. */ |
| 57 | i8 iRail; /* Which rail this check-in appears on. 0-based.*/ |
| 58 | i8 mergeOut; /* Merge out to this rail. -1 if no merge-out */ |
| 59 | u8 mergeIn[GR_MAX_RAIL]; /* Merge in from non-zero rails */ |
| @@ -321,10 +322,13 @@ | |
| 322 | pLoop=pLoop->pNext){ |
| 323 | pLoop->railInUse |= mask; |
| 324 | } |
| 325 | } |
| 326 | } |
| 327 | if( !isCherrypick ){ |
| 328 | pParent->hasNormalOutMerge = 1; |
| 329 | } |
| 330 | pChild->mergeIn[pParent->mergeOut] = isCherrypick ? 2 : 1; |
| 331 | } |
| 332 | |
| 333 | /* |
| 334 | ** Compute the maximum rail number. |
| 335 |
+1
-1
| --- src/timeline.c | ||
| +++ src/timeline.c | ||
| @@ -906,11 +906,11 @@ | ||
| 906 | 906 | cgi_printf("\"mu\":%d,", pRow->mergeUpto); |
| 907 | 907 | } |
| 908 | 908 | cgi_printf("\"u\":%d,", pRow->aiRiser[pRow->iRail]); |
| 909 | 909 | k = 0; |
| 910 | 910 | if( pRow->isLeaf ) k |= 1; |
| 911 | - if( pRow->nCherrypick>=pRow->nParent-1 ) k |= 2; | |
| 911 | + if( !pRow->hasNormalOutMerge ) k |= 2; | |
| 912 | 912 | cgi_printf("\"f\":%d,",k); |
| 913 | 913 | for(i=k=0; i<GR_MAX_RAIL; i++){ |
| 914 | 914 | if( i==pRow->iRail ) continue; |
| 915 | 915 | if( pRow->aiRiser[i]>0 ){ |
| 916 | 916 | if( k==0 ){ |
| 917 | 917 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -906,11 +906,11 @@ | |
| 906 | cgi_printf("\"mu\":%d,", pRow->mergeUpto); |
| 907 | } |
| 908 | cgi_printf("\"u\":%d,", pRow->aiRiser[pRow->iRail]); |
| 909 | k = 0; |
| 910 | if( pRow->isLeaf ) k |= 1; |
| 911 | if( pRow->nCherrypick>=pRow->nParent-1 ) k |= 2; |
| 912 | cgi_printf("\"f\":%d,",k); |
| 913 | for(i=k=0; i<GR_MAX_RAIL; i++){ |
| 914 | if( i==pRow->iRail ) continue; |
| 915 | if( pRow->aiRiser[i]>0 ){ |
| 916 | if( k==0 ){ |
| 917 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -906,11 +906,11 @@ | |
| 906 | cgi_printf("\"mu\":%d,", pRow->mergeUpto); |
| 907 | } |
| 908 | cgi_printf("\"u\":%d,", pRow->aiRiser[pRow->iRail]); |
| 909 | k = 0; |
| 910 | if( pRow->isLeaf ) k |= 1; |
| 911 | if( !pRow->hasNormalOutMerge ) k |= 2; |
| 912 | cgi_printf("\"f\":%d,",k); |
| 913 | for(i=k=0; i<GR_MAX_RAIL; i++){ |
| 914 | if( i==pRow->iRail ) continue; |
| 915 | if( pRow->aiRiser[i]>0 ){ |
| 916 | if( k==0 ){ |
| 917 |