Fossil SCM
Draw an X instead of a horizontal line. Uses SVG as attempts with characters differed wildly among browsers.
Commit
63785bd9111246a26b7be63487f788233e6a1c3b0b686f76454cca86f7a13ebb
Parent
6c27f4136eed368…
5 files changed
+4
-6
+4
-6
+4
-6
+4
-6
+13
-1
+4
-6
| --- skins/ardoise/css.txt | ||
| +++ skins/ardoise/css.txt | ||
| @@ -1033,19 +1033,17 @@ | ||
| 1033 | 1033 | left: 3px; |
| 1034 | 1034 | width: 4px; |
| 1035 | 1035 | height: 4px; |
| 1036 | 1036 | background: #bbb |
| 1037 | 1037 | } |
| 1038 | -.tl-node.closed-leaf:after { | |
| 1039 | - content: ''; | |
| 1038 | +.tl-node.closed-leaf svg { | |
| 1040 | 1039 | position: absolute; |
| 1041 | - top: 4px; | |
| 1040 | + top: 0px; | |
| 1042 | 1041 | left: 0px; |
| 1043 | 1042 | width: 10px; |
| 1044 | - height: 2px; | |
| 1045 | - background: #bbb | |
| 1046 | - border-radius: 0%; | |
| 1043 | + height: 10px; | |
| 1044 | + color: #bbb; | |
| 1047 | 1045 | } |
| 1048 | 1046 | .tl-node.sel:after { |
| 1049 | 1047 | content: ''; |
| 1050 | 1048 | position: absolute; |
| 1051 | 1049 | top: 1px; |
| 1052 | 1050 |
| --- skins/ardoise/css.txt | |
| +++ skins/ardoise/css.txt | |
| @@ -1033,19 +1033,17 @@ | |
| 1033 | left: 3px; |
| 1034 | width: 4px; |
| 1035 | height: 4px; |
| 1036 | background: #bbb |
| 1037 | } |
| 1038 | .tl-node.closed-leaf:after { |
| 1039 | content: ''; |
| 1040 | position: absolute; |
| 1041 | top: 4px; |
| 1042 | left: 0px; |
| 1043 | width: 10px; |
| 1044 | height: 2px; |
| 1045 | background: #bbb |
| 1046 | border-radius: 0%; |
| 1047 | } |
| 1048 | .tl-node.sel:after { |
| 1049 | content: ''; |
| 1050 | position: absolute; |
| 1051 | top: 1px; |
| 1052 |
| --- skins/ardoise/css.txt | |
| +++ skins/ardoise/css.txt | |
| @@ -1033,19 +1033,17 @@ | |
| 1033 | left: 3px; |
| 1034 | width: 4px; |
| 1035 | height: 4px; |
| 1036 | background: #bbb |
| 1037 | } |
| 1038 | .tl-node.closed-leaf svg { |
| 1039 | position: absolute; |
| 1040 | top: 0px; |
| 1041 | left: 0px; |
| 1042 | width: 10px; |
| 1043 | height: 10px; |
| 1044 | color: #bbb; |
| 1045 | } |
| 1046 | .tl-node.sel:after { |
| 1047 | content: ''; |
| 1048 | position: absolute; |
| 1049 | top: 1px; |
| 1050 |
+4
-6
| --- skins/darkmode/css.txt | ||
| +++ skins/darkmode/css.txt | ||
| @@ -388,19 +388,17 @@ | ||
| 388 | 388 | left: 3px; |
| 389 | 389 | width: 4px; |
| 390 | 390 | height: 4px; |
| 391 | 391 | background: #bbb |
| 392 | 392 | } |
| 393 | -.tl-node.closed-leaf:after { | |
| 394 | - content: ''; | |
| 393 | +.tl-node.closed-leaf svg { | |
| 395 | 394 | position: absolute; |
| 396 | - top: 4px; | |
| 395 | + top: 0px; | |
| 397 | 396 | left: 0px; |
| 398 | 397 | width: 10px; |
| 399 | - height: 2px; | |
| 400 | - background: #bbb | |
| 401 | - border-radius: 0%; | |
| 398 | + height: 10px; | |
| 399 | + color: #bbb; | |
| 402 | 400 | } |
| 403 | 401 | .tl-node.sel:after { |
| 404 | 402 | content: ''; |
| 405 | 403 | position: absolute; |
| 406 | 404 | top: 1px; |
| 407 | 405 |
| --- skins/darkmode/css.txt | |
| +++ skins/darkmode/css.txt | |
| @@ -388,19 +388,17 @@ | |
| 388 | left: 3px; |
| 389 | width: 4px; |
| 390 | height: 4px; |
| 391 | background: #bbb |
| 392 | } |
| 393 | .tl-node.closed-leaf:after { |
| 394 | content: ''; |
| 395 | position: absolute; |
| 396 | top: 4px; |
| 397 | left: 0px; |
| 398 | width: 10px; |
| 399 | height: 2px; |
| 400 | background: #bbb |
| 401 | border-radius: 0%; |
| 402 | } |
| 403 | .tl-node.sel:after { |
| 404 | content: ''; |
| 405 | position: absolute; |
| 406 | top: 1px; |
| 407 |
| --- skins/darkmode/css.txt | |
| +++ skins/darkmode/css.txt | |
| @@ -388,19 +388,17 @@ | |
| 388 | left: 3px; |
| 389 | width: 4px; |
| 390 | height: 4px; |
| 391 | background: #bbb |
| 392 | } |
| 393 | .tl-node.closed-leaf svg { |
| 394 | position: absolute; |
| 395 | top: 0px; |
| 396 | left: 0px; |
| 397 | width: 10px; |
| 398 | height: 10px; |
| 399 | color: #bbb; |
| 400 | } |
| 401 | .tl-node.sel:after { |
| 402 | content: ''; |
| 403 | position: absolute; |
| 404 | top: 1px; |
| 405 |
+4
-6
| --- skins/eagle/css.txt | ||
| +++ skins/eagle/css.txt | ||
| @@ -211,19 +211,17 @@ | ||
| 211 | 211 | height: 4px; |
| 212 | 212 | background: #fff; |
| 213 | 213 | } |
| 214 | 214 | |
| 215 | 215 | /* closed leaf commit marker */ |
| 216 | -.tl-node.closed-leaf:after { | |
| 217 | - content: ''; | |
| 216 | +.tl-node.closed-leaf svg { | |
| 218 | 217 | position: absolute; |
| 219 | - top: 4px; | |
| 218 | + top: 0px; | |
| 220 | 219 | left: 0px; |
| 221 | 220 | width: 10px; |
| 222 | - height: 2px; | |
| 223 | - background: #fff; | |
| 224 | - border-radius: 0%; | |
| 221 | + height: 10px; | |
| 222 | + color: #fff; | |
| 225 | 223 | } |
| 226 | 224 | |
| 227 | 225 | /* up arrow */ |
| 228 | 226 | .tl-arrow.u { |
| 229 | 227 | margin-top: -1px; |
| 230 | 228 |
| --- skins/eagle/css.txt | |
| +++ skins/eagle/css.txt | |
| @@ -211,19 +211,17 @@ | |
| 211 | height: 4px; |
| 212 | background: #fff; |
| 213 | } |
| 214 | |
| 215 | /* closed leaf commit marker */ |
| 216 | .tl-node.closed-leaf:after { |
| 217 | content: ''; |
| 218 | position: absolute; |
| 219 | top: 4px; |
| 220 | left: 0px; |
| 221 | width: 10px; |
| 222 | height: 2px; |
| 223 | background: #fff; |
| 224 | border-radius: 0%; |
| 225 | } |
| 226 | |
| 227 | /* up arrow */ |
| 228 | .tl-arrow.u { |
| 229 | margin-top: -1px; |
| 230 |
| --- skins/eagle/css.txt | |
| +++ skins/eagle/css.txt | |
| @@ -211,19 +211,17 @@ | |
| 211 | height: 4px; |
| 212 | background: #fff; |
| 213 | } |
| 214 | |
| 215 | /* closed leaf commit marker */ |
| 216 | .tl-node.closed-leaf svg { |
| 217 | position: absolute; |
| 218 | top: 0px; |
| 219 | left: 0px; |
| 220 | width: 10px; |
| 221 | height: 10px; |
| 222 | color: #fff; |
| 223 | } |
| 224 | |
| 225 | /* up arrow */ |
| 226 | .tl-arrow.u { |
| 227 | margin-top: -1px; |
| 228 |
+4
-6
| --- src/default.css | ||
| +++ src/default.css | ||
| @@ -118,19 +118,17 @@ | ||
| 118 | 118 | left: 3px; |
| 119 | 119 | width: 4px; |
| 120 | 120 | height: 4px; |
| 121 | 121 | background: #000; |
| 122 | 122 | } |
| 123 | -.tl-node.closed-leaf:after { | |
| 124 | - content: ''; | |
| 123 | +.tl-node.closed-leaf svg { | |
| 125 | 124 | position: absolute; |
| 126 | - top: 4px; | |
| 125 | + top: 0px; | |
| 127 | 126 | left: 0px; |
| 128 | 127 | width: 10px; |
| 129 | - height: 2px; | |
| 130 | - background: #000; | |
| 131 | - border-radius: 0%; | |
| 128 | + height: 10px; | |
| 129 | + color: #000; | |
| 132 | 130 | } |
| 133 | 131 | .tl-node.sel:after { |
| 134 | 132 | content: ''; |
| 135 | 133 | position: absolute; |
| 136 | 134 | top: 2px; |
| 137 | 135 |
| --- src/default.css | |
| +++ src/default.css | |
| @@ -118,19 +118,17 @@ | |
| 118 | left: 3px; |
| 119 | width: 4px; |
| 120 | height: 4px; |
| 121 | background: #000; |
| 122 | } |
| 123 | .tl-node.closed-leaf:after { |
| 124 | content: ''; |
| 125 | position: absolute; |
| 126 | top: 4px; |
| 127 | left: 0px; |
| 128 | width: 10px; |
| 129 | height: 2px; |
| 130 | background: #000; |
| 131 | border-radius: 0%; |
| 132 | } |
| 133 | .tl-node.sel:after { |
| 134 | content: ''; |
| 135 | position: absolute; |
| 136 | top: 2px; |
| 137 |
| --- src/default.css | |
| +++ src/default.css | |
| @@ -118,19 +118,17 @@ | |
| 118 | left: 3px; |
| 119 | width: 4px; |
| 120 | height: 4px; |
| 121 | background: #000; |
| 122 | } |
| 123 | .tl-node.closed-leaf svg { |
| 124 | position: absolute; |
| 125 | top: 0px; |
| 126 | left: 0px; |
| 127 | width: 10px; |
| 128 | height: 10px; |
| 129 | color: #000; |
| 130 | } |
| 131 | .tl-node.sel:after { |
| 132 | content: ''; |
| 133 | position: absolute; |
| 134 | top: 2px; |
| 135 |
+13
-1
| --- src/graph.js | ||
| +++ src/graph.js | ||
| @@ -389,18 +389,30 @@ | ||
| 389 | 389 | if( p.r<0 ) return; |
| 390 | 390 | if( p.u>0 ) drawUpArrow(p,tx.rowinfo[p.u-tx.iTopRow],p.fg,p.id); |
| 391 | 391 | if( p.sb>0 ) drawDotted(p,tx.rowinfo[p.sb-tx.iTopRow],p.fg,p.id); |
| 392 | 392 | var cls = node.cls; |
| 393 | 393 | if( p.hasOwnProperty('mi') && p.mi.length ) cls += " merge"; |
| 394 | - if( p.f&1 ) cls += " leaf"; | |
| 395 | 394 | if( p.f&2 ) cls += " closed-leaf"; |
| 395 | + else if( p.f&1 ) cls += " leaf"; | |
| 396 | 396 | var n = drawBox(cls,p.bg,p.x,p.y); |
| 397 | 397 | n.id = "tln"+p.id; |
| 398 | 398 | n.onclick = clickOnNode; |
| 399 | 399 | n.ondblclick = dblclickOnNode; |
| 400 | 400 | n.onmousemove = mouseOverNode; |
| 401 | 401 | n.style.zIndex = 10; |
| 402 | + if( p.f&2 ){ | |
| 403 | + var pt1 = 0; | |
| 404 | + var pt2 = 100; | |
| 405 | + if( tx.circleNodes ){ | |
| 406 | + pt1 = 14; | |
| 407 | + pt2 = 86; | |
| 408 | + } | |
| 409 | + n.innerHTML = "<svg width='100%' height='100%'viewbox='0 0 100 100'>" | |
| 410 | + + `<path d='M ${pt1},${pt1} L ${pt2},${pt2} M ${pt1},${pt2} L ${pt2},${pt1}'` | |
| 411 | + + " stroke='currentcolor' stroke-width='13'/>" | |
| 412 | + + "</svg>"; | |
| 413 | + } | |
| 402 | 414 | if( !tx.omitDescenders ){ |
| 403 | 415 | if( p.u==0 ){ |
| 404 | 416 | if( p.hasOwnProperty('mo') && p.r==p.mo ){ |
| 405 | 417 | var ix = p.hasOwnProperty('cu') ? p.cu : p.mu; |
| 406 | 418 | var top = tx.rowinfo[ix-tx.iTopRow] |
| 407 | 419 |
| --- src/graph.js | |
| +++ src/graph.js | |
| @@ -389,18 +389,30 @@ | |
| 389 | if( p.r<0 ) return; |
| 390 | if( p.u>0 ) drawUpArrow(p,tx.rowinfo[p.u-tx.iTopRow],p.fg,p.id); |
| 391 | if( p.sb>0 ) drawDotted(p,tx.rowinfo[p.sb-tx.iTopRow],p.fg,p.id); |
| 392 | var cls = node.cls; |
| 393 | if( p.hasOwnProperty('mi') && p.mi.length ) cls += " merge"; |
| 394 | if( p.f&1 ) cls += " leaf"; |
| 395 | if( p.f&2 ) cls += " closed-leaf"; |
| 396 | var n = drawBox(cls,p.bg,p.x,p.y); |
| 397 | n.id = "tln"+p.id; |
| 398 | n.onclick = clickOnNode; |
| 399 | n.ondblclick = dblclickOnNode; |
| 400 | n.onmousemove = mouseOverNode; |
| 401 | n.style.zIndex = 10; |
| 402 | if( !tx.omitDescenders ){ |
| 403 | if( p.u==0 ){ |
| 404 | if( p.hasOwnProperty('mo') && p.r==p.mo ){ |
| 405 | var ix = p.hasOwnProperty('cu') ? p.cu : p.mu; |
| 406 | var top = tx.rowinfo[ix-tx.iTopRow] |
| 407 |
| --- src/graph.js | |
| +++ src/graph.js | |
| @@ -389,18 +389,30 @@ | |
| 389 | if( p.r<0 ) return; |
| 390 | if( p.u>0 ) drawUpArrow(p,tx.rowinfo[p.u-tx.iTopRow],p.fg,p.id); |
| 391 | if( p.sb>0 ) drawDotted(p,tx.rowinfo[p.sb-tx.iTopRow],p.fg,p.id); |
| 392 | var cls = node.cls; |
| 393 | if( p.hasOwnProperty('mi') && p.mi.length ) cls += " merge"; |
| 394 | if( p.f&2 ) cls += " closed-leaf"; |
| 395 | else if( p.f&1 ) cls += " leaf"; |
| 396 | var n = drawBox(cls,p.bg,p.x,p.y); |
| 397 | n.id = "tln"+p.id; |
| 398 | n.onclick = clickOnNode; |
| 399 | n.ondblclick = dblclickOnNode; |
| 400 | n.onmousemove = mouseOverNode; |
| 401 | n.style.zIndex = 10; |
| 402 | if( p.f&2 ){ |
| 403 | var pt1 = 0; |
| 404 | var pt2 = 100; |
| 405 | if( tx.circleNodes ){ |
| 406 | pt1 = 14; |
| 407 | pt2 = 86; |
| 408 | } |
| 409 | n.innerHTML = "<svg width='100%' height='100%'viewbox='0 0 100 100'>" |
| 410 | + `<path d='M ${pt1},${pt1} L ${pt2},${pt2} M ${pt1},${pt2} L ${pt2},${pt1}'` |
| 411 | + " stroke='currentcolor' stroke-width='13'/>" |
| 412 | + "</svg>"; |
| 413 | } |
| 414 | if( !tx.omitDescenders ){ |
| 415 | if( p.u==0 ){ |
| 416 | if( p.hasOwnProperty('mo') && p.r==p.mo ){ |
| 417 | var ix = p.hasOwnProperty('cu') ? p.cu : p.mu; |
| 418 | var top = tx.rowinfo[ix-tx.iTopRow] |
| 419 |