fix: Abhängigkeits-Kanten laufen hinter den Knoten (D41-Nachtrag 2)

Die Basis-Kanten lagen schon richtig; „drüber gemalt" wurde allein die
Hervorhebung des ausgewählten Knotens (`svg.dep-front`, z-index 4). Eine
durchgezogene Linie quer über einen fremden Knoten durchstreicht dessen
Titel — und beim Tippen wechselt die Hervorhebung mit jeder Zeile.

`dep-front` entfällt; hervorgehobene Kanten hängen zuletzt in derselben
hinteren Ebene, liegen damit über den übrigen Kanten und unter jedem
Knoten. Export und Druck waren nie betroffen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-24 15:19:35 +02:00
co-authored by Claude Opus 5
parent 6881475193
commit 6d58164577
6 changed files with 78 additions and 13 deletions
+10 -5
View File
@@ -426,18 +426,23 @@ function drawDepLinks(){
cx:(r.left - outRect.left + r.width/2)/z,
cy:(r.top - outRect.top + r.height/2)/z}; };
const w = outRect.width/z, h = outRect.height/z;
/* EINE Ebene, und die liegt hinter den Knoten (D41-Nachtrag 2): Die Kanten
laufen durch fremde Knoten hindurch, statt über sie hinweg. Die
hervorgehobenen werden zuletzt eingehängt — damit liegen sie über den
übrigen Kanten, aber weiterhin unter jedem Knoten. */
const back = overlaySvg('dep-overlay dep-back', w, h);
const front = overlaySvg('dep-overlay dep-front', w, h);
const hi = activeDepNode();
const hoch = [];
for(const [from, to] of edges){
const hl = hi && (from === hi || to === hi);
const c = depCurve(rect(from), rect(to));
const layer = hl ? front : back;
layer.appendChild(svgEl('path', {class:'dep-edge' + (hl ? ' hl' : ''), d:c.d}));
layer.appendChild(svgEl('path', {class:'dep-arrow' + (hl ? ' hl' : ''), d:depArrow(c.end, c.ctrl)}));
const kante = svgEl('path', {class:'dep-edge' + (hl ? ' hl' : ''), d:c.d});
const spitze = svgEl('path', {class:'dep-arrow' + (hl ? ' hl' : ''), d:depArrow(c.end, c.ctrl)});
if(hl) hoch.push(kante, spitze);
else { back.appendChild(kante); back.appendChild(spitze); }
}
for(const p of hoch) back.appendChild(p);
out.insertBefore(back, out.firstChild);
if(front.childNodes.length) out.appendChild(front);
}
/* Hervorhebung folgt dem Fokus; die Basis-Kanten selbst ändern sich nicht. */
out.addEventListener('focusin', drawDepLinks);