Welcome to The Document Foundation Planet

This is a feed aggregator that collects what LibreOffice and Document Foundation contributors are writing in their respective blogs.

To have your blog added to this aggregator, please mail the website@global.libreoffice.org mailinglist or file a ticket in Redmine.

19 May, 2023

[en] Michael Meeks: 2023-05-19 Friday

21:00 UTC

  • Bits of mail chewage; packed and drove Simon N to Darsham, met up with lots of Men of Faith; chatted & drank ale in the sun; BBQ, and a stew from Mihai until late.
  • Slept in the Darsham station - a combination of train vibration, and the more impressive lorry-on- level-crossing vibration - making the bunk-house snoring experience more amusing.

18 May, 2023

[en] Michael Meeks: 2023-05-18 Thursday

21:00 UTC

  • Breakfast with the parents; bid 'bye to them. Technical planning call, COOL community call, lunch, 1:1 with Miklos, E-mail & partner call. Booked flight & hotel in Berlin.
  • Spent the evening on Psalm 1 for Sunday; really encouraging to pull it all together & to delightful to get a better understanding of the passage.

[en] Björn Michaelsen: About

00:00 UTC




photo: All rights reserved.

hanseatic productivity liberator, LibreOffice guy, sometimes grumpy, always a troll

PGP-Key:  0xc8be3f1f92cb264617fe361ddcd9c191e48dbf5f

blog -- fediverse -- twitter (inactive)

posts on:

All views expressed on this blog are those of Bjoern Michaelsen and do not necessarily reflect the views of any other entity, including current and former employers.

17 May, 2023


LibreOffice 7.6 will be released as final in mid August, 2023 ( Check the Release Plan ) being LibreOffice 7.6 Alpha1 the first pre-release since the development of version 7.6 started in mid December, 2022. Since then, 4670 commits have been submitted to the code repository and more than 754 bugs were set to FIXED in Bugzilla. Check the release notes to find the new features included in this version of LibreOffice.

LibreOffice 7.6 Alpha1 can be downloaded for Linux, macOS and Windows, and it can be installed alongside the standard version.

In case you find any problem in this pre-release, please report it in Bugzilla ( You just need a legit email account in order to create a new account ).

For help, you can contact the QA Team directly in the QA IRC channel or via Matrix.

LibreOffice is a volunteer-driven community project, so please help us to test – we appreciate it!

Happy testing!!

Download it now!

11 May, 2023


Recently added support in LibreOffice towards 7.6 for GNOME logout inhibit if LibreOffice has open documents with unsaved changes.

10 May, 2023


General Activities

  1. Rafael Lima made smaller and improvements to menus, dark mode support, shortcuts and accelerators
  2. Adolfo Jayme Barrientos made some tweaks to wordings in UI and Help
  3. Olivier Hallot (TDF) improved help for regular expressions, Calc statistics features, Formatting Aids options, Calc Input options, Calc’s INDEX() function and added a help page documenting new command line PDF export options. He also made many refactorings and cleanups in Help.
  4. Seth Chaiklin made many text improvements both in the UI and in Help related to numbering, indexes and captions
  5. Stéphane Guillou (TDF) improved help for Calc’s Validity feature and Customize dialog
  6. Juan C. Sanz made it so data in Firebird embedded databases are saved automatically
  7. Miklós Vajna (Collabora) worked on multi-page floating tables in Writer
  8. Jean-Pierre Ledure worked on the ScriptForge library
  9. Szymon Kłos and Pranam Lashkari (Collabora) worked on jsdialog used by Collabora Online
  10. Eike Rathke (Red Hat) fixed an issue with Writer fields mishandling datetime when using a locale with comma as decimal separator as well as a datetime value formatting issue, fixed inconsistencies and inaccuracies in Calc rounding functions, fixed a bug in the display of Add-in function names in a localised context, made Calc’s RANK() function more robust and fixed a regression making COUNTIF() and COUNTIFS() functions produce incorrect results in some cases
  11. Tomaž Vajngerl (Collabora) continued polishing support for document themes and the text auto-fit algorithm in Impress
  12. Julien Nabet added support for Ukrainian letters in bullets and numbering, fixed many issues with XML forms and fixed an issue with transparent objects not being displayed in exported GIFs. He also fixed crashes and debug assertions
  13. Andreas Heinisch fixed inserting line breaks to Calc cells with a macro, improved Heading Numbering dialog, added a timeout (debouncer) to Calc’s Auto Filter search input to improve performance, made Calc cell reference type cycling more robust and made Quick Find reuse the last used search term
  14. László Németh improved handling of bookmarks in the Navigator and DOCX export of new change-tracked tables
  15. Xisco Faulí (TDF) made a dozen test-related changes and fixed many crashes
  16. Michael Stahl (allotropia) continued improving the export of accessible PDFs, made it so mime types of media files are guessed based on their file names, added an option to Load/Save – General that makes LibreOffice load the view position with the document even if it was saved by a different user and made WebDAV file locking more robust
  17. Mike Kaganski (Collabora) continued polishing table indentation in exported HTML files, fixed a section layout issue after copying and pasting and fixed antialiasing property (negative) not being honoured when exporting graphics. He also fixed crashes and made many code cleanups and optimisations
  18. Caolán McNamara (Red Hat) made the link in Crash Report dialog clickable and added new file format fuzzers. He also made many UI-related improvements and crash fixes
  19. Stephan Bergmann (Red Hat) added a –with-coredumpctl option to obtain core dumps of crashed tests from coredumpctl. He also

05 May, 2023


Flamerobin 0.9.7 Snapshot released with a few Firebird 4 fixesInt128 does not respect scale (Issue #166) Make Domain::dataTypeToString able to process fb4 types. fix some bugs converting int128/dec34/dec16 to string replace CMAKE_SOURCE_DIR to CMAKE_CURRENT_SOURCE_DIR when copy templates in CMakeList.txt by @Khalyutin in #310

03 May, 2023


Il 3 maggio si celebra in tutto il mondo la Giornata Internazionale della Libertà di Stampa, un’occasione per riflettere sull’importanza dei principi in difesa della libertà di parola e il diritto all’informazione, del pluralismo e dell’indipendenza dei media. Questi diritti sanciti dalla Costituzione Italiana e dalle principali democrazie di tutto mondo assumono un significato di […]


Writer now has continued steps to handle tables that are both floating and span over multiple pages.

This work is primarily for Collabora Online, but is useful on the desktop as well. See the second post for background.


The previous post finished with cursor traversal: if a floating table is on both page 1 and page 2, then you expect Writer to be able to move between the rows of the table, even if those are not on the same page. In this post, we'll see what else started to work during the past month.

Results so far

The feature is enabled by default and now the DOCX/DOC/RTF import makes use of it if. This allows stress-testing the layout code with complex user documents, hopefully with the found breakage fixed before it would be released in a stable version.

On the positive side, core.git repository has has 19 files now which are focusing on correct handling of floating tables. Also, there are additional tests that quickly build a specific multi-page floating table in the memory and do some operation on it, e.g. delete the last row and assert what happens.

Here are some screenshots from the effort so far:

Editing of floating tables: delete the last row of a table with 3 rows

The first case is about editing: if a floating table had a first, middle and last page, then deleting the last row of a table lead to incorrect layout, which is now fixed.

Selection & dragging of split floating tables

An odd problem is that the vertical position of tables on non-first pages is generated by the layout, which means that normal drag&move to position them won't work, leading to annoying jumps. This is now fixed by selecting the first (master) fly frame on click, and you can always reposition that table (even vertically.)

Bad binary DOC import

Once DOCX import/export was there, the next step is binary DOC import, which gives us access to a larger corpus of test documents, to stress-test the layout code. This shows how the binary DOC import looked before the work.

Good binary DOC import

And this one shows how it works now.

Good binary DOC export

DOC import is not enough, e.g. Collabora Online will save your documents automatically, so we really want to export everything that is possible to import. Here is how good DOC export looks like in Word.

In-footer floating table

At this point the first crashtest results arrived (we try to import about 280 thousand documents and see what crashes). The first problem was floating tables in footers. Well, we should not try to split such tables (even if they don't fit): adding one more page does not give us more footer space.

Bad RTF import

Similar to the DOC filter, RTF can express floating tables. Here is how we did a bad rendering of an RTF document before.

Good RTF import

And here is how

30 April, 2023


Desde la Comunidad hispana de LibreOffice tenemos el gran placer de participar en el congreso esLibre que se celebrará en Zaragoza (España) el 12 y 13 de mayo. Será un gran motivo para encontrarnos en persona con diferentes miembros de …

14 April, 2023


El día de mañana, la comunidad hispana de LibreOffice celebrará una reunión en línea a partir de las 20:00 UTC.

En este sentido queremos rescatar las palabras del Lic. Carlos Parra Saldivar de Cuba nos decía que “poder escuchar

13 April, 2023


Thank you to all who attended our COOL Days 2023 meet up in Cambridge on 28th & 29th March. We had a great time organising the event for our partners, the Collabora team and open source community. It was a great success!

If you didn’t manage to make it to Cambridge, check out our 90 second YouTube short which shows a quick overview of the fun we had.

COOL Days was based at Clare College, the second oldest of the 31 historic Cambridge Colleges. We started off our packed schedule full of lightning talks, partner workshops and team building with a meal at Millworks on the Monday evening (famous for it’s delicious Shawarma!)

The Technical Day

Is it possible to fit 45 lightning talks into one day? Yes!

We were live from Cambridge all day on Tuesday 28th March. It was wonderful to see so many presentations of all the work that’s been developing over the last 6 months by the Collabora Online team, community and partners all across Europe and beyond.

For those that would like to re-watch our COOL Days live stream, you can find it on our YouTube channel.
To download the slides from the Technical Talks, head to our github.


Partner Day

Wednesday 29th March was our Partner Day, full of workshops and discussions around our collaborative Partner Programme. It was a privilege to have Simon Phipps and Robert Riemann kick off the day with their insights into the importance of data protection in Europe and future of open source.

Throughout the rest of the day we had many open discussions with our Partners about how we can support them and work together even more successfully and talked about the development road map for 2023.


LibreOffice Technology Hackfest

On Wednesday 29th March we also held a Hackfest for those who are involved in the LibreOffice Technology community. Many hours were spent hacking in person, learning from one another and solving bugs with other members of the community.


Social Events

We made sure there were plenty of opportunities for team building including a treasure hunt around Cambridge, punting down the river Cam and of course, some delicious meals together. On the final evening we dined at Ridley Hall which for many, gave them a taster of what dining at Hogwarts might be like – minus the owls!


You may have seen some of our team live tweeting from the event – search #COOLDays and follow us on Twitter, Mastodon and Linkedin to see updates from events and conferences throughout the year.

We hope to see you at our next COOL Days event.

In the meantime, keep an eye out for where we’ll be next:

Nextcloud Enterprise Day

June 13, 2023 – Munich, Germany

LibreOffice Conference 2023

September 20 - 23, 2023 – Bucharest, Romania

SSCon 2023

November 7-9, 2023 – Berlin, Germany

The post Recapping COOL Days 2023: The Event that Rocked Cambridge! appeared first on Collabora Office and Collabora Online.

10 April, 2023


General Activities

  1. LibreOffice 7.5.1 was announced on March 2
  2. LibreOffice 7.4.6 was announced on March 9
  3. LibreOffice 7.5.2 was announced on March 30
  4. Rafael Lima continued polishing dark mode support, made it so Calc solver settings are saved to file, including XLSX files and made some smaller tweaks to the UI and Help
  5. Adolfo Jayme Barrientos made some tweaks to wordings in UI and Help
  6. Olivier Hallot (TDF) corrected help for Calc’s INDEX() function, updated menu paths and made many refactorings and cleanups in Help. He also added better UNO API error messages for Calc sheet insertion and improved extended tooltips
  7. Seth Chaiklin made many text improvements both in the UI and in Help related to heading numbering, indexes, captions and styles
  8. Alain Romedenne corrected parameter names for Basic functions in Help
  9. Sophia Schröder made many cleanups in Help markup, with Christian Lohmaier (TDF) assisting in mass replacements
  10. Juan C. Sanz added a help page for Firebird external connection
  11. Angelle Leger created a help page for zoom in Calc
  12. Stanislav Horacek made small corrections in ScriptForge and regular expression Help pages
  13. Miklós Vajna (Collabora) worked on multi-page floating tables in Writer
  14. Jean-Pierre Ledure worked on the ScriptForge library
  15. Szymon Kłos and Pranam Lashkari (Collabora) worked on jsdialog used by Collabora Online
  16. Eike Rathke (Red Hat) fixed issues brought up by Ady during review of Calc function articles in the wiki
  17. Tomaž Vajngerl (Collabora) continued polishing support for document themes and made the text auto-fit algorithm in Impress match OOXML better. He also made cleanups in code related to shapes
  18. Julien Nabet made it possible to use the colon key in shortcuts
  19. Andreas Heinisch made empty grid cells evident in the Special Characters dialog, fixed old issues with print ranges being lost upon copying a Calc sheet to another document and level settings being ignored in a table of contents created from custom styles, added support for Unicode minus (0x2212) in Calc value input, fixed an issue causing data loss when renaming libraries in Basic organizer and improved the compatibility of macro modules with other OpenOffice.org derivatives
  20. László Németh fixed an issue with text files with very long lines causing instability alongside some Writer regressions
  21. Xisco Faulí (TDF) did lots of refactoring in automated tests and added many new ones. He also made tracked changes in Calc display Unknown Author, if no name is set in user data and fixed some crashes.
  22. Michael Stahl (allotropia) made many improvements to the export of accessible PDFs, allowing LibreOffice to export with accessible options by default and added a decorative flag for frame styles upon ODT and DOCX export
  23. Mike Kaganski (Collabora) fixed issues with Writer table of contents, autofitting column width in Calc, table indentation in exported HTML files, made many improvements to the LanguageTool remote checking support, made the VBA function StrConv more robust and improved the loading time of Writer documents with lots of tables. He also fixed

03 April, 2023


Writer now has the early steps to handle tables that are both floating and span over multiple pages.

This work is primarily for Collabora Online, but is useful on the desktop as well. See the first post for background.


The previous post finished with split rows are now in a reasonable shape towards our journey to fix tdf#61594. In this post, we'll see what else is needed to get perfect rendering for that single document.

The plan is to iterate on that later, adding more and more incremental improvements & fixes for this feature.

Results so far

The feature is still enabled by default, but the DOCX import only makes use of it if you set the SW_FORCE_FLY_SPLIT=1 environment variable. This allows playing with the feature even if there are lots of known problems still.

On the positive side, core.git sw/qa/core/layout/data/ has 12 files now which are rendered exactly the way Word does. Also, there are additional tests that quickly build a specific multi-page floating table in the memory and do some operation on it, e.g. delete the last row and assert what happens.

Here are some screenshots from the effort so far:

Split row and an additional one on 2 pages

Here the problem was that a normal row went to a next page after a split row. Now the document is correctly of 2 pages, instead of the previous unwanted 3 pages.

Floating table with multiple columns

Here the additional complexity was to have multiple columns on a table, since previously we always had 1 column and 2 or more rows. Now these are also split correctly across pages.

Incorrect widow control inside split floating tables

This is an incorrect table row split, because widow control is broken.

Fixed widow control inside split floating tables

And here is how it looks when it's working. That little line on page 2 is no longer alone.

Working minimal height

Even better when the minimal height for non-first ("follow") table frames is working, as you can notice that space between the last line and the table bottom border on page 2.

At this point, the bug document from the motivation section worked fine, apart from the workaround that one has to re-save it in non-legacy mode in Word. So what's next? We need to instantly add a legacy mode for the brand new (not even fully enabled) multi-page floating table feature, since otherwise whatever we do, some DOCX files will be handled incorrectly.

Legacy mode: bad margin

As it turns out, the core of the legacy mode is that the floating table is sometimes allowed to flow into the footer / bottom margin area of the page, but not always. It's quite inconsistent, so one can understand why this is no longer the default behavior. The above is the naive rendering, which is logical, but incorrect.

Legacy mode: good margin

And this is the correct result in legacy mode. After

02 April, 2023


Firebird Project announces the first Beta release of Firebird 5.0, the next major version of the Firebird relational database, which is now available for testing.This Beta release arrives with features and improvements already implemented by the Firebird development team, as well as with many bugfixes. Our users are appreciated giving it a try and providing feedback to the development mailing

23 March, 2023


In every C/C++ source code file, we use header files to put declarations of functions, data types, class, macro and other relevant things inside it. These files have the extension of .h (for C) and .hxx (for C++).

We have different header types: internal and global includes. You can find some of the header files in many places. For example, in LibreOffice we have several modules that many other modules depend on them. Here, we focus on the VCL module. For the global includes, they are placed inside include/ folder, and for internal headers of VCL module, the include files are put inside include/vcl/.

On the other hand, not all the VCL headers are beneficial outside the VCL module. In this case, it is preferred that these include files are put inside the vcl/ folder. Usually, those header files should be inside vcl/inc folder.

As an example, we have the header include/vcl/salnativewidgets.hxx file which have declarations that are not used outside vcl/. In this case, we can put the declarations inside vcl. The suggested place is vcl/inc/nativewidgets.hxx.

Finding Internal Includes

As suggested in the bug report, one trick is to look at the class/function declaration. If it doesn’t have a SAL_DLLPUBLIC attribute decorating it, there is good chance that you can move it to the private headers, and in this case, vcl/inc/ folder.

Other than that, you should use the include syntax <…>. For example, if you have created vcl/inc/nativewidgets.hxx, then the include syntax would be:

#include <nativewidgets.hxx>

This is because the file is not exactly next to the cxx file. You can read more here:

Final Notes

EasyHacks are good starting points for someone who wants to start LibreOffice development. This specific issue for improving header files of VCL is avaiable as tdf#97228 in TDF’s Bugzilla. To understand how to start LibreOffice development, you can refer to our getting involved page in the TDF Wiki, or our video tutorial for getting started with LibreOffice development.

21 March, 2023



Towards GTK 4.10 some of the functionality to integrate LibreOffice's internal accessibility support with GTK has been exposed. Some experimenting this week with GTK trunk gives me the above, writer's document accessibility hierarchy integrated with the GTK one.

Very little actually works, but a working base to start from.

20 March, 2023


You can compile just fine Firebird 4/5 on Oracle Linux 8 Ampere V1 (arm64) all you need is GCC Toolset 12 enabled as described here .Also same steps work for Oracle Linux 8.x on x86-64.  sudo dnf group install "Development Tools" sudo dnf install libicu-devel cmake git sudo dnf install gcc-toolset-12 scl enable gcc-toolset-12 bash git clone https://github.com/FirebirdSQL/firebird.git cd


—Por Judith Ainara

INTRODUCCIÓN: ¿Qué necesitamos para poder firmar un documento con firma electrónica?

El tema de la firma digital es algo más complejo de lo que parece y lo que comento es una ligera aproximación al tema, independientemente de

17 March, 2023


Rust Firebird Client updated to v0.23.0 with a few features :Firebird events support added on native client #133 #142Crates.io link is here .Sponsoring Link for Fernando Batels is here .

09 March, 2023


Por Mike Saunders

«He visto cómo personas de diversos orígenes se pueden unir para crear algo más impactante de lo que podrían conseguir de forma individual.»

Anteriormente hemos hablado con Ximena Alcamán, que trabaja en mejoras al instalador de LibreOffice como parte del programa Outreachy. Outreachy ofrece pasantías a personas sometidas a sesgos sistémicos y que se ven afectadas por la …

06 March, 2023


General Activities

  1. LibreOffice 7.5.0 was announced on February 2
  2. Roman Kuznetsov gave a talk about QA in russian
  3. Rafael Lima continued polishing dark mode support, made it so empty BASIC libraries are populated by an empty module for better user experience, made zooming smoother in Impress and Draw, implemented shortcut-assignable zoom commands as well as commands for toggling Watch/Stack windows for Basic IDE, made colour schemes translatable and fixed some broken links in Help
  4. Adolfo Jayme Barrientos improved the layout of some dialogs and updated some Help texts after UI changes
  5. Olivier Hallot (TDF) improved Help pages for Template Manager, command line conversion filter info and Draw layers. He also added links to Calc function wiki articles
  6. Seth Chaiklin made many text improvements both in the UI and in Help related to heading numbering and indexes
  7. Alain Romedenne corrected malformed keyword names in BASIC function signatures and added a Help page for FormatPercent Basic/VBA function
  8. Sophia Schröder made many smaller fixes and markup rework in Help files
  9. Miklós Vajna (Collabora) worked on multi-page floating tables in Writer
  10. Jean-Pierre Ledure worked on the ScriptForge library
  11. Szymon Kłos, Dennis Francis and Henry Castro (Collabora) worked on LOKit improvements. Szymon also made HTML export more robust regarding closing tags. Henry fixed an issue with master slide previews in Impress
  12. Andras Timar (Collabora) made some build-related improvements and fixes
  13. Eike Rathke (Red Hat) fixed an issue with dates showing as integers in XLSX files, added Saraiki to languages and made many code cleanups
  14. Tomaž Vajngerl (Collabora) made PDFs exported as hybrid conform to PDF validity requirements and continued polishing support for document themes
  15. Julien Nabet fixed an issue with setting search attributes via macros and implemented support for CSS color rules using alpha values when pasting HTML text from clipboard
  16. Andreas Heinisch added an expert option for sorting recent documents list according to the currently active LibreOffice module, made it so the UTF-8 byte order mark is preserved in saved CSV files, made line number alignment look better in Basic IDE and polished the look of highlighting of favourites in Special Characters dialog
  17. László Németh fixed an issue where saving to a WebDAV server too frequently caused the saving to fail
  18. Xisco Faulí (TDF) made over 40 additions and improvements to automated tests, made it possible to change the UI when viewing a read-only document and fixed many crashes
  19. Michael Stahl (allotropia) improved the image alternative text compatibility with different versions of the DOCX format, continued polishing DOCX table of contents style support, improved both the internal handling and the terminology related to the different ECMA-376 DOCX format editions, fixed an issue with bullets in an ODT originating from MS Word and fixed an issue causing text indent and margin in a paragraph style to not override the respective properties in a list style
  20. Mike Kaganski (Collabora) fixed an issue where changing anchoring in a Writer document via a macro would not set modified and

05 March, 2023


Por Mike Saunders

«Outreachy me hizo sentir más a gusto como nueva integrante de las comunidades del código abierto.»

En esta ocasión hemos charlado com Ximena Alcamán, que está trabajando en mejoras al instalador de LibreOffice como parte del programa Outreachy. Outreachy ofrece pasantías para personas sometidas a sesgos sistémicos e impactadas por la …

04 March, 2023


Recent user guides from the LibreOffice Documentation team are available for free download (PDF, ODT) from the Documentation page on the LibreOffice website, and low-cost printed copies can be purchased from Lulu.com.

Cover of LibreOffice 7.4 Draw GuideCover of LibreOffice 7.5 Writer GuideCover of LibreOffice 7.5 Calc Guide

LibreOffice 7.4 Draw Guide
LibreOffice 7.5 Writer Guide
LibreOffice 7.5 Calc Guide

03 March, 2023


LibreOffice uses an internal GUI toolkit, named VCL (Visual Class Library). It creates the GUI widgets for LibreOffice, but it is not generally available for other applications. But there are ways that you can create standalone applications with VCL, at least to learn it better.

If you take a look into the vcl/workben, you will see several workbenches that are actually built during the build process. Previously, we discussed some of them in this post.

Now, I want to discuss the code of the simplest example: minvcl.

It basically creates a simple application with a single window, and that’s all! But even doing that needs several steps. Let’s discuss the code itself.

First come the includes. The include sal/config.h should come with each and every file in LibreOffice, and also VCL. Then, we have several includes from framework, cpppuhelper, comphelper, com/sun/star/lang and com/sun/star/uno, and then language classes from i18nlangtag.

#include <sal/config.h>
#include <framework/desktop.hxx>
#include <cppuhelper/bootstrap.hxx>
#include <comphelper/processfactory.hxx>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
#include <i18nlangtag/languagetag.hxx>
#include <i18nlangtag/mslangid.hxx>

After that, comes the includes from VCL. We only use two: the one for a VCL application, and another for a VCL window:

#include <vcl/svapp.hxx>
#include <vcl/wrkwin.hxx>

Keep in mind that you have to provide the link libraries via the make file. In this case, the make file is vcl/Executable_minvcl.mk:

$(eval $(call gb_Executable_use_libraries,minvcl,\
    tl \
    sal \
    vcl \
    cppu \
    cppuhelper \
    comphelper \
    i18nlangtag \
    fwk \

And at last, the include file for the main function of the VCL application. Every VCL application is supposed to have SAL_IMPLEMENT_MAIN() instead of main(), which is declared in this file.

#include <sal/main.h>
#include <iostream>

The class TheApplication should fall into an anonymous namespace. This class inherits the VCL application class with the name of Application. As you can see, we keep a VclPtr to a vcl::Window named mpWin that keeps a pointer to our window.

class TheApplication : public Application
    virtual int Main();

    VclPtr<vcl::Window> mpWin;

In the main file, we use a method named Create() to create a window. Then, we set the title using SetText(), and then invoke show() to make the window visible on the screen. This is the main file of the VCL application. It is the entry point for the application.

int TheApplication::Main()
    mpWin = VclPtr<WorkWindow>::Create(nullptr, WB_APP | WB_STDWORK);
    mpWin->SetText(u"Minimum VCL application with a window");
    return 0;

We use LibreOffice APIs to create a component context and a service manager. The setProcessServiceFactory() function is used to set the service manager for the process. To understand the service manager, you can refer to the DevGuide:

The LanguageTag::setConfiguredSystemLanguage() function sets the language of the application to the system language. Finally, the framework::getDesktop() function

01 March, 2023


Writer now has the early steps to handle tables that are both floating and span over multiple pages.

This work is primarily for Collabora Online, but is useful on the desktop as well.


As requested in tdf#61594 10 year ago, the use-case is that you can already have floating tables:

Table in a Writer text frame

And multi-page tables:

Multi-page table

And what we want is a combination of them, like this:

Multi-page floating table

This is a quite complicated feature, since both floating objects and tables are complex, and this combines them to create even more complexity.

However, such constructs are used in existing DOCX files and we're expected to correctly display them.

Results so far

The feature is enabled by default, but the DOCX import only makes use of it if you set the SW_FORCE_FLY_SPLIT=1 environment variable. This allows playing with the feature even if there are lots of known problems still.

On the positive side, core.git sw/qa/core/layout/data/ has 4 files now which are rendered exactly the way Word does.

A bit of terminology: once a frame is split, the first element of the chain is called master, the remaining frames are called follows.

Here are some screenshots from the journey so far:

Not splitting Writer text frame

This is a fly frame with enough content that it doesn't fit the body frame. It should split, but fly frames could not be split.

Writer text frame kept inside the body frame

First try, just limit the height of the (master) fly frame, so at least it stays inside the body frame. But now some content is not rendered.

Incorrect split of a text frame

Next try. Now have have 2 flys, but the second has zero height and the content of the second fly leaks into the body of the second page.

Last version with bad anchoring

This one is better, but the position of the follow fly frame is bad, no actual wrapping happens. Also, we assume that there are multiple paragraphs after the table, which will cause problems for floating tables at the end of the document. So I reworked the anchoring code to split the anchor to as many pages as necessary...

Duplicated anchor text

Which sounds good, but now the text around the anchor point is duplicated.

Less duplicated anchor text on the first page

Better, now the anchor text is gone in the master anchor, but still there is a misleading paragraph marker.

Last text frame without a table

And now this looks reasonable. Fine, we have some minimal split flys, let's try it with tables instead of just two paragraphs:

Floating table with duplicated anchor text

With a bit of work, the table's two rows can split, but again the text in the anchor is duplicated.

Bad horizontal position

Next try, now the anchor text is correct, but the horizontal position of the table is still bad, it bleeds out

21 February, 2023


In this article, I will discuss the recent problems with compiling LibreOffice using Microsoft Visual Studio, things that I did to debug and find the root cause, the source of problem itself – which is problems in Microsoft’s telemetry – and how I could fix it.

Describing The Problem

Recently, I was encountering a problem when configuring LibreOffice’s source code before compilation. Sometimes, random errors appeared without further details on why. The title: “powershell.exe” was also strange, as I wasn’t using PowerShell directly.

Powershell Error

Powershell Error

At first, I ignored the message, but then it become more error common, and at some point the configuration was aborted. I ignored that for a while, but after a few days, one of the mentees reported a somehow similar problem.

The error was that the UCRT (which is Microsoft Visual Studio C++’s standard C library), was not found. This is an error log:

$ ./autogen.sh
checking for Windows SDK... found Windows SDK 10.0 (/cygdrive/c/PROGRA~2/WI3CF2~1/10)
checking for midl.exe... C:\Program Files (x86)\Windows Kits\10\/Bin/10.0.20348.0/x64/midl.exe
checking for csc.exe... C:\Windows\Microsoft.NET\Framework\v4.0.30319\/csc.exe
checking for al.exe... C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\/al.exe
checking .NET Framework... found: C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
checking whether jumbo sheets are supported... yes
checking whether to enable runtime optimizations... yes
checking for valgrind/valgrind.h... no
checking for sys/sdt.h... no
checking what the C++ library is... configure: error: Could not figure out what C++ library this is
Error running configure at ./autogen.sh line 321.

Checking the Error Logs

The important log that contains the output of the configuration is the config.log file. In this file, I could see these related lines:

configure:19511: result: no
configure:20052: checking what the C++ library is
configure:20078: C:/PROGRA~1/MIB055~1/2022/COMMUN~1/VC/Tools/MSVC/1430~1.307/bin/Hostx64/x64/cl.exe -c  -IC:/PROGRA~2/WI3CF2~1/10/Include/ucrt  -IC:/PROGRA~2/WI3CF2~1/10/Include/ucrt -IC:/PROGRA~1/MIB055~1/2022/COMMUN~1/VC/Tools/MSVC/1430~1.307/Include conftest.cpp >&5
C:/PROGRA~1/MIB055~1/2022/COMMUN~1/VC/Tools/MSVC/1430~1.307/Include\cstddef(12): fatal error C1083: Cannot open include file: 'stddef.h': No such file or directory
Microsoft (R) C/C++ Optimizing Compiler Version 19.30.30711.2 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

The strange thing was that I could configure that compilation with another Cygwin terminal with slightly different settings. To find the differences, I used the command export to see the values of the environment variables in the two configured terminals, and compare them using diff.

Then, I found that I could evade the problem by setting this environment variable. This was the environment variable from


Hoy, martes 21 de febrero, es el Día Internacional de la Lengua Materna de la ONU. Es un día «para abogar por la preservación y protección de todas las lenguas utilizadas por los pueblos del mundo» (https://www.un.org/en/observances/mother-language-day).

La trascendencia del …

20 February, 2023


Por Mike Saunders

En LibreOffice 7.5 se lanzó un novedoso modo oscuro que se activa de forma automática para coincidir con la configuración del sistema. Pero bastantes personas nos solicitaron un control manual, así que ¡nuestra comunidad de diseño la …

13 February, 2023


On last Saturday I talked online (using our jitsi) about QA process in LibreOffice for some Russian people who want to be QA engineer in near future. One smart person made the record of my video presentation and now you can watch it on Youtube by link below: 

There were around 20 persons there. Some from them now want to try to contribute in LibreOffice project as QA. Let's see =)

<- Current blog entries