Documentoverzicht: kopnavigatie gebruikt verkeerde positie bij stijlmetadata #2465
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
release-blocker
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#2465
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Gebruikersprobleem
Een tekstverwerker moet bij een klik in Overzicht de aangeklikte kop en caret exact tonen. Bij documenten met een stijlblok vóór de tekst kan de navigatie te ver springen of op het einde landen. Dit is een codebevinding; een live reproductie ontbreekt nog.
Oorzaak op origin/main (
334604137)DocumentEditorScreen bewerkt alleen document.body in _controller (lib/widgets/document_editor_screen.dart:225-234), maar _scrollToHeading bouwt het overzicht uit document.source en gebruikt entry.offset rechtstreeks als body-offset (regels 347-357). buildMarkdownOutline telt de frontmatterregels in de offset mee (lib/models/markdown_outline.dart:19-49). De rail bouwt eveneens uit source (lib/widgets/parts/document_editor_toolbar.dart:823); interne koplinks nemen dezelfde route. Dit is anders dan het eerder gesloten #2141, dat een wisselende actieve markering tijdens typen betrof.
Oplossing
Laat navigatie, actieve kop, zoek-/linkankers en editorselectie op één coördinatenstelsel werken: bouw het documentoverzicht uit body of vertaal source-offsets expliciet naar body-offsets. Zorg dat de Pagina's-, Bron- en Visueel-stand dezelfde kop aanwijzen. Geen bestandsformaatwijziging.
Acceptatie
Regressietest met theme-frontmatter en minstens drie koppen: klik elke kop in Overzicht, volg een interne koplink en controleer exacte caret/zichtbare kop in Bron en Visueel, ook na opslaan en opnieuw openen. Laat de test eerst op de oude route falen.