Paginaweergave telt eindnoten niet mee in de gemeten documenthoogte #1653
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1653
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?
Probleem
Bij footnotePlacement=document voegt DocumentMarkdownView de eindnotenlijst buiten de blockWrapper toe. PagedDocumentView meet alleen blockTexts en krijgt daardoor geen hoogte voor de eindnoten. Lange eindnoten kunnen voorbij de laatste berekende pagina vallen en worden afgeknipt of onbereikbaar.
Reproductie
Verwacht
De eindnoten tellen als gewone documentblokken mee en veroorzaken zo nodig extra pagina's.
Technische aanwijzing
lib/widgets/reader/paged_document_view.dart:_measure gebruikt blockCount = _blockTexts.length en footnotesAtEnd=true, maar alleen widgets via blockWrapper leveren gemeten hoogtes.
Gevonden bij audit van commit
d439638c6b.Triage: accepted
Bevestigd tegen
main(e93ef205c).lib/widgets/reader/document_markdown_view.darthangt_footnoteList(...)buiten_wrapped(...)in de kolom.blockWrapperziet die lijst dus nooit, enPagedDocumentView._measuretelt alleen_blockTexts.lengthplus (bij noten-op-de-pagina) de losse noten. BijfootnotePlacement=documentis_notesOnPageonwaar, gaatfootnotesAtEnd: truemee, en heeft de eindnotenlijst geen enkele gemeten hoogte. De paginaverdeling weet niet dat die tekst er is.Oplossingsrichting
De eindnotenlijst een eigen blokindex geven en door
blockWrappersturen:_wrapped(blocks.length, _footnoteList(...)). Dan meet de paginaweergave hem als elk ander blok en volgt de paginering vanzelf.blockCountin_measure/_onMeasuredwordtblocks.length + 1wanneerfootnotesAtEndén er noten zijn.Alternatief — de lijst apart meten in de paginaweergave — is slechter: dan staat dezelfde opmaak op twee plekken en lopen scherm en druk opnieuw uit elkaar.
Nuance die in het werk hoort: één blok voor álle eindnoten betekent dat de lijst alleen op blokniveau over vellen breekt.
documentPageOffsetsverdeelt een te hoog blok al over meerdere vensters (lib/services/document_pagination.dart, de takheight + reservedFor(index) > pageHeight), dus de noten blijven leesbaar. Per noot een blok is netter en is een grotere ingreep; niet nu.Regressietest (verplicht)
test/paged_document_view_test.dart:footnotePlacement=documentmet genoeg noten voor een extra vel → het aantal vellen groeit mee en de laatste noot valt binnen het laatste vel.Kosten
Twee bestanden (
document_markdown_view.dart,paged_document_view.dart), plus test. Controleer ofDocumentMarkdownView.blockTextsmee moet groeien — de zoek-/ankerindexen hangen aan dezelfde nummering.Prioriteit
Middelhoog: inhoud verdwijnt zonder melding uit beeld.