Documenteditor: geplakte opsommingen en nummering verliezen opmaak in grafische modus #2439
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#2439
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?
Melding
Bij kopiëren en plakken van een lijst in een document in de grafische/visuele modus verdwijnen bullets of nummering. De tekst komt wel mee, maar de lijststructuur niet.
Verwacht gedrag
Een opsomming blijft een opsomming en een genummerde lijst blijft genummerd na plakken en na opslaan/opnieuw openen. Behoud waar mogelijk ook inspringing, geneste niveaus en het begin-/vervolgnummer. Plakken op de visuele cursor mag bestaande tekst of lijststructuur eromheen niet beschadigen.
Onderzoek
Acceptatie
Achterhaald voor deze melding: de bron is een ander OciDeck-document. Zie de bevestigde interne oorzaak in de volgende reactie.
Onderzoek (2026-10-15): de verliesplek zit voor ten minste één reproduceerbaar klembordformaat vóór de Quill-invoeging.
resolveClipboardMarkdownkiest klembord-HTML, maarhtmlClipboardToMarkdownherkent lijsten via semantische<ul>/<ol>/<li>-tags. Een proef met<ul><li>een</li><li>twee</li></ul>leverde `- eenop. Dezelfde tekst als twee-alinea's leverdeeentwee
op; die CSS-lijstaanwijzing wordt door de converter genegeerd. Als de platte-tekstvariant ook alleeneentwee
bevat, kan de fallback de verdwenen bullets of nummering niet herstellen. Een afzonderlijke proef metoperationsForVisualPaste+ QuillreplaceText` bevestigde dat aanwezige Markdown-bullets en nummering wel als lijst-attributen in het document belanden en de Markdown-roundtrip overleven. Reparatierichting: ondersteun aantoonbaar voorkomende niet-semantische HTML-lijsten van bronapps veilig in de klembordconversie, met een test op het daadwerkelijke bronfragment en een visuele roundtrip-test. Het exacte formaat van de melding is nog niet bevestigd: bronapp, OS en liefst een klein voorbeeld ontbreken. Een lijst die door de bron uitsluitend als ongemarkeerde platte tekst wordt aangeboden, is zonder extra aanwijzing niet betrouwbaar van gewone alinea's te onderscheiden.Correctie op mijn eerdere commentaar: de melding gaat over kopiëren binnen OciDeck. De HTML/CSS-hypothese voor externe bronapps verklaart deze melding niet.
Bevestigde oorzaak in de interne route:
WysiwygNotesField._copySelectionroeptvisualClipboardPayloadaan. Inlib/utils/visual_selection_markdown.dartkiest die functie alleen_markdownOfRange(met lijst-attributen) als de selectie exact op het begin van een Quill-regel start. Begint de selectie één teken verder, dan kiest zijdocument.getPlainText(...)voor de hele selectie. Daardoor verliezen ook volledig geselecteerde volgende lijstitems hun bullet of nummering. Bij het plakken zietresolveClipboardMarkdownalleen die platte tekst;operationsForVisualPastemaakt er één alinea van.Gerichte proef in een document met twee bullets: selectie vanaf de eerste regelstart gaf
- eerste\n- tweedeen twee Quill-bulletattributen. Dezelfde selectie vanaf één teken later gaferste\ntweedeen één gewone tekstbewerking zonder lijst-attributen. De tijdelijke proef is verwijderd; er zijn geen productbestanden aangepast.Reparatie: verwerk een gedeeltelijke eerste regel als tekstfragment, maar serialiseer de daaropvolgende volledig geselecteerde regels met hun eigen blokopmaak. Behoud ook een gedeeltelijke laatste regel zonder ongewenste extra lijstregel. Voeg regressietests toe voor bullets én nummering, gedeeltelijke selecties, nestniveaus, takenlijsten, en plakken plus opslaan/opnieuw openen. Controleer daarnaast of kopiëren via het contextmenu dezelfde route gebruikt als Cmd/Ctrl+C.
Gemerged in #2446 (merge-commit
5fa2584504). Gecontroleerd met make check, make check-secrets en make sast; documentatie bijgewerkt (FILE_FORMAT, USER_GUIDE, PRIVACY, CHANGELOG).