Status report: consultancy team, week 11, 2024


  • consider entire doc
    reformatting on apparently small changes, but the cursor is in
    the header/footer so its natural that the whole doc regens
  • which is the same as:
  • Clear boundary between header and body of text · Issue #5298 · CollaboraOnline/online · GitHub
  • how about we draw the indicators if the header/footer is active
  • json opt for theme/doc colors went awry
  • move rng from interpreter to interpretercontext
  • calc opt, discover that we are unnecessarily
    inc/dec-ing atomic counts via a temp boost::intrusive thing which
    is a nice win for all calculations
  • tdf#160193 poke at possible regression wrt full screen presentations
  • windows opt build with symbols, but TDF doesn’t provide pdbs
  • start a windows build
  • which turns out to a pain
  • 2022 latest release has a bug (Mike K. reported, and MS has
    fixed but not released yet)
  • if I had ever installed an earlier version I could roll back
    to the working 17.9.0, but I haven’t so I can’t
  • install 2019 instead, that works
  • poke at a possible calc regression wrt actively edited cell text
    placement, but I don’t think it is a regression, just that
    centered text that doesn’t fit in a cell will expand to the cells to
    the left and right when edited, and then centers within that new
  • look over power query work to date
  • work on read only unlocked mode for number formatter
  • NumberFormatter is really a rat’s nest of:
    • a bunch of stuff specific to the “current language” which
      updates according to that current language
    • a data store of number formats
    • some other random bits that affect behaviour, some of which
      could be passed explicitly to the methods that depend on them
  • work on read only unlocked mode for number formatter
    • calc does a lot of obfuscating of the NumberFormatter, but it
      looks doable to let each thread have its own current-language
      blob “SvNFLanguageData” and have a shared “SvNFFormatData” and
      drive it read-only during threaded calculation


** Word OLE causes ressource leak in winword.exe
*** follow-up hang… :frowning:

  • Fixed a UITest failing on Windows (
  • Calc: Strange behavior after adding sheet while in chart wizard (GH#8443)
    ** Returned to it
    ** Reimplementing using SfxUndoContext
    ** Word OLE causes ressource leak in winword.exe
    *** Need to release OLE-related mutex when calling more OLE methods - added ExecUnlocked convenience function
    *** Immediately started crashing
    *** Racing access to the document model from the request thread and main thread doing an idle re-layout
    *** Tried locking SolarMutex - doesn’t help, it gets released right and left
    *** Need to delay idles
    *** Have a patch, adding a Scheduler lock for idles
    *** Turns out, that the idle started before DocumentLayoutManager::DelLayoutFormat started, and is waiting for SolarMutex; need a way to make sure that no nested message loops are running
    ** Word OLE causes ressource leak in winword.exe
    *** Hangs in UITests on Linux
    *** Looks like SolarMutex isn’t released, which is needed for IdlesLockGuard
    *** Added a releaser to Application::Execute
    *** merged, backporting
    *** 7907b2e51eda needed
    *** Tests passed
  • Conditional formatting rule priority needs to match Excel
    ** tdf#160117 bisected
    *** Backported to branches
  • Calc: Strange behavior after adding sheet while in chart wizard (GH#8443)
    ** Fixed wrong understanding of “offset” used in SfxUndoContext - it’s 1-based index, despite its name
    ** Seems like I finally got it right - it’s actually an offset from current position in the undo array (that’s what IsViewUndoActionIndependent returns, using GetUndoAction, which uses its argument as an offset, too). 0-based actually.
    ** Updated
    ** Made SfxUndoManager::UndoMark a bit more generic - moved some logic back to ScTabViewShell::DialogClosedHdl
    ** Not sure if I should worry about possible redo entries - kept the code just in case
    ** Tested; merged; backporting
    ** Word OLE causes ressource leak in winword.exe
    *** Another problem / deadlock
    *** Debugging - seems unrelated
    ** Word OLE causes ressource leak in winword.exe
    *** Really unrelated
    *** Quickly fixed (2 hrs total)
    *** Found a related JUnitTest failure fix -
  • Upstream: fixing my regressions
    ** tdf#160075 - key toggle of pointer focus to Main Menu has gone missing, toggle continues (Win)
    ** tdf#160020 - Mnemonics underlines not visible anymore in gen VCL plugin


Impress: Font size changes in textbox when editing PPTX

  • Found the issue causing the issue in this ticket
    • adjusting the textbox size a bit to get better fix with MSO was not a good idea
    • causes that the textbox when updated is not the same size and is causing the scaling algorithm to run when it shouldn’t
    • which then causes to calculate the wrong scaling
    • removed the “adjustment”
  • Working on better fidelity with MSO by moving the scaling algorithm into EditEng
    • refactoring the “CreateLines” function into its own class
    • this is needed as the CreateLines function is huge and would be best to split it in smaller better controllable chunks
    • at the same time I can get familiar with the algorithm
    • each for paragraph we create lines (multiple - depending if the line is greater than the width)
    • run the algorithm multiple times and track if the text box height was exceeded
    • if it was, decrease font size or scaling and repeat
    • WIP