Status report: consultancy team, week 23, 2023


  • Meeting document got stuck in some mode where every
    key stroke is a full document invalidation
  • debug all day
    • normally:
      a) lok sets its own interaction handler on load
      b) Then at framework/source/loadenv/loadenv.cxx:1137
      because that handler supports XInitialization we show the
      window early
      c) that happens to be before the menubar is set
      d) so the menubar changes the size of the window after
      it is shown
      e) so Window::ImplPosSizeWindow calls
      ImplInvalidateFrameRegion(nullptr, InvalidateFlags::Children)
      f) which sets ImplPaintFlags::PaintAllChildren on the PaintFlags
      of the toplevel WorkWindow
      g) which means that when a SwEditWin calls PaintImmediately vcl
      sees that flag on its WorkWindow grandparent and calls
      ImplCallPaint with the grandparent, not the SwEditWin.
      It happens that the grandparent has no LokId so that does
    • after some time the autosave will kick in, and on save a new
      interaction handler is set for the duration of save and then the
      interaction is cleared. Leaving no XInteraction set, not the
      original of a). Then if someone joins after that save, there is
      no XInteraction handler, and a new default one is created, that
      does not support XInitialization so the ordering is different and
      the WorkWindow does not have PaintAllChildren set and in g)
      SwEditWin::PaintImmediately calls SwEditWin::ImplCallPaint
      not WorkWindow::ImplCallPaint and that one does an explicit
      complete document invalidation
  • none of this is really intentional and its all very fragile


  • Improvements for the LanguageTool integration
    • Improved deduplication and sorting of the languages in the Edit Modules dialog
  • Upstream
    • Fixed an own regression - tdf#154349


  • Continued working on the two Draw Dark mode bugs


Add basic interoperable document theming to Calc & Writer

  • Color picker core bits added and merget to cp-23.05
    • to send the color palette via JSON
    • handed over to Szymon to use that and adapt the current color
      picker in online to use it
  • Fixed the bug that the after choosing a color in the picker, the
    dialog showed up
    • it is required now that the color UNO service (i.e. .uno:FillColor)
      has a “Color” argument
    • not all colors had that … (.uno:LineColor, .uno:FillColor didn’t)
      • mainly because type like XColorItem, XLineColorItem and
        XFillColorItem did not implement it
      • added that and also added “ComplexColorJSON” argument so it is
        possible to send the theme color data
  • Fixed theme import and export
    • grab bag has hidden some things when exporting
      • tests passed because the data was taken from the grab bag
      • but problematic when a change occurs
    • also fixes at importing so the values are correctly converted
    • Theme export wasn’t used in writer - added that
  • Online color picker sending the UNO command to core with the theme
    data attached
    • Szymon improved the online color picker to handle theme colors, but
      handed that back to me to add the missing UNO command
    • added that, but some online UI test fail now - need to fix that