Paginaweergave hermeet afbeeldingen niet wanneer document of projectpad verandert #1652
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#1652
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
PagedDocumentView bepaalt _hasImages één keer uit de initiële Markdown. Na het invoegen van de eerste afbeelding blijft de meetboom daarom verdwijnen na de synchrone eerste meting; de later gedecodeerde afbeeldingshoogte kan de pagina-einden niet corrigeren. Een gewijzigd projectPath invalideert de meting evenmin, terwijl hetzelfde relatieve beeld daardoor ineens wel of niet resolveerbaar kan zijn.
Reproductie
Verwacht
De aanwezigheid/resolutie van afbeeldingen wordt na Markdown- en projectpadwijzigingen opnieuw bepaald en de pagina's worden na decode opnieuw gemeten.
Technische aanwijzing
lib/widgets/reader/paged_document_view.dart declareert late final bool _hasImages. didUpdateWidget reset wel enkele meetwaarden maar niet dit veld en vergelijkt projectPath niet.
Gevonden bij audit van commit
d439638c6b.Triage: accepted
Bevestigd tegen
main(e93ef205c).lib/widgets/reader/paged_document_view.dartdeclareertlate final bool _hasImages, één keer bepaald uit de Markdown bij het opbouwen.didUpdateWidgetzet_blockHeights,_measuring,_notes,_blockTextsen_timelinePaginationopnieuw, maar dit veld kán het niet resetten (het isfinal) enwidget.projectPathstaat niet in de vergelijking.Twee gevolgen, beide echt:
buildlaat de meetboom vallen na de eerste ronde. De later gedecodeerde beeldhoogte bereikt de paginering dus nooit; de einden blijven op de plaatshouderhoogte staan.Opslaan alsnaar een andere map verandertprojectPathzonder hermeting, terwijl hetzelfde relatieve pad daar wél of juist níét oplost — en dus een andere hoogte krijgt.Oplossingsrichting
_hasImagesvanlate finalnaar een gewoon veld, opnieuw bepaald indidUpdateWidgetnaast_blockTexts, enwidget.projectPath != old.projectPathtoevoegen aan de resetvoorwaarde. Let op dat de reset dan ook_noteHeightsmeeneemt — die hangt aan dezelfde meetronde.Regressietest (verplicht)
test/paged_document_view_test.dart:findop de meetlaag) en het aantal vellen volgt de latere hoogte;projectPathgewijzigd → hermeting, geen behoud van de oude hoogtes.Kosten
Klein: één bestand, twee tests.
Prioriteit
Middel. Het schuift pagina-einden ten opzichte van de druk, en dat is precies waarvoor deze weergave bestaat.