Status report: consultancy team, week 48, 2024

Caolan

  • some hints for rash around iconview weirdness
  • tdf#163777 fix an upstream thing
    https://gerrit.libreoffice.org/c/core/+/177279
  • autotext/config stuff: work on applying core config settings
    • drive by fix seen on checking options dialogs
      https://gerrit.libreoffice.org/c/core/+/177257
    • debug into insertExtensionXcuFile and
      insertModificationXcuFile to see what the difference
      is, and what the undocumented args to the latter need
    • assume that we want to preload in stage 1 and modify config
      in stage 2
    • config is changing, but some options don’t seem to change
    • two problems, some “ConfigItems” are using some flags to not
      listen to changes, there’s a handful of these
    • and then some options are basically cached by SwModule and
      only updated on the next document loaded. The 2nd doesn’t matter
      for this use case if the config is applied before that document is
      loaded.
  • Fix unit tests for the move of ViewSettings to ViewShellBase
  • check some of the results from the new crashtesting reload of
    exported output
    → bug 164056 – Assertion `GetPageFrame().GetPhyPageNum() == GetPgNumOfCollected(nIdx)' failed
  • always create an empty template dir when using --without-templates
    to make rashes template thing easier
    https://gerrit.libreoffice.org/c/core/+/177353
  • autotext/config
  • import shared config configmgr xcu to 2nd gen forkit with
    insertExtensionXcuFile and tweak the important ConfigItem’s to
    listen for changes
    https://gerrit.libreoffice.org/c/core/+/177371/3
    https://gerrit.libreoffice.org/c/core/+/177499/2
  • crashtesting, test an example case where we detect that we
    exported a rtf that we couldn’t import
    https://gerrit.libreoffice.org/c/core/+/177442
  • autotext/config check calc config, explore what happens if
    there is a setting that tries to change what is in coolconfig.xcu
  • that is ignored, insertExtensionXcuFile inserts changes at
    the “extension” layer, which won’t override such changes, looks
    like insertModificationXcuFile is the better route to achieve that,
    but seems to require an arg of specific node paths it is allowed
    to change.
  • autotext/config get insertModificationXcuFile doing something
    sensible to change core configmgr settings, needs a little core
    change
    https://gerrit.libreoffice.org/c/core/+/177372
  • I think we probably don’t want to save/export core’s config
    settings changes. Let those only be controlled with
    the iframe thing as opposed to various randomish stuff that
    ends up in core config
  • check another failure to load our own export
    https://gerrit.libreoffice.org/c/core/+/177539
  • core co-24.04 branch crashtesting run test, results at:
    Index of /crashtest/e393a739fa890aeb77f189b62de4356043211490/
    • 204 core dumps
  • autotext/config work on getting the individual user core
    config setting applied, want that to happen before the document
    is loaded but after the childprocess is attached/known. Otherwise
    we have the issue of SwModule etc using cached values from before
    config change, which is not insurmountable but likely edge-case
    prone.
    • serve and fetch user config
    • log failure if saveBodyToFile cannot open file, annoyingly
      logs seemed to be error free when nothing actually got saved on
      using the wrong path
    • best thing looks to split acquiring childprocess and
      loading document and insert config before loading document, at
      least for now to get up and running
    • TODO, complete this step

Mike

  • Adapt insertion dialog to support multimedia files
  • Deadlock in LibreOffice
    • Applied another “in a separate thread” workaround. The interactions between code paths locking several mutexes, and possibly called out of any order (e.g., from an external process code calling our COM object’s Release at any moment) makes it ~impossible to assume anything about the status of mutexes…
  • Text rendering issues when exporting Writer documents with embedded SVGs to PDF
    • agreed that the non-AA rendering change is fair
    • found a regression in AA rendering - it uses ClearType, which is indeed wrong
    • A simple case; re-used the GetUseFontAAFromSystem as an indicator of “doing file output” - done in https://gerrit.libreoffice.org/c/core/+/177402
  • “Read-only lock-down mode for the desktop”
    • LibreOffice 6.4: Release Notes - The Document Foundation Wiki mentions “LockEditDoc” - SfxObjectShell::isEditDocLocked
    • Add the media descriptor property unconditionally in the read-only mode?
    • Have a ~working stage 1, looking to disable start center (BackingComponent) icons and UNO items responsible for new document creation
  • Collabora destroying formulas
    • Some mentoring (Pranam)
    • I believe that we need to pass the “expected function” down the stack (set a member in SmOoxmlImport)

Tomaz

Analyze and close gaps to PDF-2.0

  • PDF 2.0 encryption (Version 5, Revision 6)
    • Slowly getting the patches into master and cp-24.04
  • Checking PDF 2.0 compliance
    • Created an sample document with many different graphic elements (gradients, line dashes and dots, transparency, …) and exported to PDF 2.0
    • checked in various PDF tools / viewers - most importantly Adobe Acrobat Viewer
    • also pdfcpu, which can validate a PDF document, but PDF 2.0 is very basic for now
  • Adding PDF 2.0 to the UI
    • Added common PDF Version combo box, which has - PDF/A(1-4), PDF 1.7, PDF 2.0 as possibilities
    • Adjusting the dialog to no allow certain features that are deprecated (especially for Form support)
  • Started looking into signing

PDF Form filled in PDF are not seen when Printing from COOL

  • selecting “use reference XObject” does help but not a proper solution
  • issue is the form info is not copied over to the exported PDF
    • we don’t copy /Annots other than “/Subtype” = “Link”
    • added also to copy “Widget” subtype and it fixes a test document
    • but not the ticket document - issue is that the “/Annots” array is a reference to an object - not the array directly
    • also fixed that and now the document shows correctly
    • but also needed is “/AcroForms” dict with a reference to all the “/Annot” objects that are forms
    • WIP … need to add that too