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.


Wednesday
30 April, 2025


face

This FirebirdSQL pull request introduces SQL-compliant aliases GREATEST and LEAST for the existing MAXVALUE and MINVALUE functions. These aliases align with the SQL:2023 standard and provide a more intuitive and widely recognized syntax. The changes include updates to documentation, keywords, parser tokens, and system function definitions to support these new aliases.


Tuesday
29 April, 2025


[en] Michael Meeks: 2025-04-29 Tuesday

21:00 UTC

face
  • Long planning call; sync with Karen, lunch, catch up with Kendy, sync with Eloy, admin. Out for a run with J. multi-partner call, mail.

Sunday
27 April, 2025


face

Además del entorno de programación simplificada de EasyMacro, existe también el que fue desarrollado por otros entusiastas de LibreOffice. Esta vez son los señores Jean-Pierre Ledure, Alain Romedenne y Rafael Lima quienes le dieron luz a ScriptForge.[1] Ellos …


Friday
18 April, 2025


face

As a LibreOffice user, you have certainly seen the LibreOffice splash screen. It is displayed when you open LibreOffice, it has a progress bar, and when loading the application is finished it goes away. Here we discuss a suggested improvement for this splash screen.

Current Implementation Approach

Currently, the splash screen is implemented by creating a custom widget with a custom painting mechanism that draws the splash image and also the progress bar and moves the progress indicator.

This has some drawbacks:

1. The splash screen does not always scale to the same size as the main LibreOffice Window.

2. The style of the progress bar is somehow different from other UI elements, looks mostly like gen interface.

3. It needs and uses a custom paint code.

4. It does not conform to the dark/light theme.

5. It is not easily localize-able. In fact, the only text is from the displayed image, in English. When you build from sources, the image file is instdir/program/intro.png.

LibreOffice splash screen bitmap

LibreOffice splash screen bitmap

6. It is a separate binary (oosplash). You may run it with:

$ ./instdir/program/oosplash
LibreOffice dev splash screen

LibreOffice dev splash screen

VCL Weld Mechanism

I have previously written about VCL weld mechanism, which is based on creating user interface files (.ui) and loading them inside the application.

The weld mechanism greatly reduces the complexity of creating user interfaces, and also improves other aspects of the user interface, including the consistency.

Code Pointers

Most of the code for the current implementation resides in:
desktop/source/splash/splash.cxx.

The SplashScreenWindow class has an custom paint method, SplashScreenWindow::Paint(), which draws the bitmap, and also the progress. A new UI file is needed for this purpose, which should use GtkProgressBar, which will be considered a weld::ProgressBar. VCL then uses appropriate progress bar widget in different graphical plugins of VCL.

You may look into some dialogs like tip of the day to get some insight:

It would be interesting to avoid a separate binary, but it is fine to keep things as is, and just change to use .ui file.

Final Words

The above issue is tdf#166128. If you would like to work on fixing it, you can just follow the Bugzilla link to see more information.

You may also use ideas from a minimal weld application here:

VCL weld: create LibreOffice GUI from design files


Friday
11 April, 2025


face

General Activities

  1. LibreOffice 25.2.2 and LibreOffice 24.8.6 were announced on March 27
  2. Stanislav Horáček updated and improved UI and help texts
  3. Gábor Kelemen (allotropia) documented a new field that displays the page count for a range until the next numbering reset
  4. Alain Romedenne expanded help for ScriptForge and other scripting topics
  5. Tomaž Vajngerl (Collabora) reworked slideshow rendering code for robustness and simplicity
  6. Gökay Şatır, Marco Cecchetti and Szymon Kłos (Collabora) worked on LOKit used by Collabora Online
  7. Miklós Vajna (Collabora) implemented per-user change tracking in Writer and fixed unexpected list level change on inserting a new bullet in Writer
  8. Olivier Hallot (TDF) improved the UI and help pages for Calc’s Data Provider and improved help for Calc’s Duplicates command
  9. Xisco Faulí (TDF) added a bunch of new automated tests, upgraded many dependencies and did some code cleanups
  10. Michael Stahl (allotropia) improved the Accessibility Checker, improved MS Word compatibility with hiding empty paragraphs before tables in certain scenarios and fixed an issue with installing custom default templates via extensions
  11. Mike Kaganski (Collabora) greatly improved the performance of font preview in Calc, fixed Calc’s COUNTA() function returning 1 for empty ranges, fixed integer overflow in Writer’s Find & Replace match count, improved the loading speed of Writer documents with lots of bookmarks and tables and made the code for Underline Trailing Spaces compatibility option more robust
  12. Caolán McNamara (Collabora) improved spellchecking performance in multi-language spreadsheets, fixed many issues found by static analysers and did code cleanups and optimisations
  13. Stephan Bergmann (allotropia) worked on the WASM build. He also adapted the code to compiler changes and did code cleanups
  14. Noel Grandin (Collabora) made canvas rendering in Draw more robust, updated Skia through several versions, fixed slow switching of sheets in Calc when lots of drawing objects or lots of formatted cells are involved, improved spellchecking speed in Writer, made it faster to load complex XLSX spreadsheets, made it faster to delete very large tables in Writer, made it faster to load Writer documents with change tracked moves and improved the loading time of certain DOC files. He also did many code cleanups and optimisations
  15. Justin Luth (Collabora) fixed a line spacing issue in table cell content in PPTX files and fixed endnotes and footnotes data becoming lost when roundtripping glossary relations to DOCX
  16. Michael Weghorn (TDF) continued cleaning up and reorganising accessibility-related code, made Quick Find more accessible and made gtk4 file dialog show all the extra controls. He also worked on using native widgets in Qt UIs
  17. Balázs Varga (allotropia) worked on the WASM build, fixed unwanted table border lines in PPTX export, added an accessibility check for links and references in header/footer, fixed Quickstarter being visible in options even if the feature is not installed and made it so the Online Update page is not visible, if the feature was not selected to be installed
  18. Patrick Luby made the macOS Start Center displaying logic more

Tuesday
08 April, 2025


face

Here is the description : "The range-based FOR statement is used to iterate over a range of numeric values. The iteration is performed in increasing order when used with TO clause and in decreasing order when used with DOWNTO clause"Syntax[<label> :]  FOR <variable> = <initial value> {TO | DOWNTO} <final value> [BY <by value>] DO      &


Monday
07 April, 2025


face

We are happy to announce the release of Jaybird 6.0.1 and Jaybird 5.0.7. Both releases provide a number of performance improvements to blob handling, and some bug fixes.We plan to offer more blob performance improvements in upcoming releases of Jaybird 5 and 6, for Firebird 5.0.3 and higher (see also New Article: Data access methods used in Firebird).


Wednesday
02 April, 2025


face

Writer has the concept of recording tracked changes or not: if recording, typing into a document or deleting content will create tracked changes of type insertion or deletion. So far this was a per-document setting, but now individual users can enable or disable this as they wish.

This work is primarily for Collabora Online, but the feature is available in desktop Writer as well.

Motivation

When Alice keeps typing and Bob enables change tracking, then surprisingly the typed characters of Alice will form a tracked insertion, which is surprising, since that was not the case a second ago and Alice didn't do anything other than typing.

Giving users a choice if they enable recording for just this user or for all users fixes this problem.

Results so far

Here is how the per-user (technically per-view) tracked changes recording looks like:

Per-view tracked changes recording

As you can see, the user on the left has recording turned on and this doesn't influence the user on the right, while this was not possible before.

How is this implemented?

If you would like to know a bit more about how this works, continue reading... :-)

As usual, the high-level problem was addressed by a series of small changes. Core side:

Online side:

Want to start using this?

You can get a development edition of Collabora Online 25.04 and try it out yourself right now: try the development edition. Collabora intends to continue supporting and contributing to LibreOffice, the code is merged so we expect all of this work will be available in TDF's next release too (25.8).


Sunday
23 March, 2025


face

La base de datos Firebird se distingue por sus características únicas dentro del ecosistema de bases de datos compatibles con LibreOffice Base.

¿Por qué considero que Firebird es especial? Porque es el único motor de bases de datos que admite …


Friday
21 March, 2025


face

por Gustavo Pacheco

El V Congreso Latinoamericano de LibreOffice se celebró en Montevideo, Uruguay, los días 5 y 6 de diciembre de 2024, en el Espacio Colabora de la Intendencia de Montevideo. Este evento reunió a miembros de la comunidad …


Thursday
13 March, 2025


face

Ha pasado poco más de un mes desde que se lanzó LibreOffice 25.2, la nueva versión de la suite ofimática de código abierto, y la recepción no podía ser mejor: más de un millón de descargas semanales está teniendo la …


Monday
10 March, 2025


face

General Activities

  1. LibreOffice 25.2.0 was announced on Feb 6. Three weeks later, LibreOffice 25.2.1 was announced on Feb, 27
  2. LibreOffice 24.8.5 was announced on Feb 20
  3. Olivier Hallot (TDF) improved the descriptions of new Calc functions shown in the UI, added a Help button to the Data Provider dialog, added help pages for new Calc functions CHOOSECOLS(), CHOOSEROWS(), VSTACK() and HSTACK(), added a help page for Calc’s Data Provider and improved help for Paste Special as well as labels and business cards
  4. Tomaž Vajngerl (Collabora) continued working on PDF 2.0 support and refactored graphics and animation handling code in VCL toolkit
  5. Miklós Vajna, Rashesh Padia, Darshan Upadhyay, Gökay Şatır, Attila Szűcs, Szymon Kłos (Collabora) worked on LOKit used by Collabora Online. Szymon also improved the user experience of the Currency dropdown by removing the need to click an OK button
  6. Andras Timar (Collabora) fixed an issue with importing WEEKNUM() functions from XLSX files, made Excel style cell reference syntax be respected in non-English UIs and made it so in read-only documents one can’t invoke the Search and Replace dialog, reset cell attributes or fill down cells
  7. Xisco Faulí (TDF) implemented new Calc functions CHOOSECOLS(), VSTACK() and HSTACK(), made UNIQUE() case-insensitive like its counterpart in Excel, added a couple of dozen automated tests, upgraded many dependencies and fixed a crash
  8. Michael Stahl (allotropia) fixed rendering of overlapping tracked formatting and deletions in imported DOCX files, fixed losing tracked changes when paragraph has a frame anchored to it, fixed truncation of tables in sections split across pages and improved compatibility with MS Word in the case of hidden text
  9. Mike Kaganski (Collabora) fixed an issue with the Alt+X Unicode conversion command when following a combining character, fixed Calc’s INFO() function giving unexpected results with some arguments, made BASIC’s Shell() function more robust and implemented a compatibility option for MS Word’s “Underline Trailing Spaces”. He also did many code cleanups and optimisations
  10. Caolán McNamara (Collabora) fixed sheet identifiers going out of sync sometimes with XLSX export, fixed crashes, fixed many issues found by static analysers and did code cleanups and optimisations
  11. Stephan Bergmann (allotropia) worked on the WASM build. He also adapted the code to compiler changes and did code cleanups
  12. Noel Grandin (Collabora) made it faster to load and display XLS and XLSX files with lots of conditional formatting. He also did many code cleanups and optimisations, especially in the area of graphics handling
  13. Justin Luth (Collabora) fixed an Excel compatibility issue with frozen cell zones, fixed unwanted empty paragraphs appearing in headings in DOCX files, fixed tabstops missing from paragraph styles in DOC import and made DOCX metadata compatible with MS Word (Word deviates from the OOXML specification in this area)
  14. Michael Weghorn (TDF) continued cleaning up and reorganising accessibility-related code, made Sidebar, Quick Find and editable comboboxes more accessible, fixed a visual glitch when resizing the window in certain cases affecting

Thursday
06 March, 2025


face

We’ve added a great new Vue.js-3 ZetaJS demo (source)! It showcases word processing and spreadsheets inside a single web app. Calc is being used as a data source for an HTML app, filling letter templates in Writer. You can even upload custom data spreadsheets or document templates! And have you seen the nice Writer toolbar, all done with Vue.js?

We’ve also updated the existing demos, showcasing Chrome PWA support with the Ping Monitor demo – just click the little install button at the top-right of the address bar, to get the Ping Monitor “installed” on your desktop!

new demo combining Writer, Calc and the complete toolbar

Talks

Meanwhile, our team was giving some great talks about our work for ZetaOffice and LibreOffice. Why not check out the recordings during your lunch break?

ZetaJS & ZetaOffice

FOSDEM LibreOffice DevRoom talks

News clippings

Look, we made some headlines! TheRegister was following up some earlier coverage about the WebAssembly port, after Thorsten gave Liam a demo during FOSDEM. Read up the full article here.

Next up

In case you’re around, meet us in two weeks at the FOSSAsia Summit in Bangkok, where Sarper Akdemir will give an update over our work. Dates are March 13-15.

If you’re based in Europe, you might instead enjoy Thorsten’s talk at the Chemnitz Linux Days (Germany) from March 22-23.

Looking forward to meet you there!

Feedback appreciated!

Please subscribe to our Newsletter or on Mastodon and let us know how you liked ZetaJS and the demos! If you’re playing with the code leave a star at the ZetaJS repo or if you hit any issues please file a report on GitHub.

Or just leave a comment and let us know directly – thanks for reading! 🙂


Monday
03 March, 2025


face

By Ndidi Folasade Ogboi

For the past two months, I’ve been working on adding more templates to LibreOffice Writer as part of my Outreachy project. My goal has been to create functional templates that users need the most.

I created these templates based on what you told us in our survey and your response was incredible!…


Thursday
27 February, 2025


face

Berlín, 27 de febrero de 2025 – LibreOffice 25.2.1, la primera actualización de la nueva suite ofimática LibreOffice 25.2 para Windows (Intel, AMD y ARM), macOS (Apple Silicon e Intel) y Linux está disponible para su descarga desde nuestro sitio


Wednesday
26 February, 2025


face

Dentro de un mes, el 26 de marzo, celebraremos el Día de Libertad Documental 2025. Por primera vez en mucho tiempo, el proyecto LibreOffice desempeñará un papel destacado en la organización del evento.

Durante el día, hablaremos principalmente del Formato …


face

Firebird Project is happy to announce general availability of Firebird 5.0.2 — the latest minor release in the Firebird 5.0 series.This minor release offers bug fixes as well as a few improvements, please refer to the Release Notes for the full list of changes.Binary kits for Windows, Linux, MacOS and Android platforms are immediately available for download.


Monday
17 February, 2025


face

LibreOffice inherits a gigantic code base from its ancestors, StarOffice and OpenOffice. Here I discuss some notes for the newcomers on how to better understand the existing LibreOffice code, and improve the patches.

Studying the Existing Code

As said, LibreOffice is a huge code base, containing ~10 million lines of mostly C++ code. There are different assumptions, conventions and coding styles across ~200 modules that LibreOffice has.

Therefore, it is important to first, study the existing code, through reading and debugging LibreOffice source code, to understand the things that it does, and the way you can implement your ideas, including bug fixes and adding new features.

And although implementing some ideas seem to be straightforward at first sight, it is meaningful to study the details.

Quality Assurance Point of View

First of all, you should understand the thing that you want to implement. No matter if it is a bug, a new feature, or just an EasyHack, you should understand what is requested, what works and what does not work. This requires careful reading of the Bugzilla pages.

User Point of View

Then, you should try to run LibreOffice to understand the exact place in the application where you want to change. LibreOffice user interface has thousands of dialog boxes, so you need to make sure that you understand the thing that you want to do.

Developer Point of View

And at last, you get into implementing something in the code. Here are some questions that you can ask yourself about the details, when reading the existing code:

  • Why this statement is here, in the first place? (detail-oriented view)
    • You can use git blame to see the last author of a specific line
    • You can use git log to study the details by knowing the commit hash
    • What can this part of code actually does?
    • Can I see its effect?
git log

git log

Or, you may be interested in the code behavior in the big picture:

  • What does the code do as a whole? (holistic view)
  • There are many other statements, functions and other constructs in the code. What do they do?
  • What is the overall goal of the code?
  • Can I test that in action?

You can do some small changes, before even getting into implementing your idea:

  • What happens if I remove it? (small changes)
  • Does the removal prevent the code from working?
  • Is it incomplete, or does it actually do something useful, which
  • will be absent if I remove it?

Then, you can work on the actual implementation. Ask yourself:

  • How can I implement the idea in its simplest form? (straightforward change)
  • Does it have side effects?
  • How can I make sure every thing else works as before?
  • How can I write a test for it?

After understanding some of the basic details about the way things work, you may go into improving your implementation.

  • How can I make it better? (sophisticated change)
  • Can I make the code more robust where it is brittle?
  • Can I complete the

Tuesday
11 February, 2025


face

General Activities

  1. Olivier Hallot (TDF) added help pages for new Calc functions TOROW(), TOCOL(), WRAPROWS(), WRAPCOLS(), EXPAND(), TAKE() and DROP(), added dark mode support to the help interface, improved help for PDF/UA, did cleanups in the Xapian-based search in online help, added help for tables styles in Writer and improved help related to printing
  2. Dione Maddern added a help page for Cell Appearance Sidebar deck
  3. Stanislav Horáček did some cleanups in help
  4. Gábor Kelemen (allotropia) added a detailed list of allowed PDF password characters into help and improved the developer tools for finding unneeded includes and UI strings that might need to be translatable
  5. Tomaž Vajngerl (Collabora) continued working on PDF 2.0 support and document themes and fixed an Excel compatibility issue with empty values of defined names
  6. Miklós Vajna, Andras Timar, Henry Castro, Gökay Şatır, Attila Szűcs, Szymon Kłos and Pranam Lashkari (Collabora) worked on LOKit used by Collabora Online
  7. Xisco Faulí (TDF) implemented new Calc functions, TOCOL, TOROW, WRAPCOLS, WRAPROWS, TAKE, DROP, EXPAND and CHOOSEROWS, added support for setuptools and pip in Python scripting, upgraded many dependencies, added some unit tests and did many code stability improvements
  8. Michael Stahl (allotropia) continued improving the correctness of HTML import regarding formatting and fixed issues with table splitting in Writer’s layout
  9. Mike Kaganski (Collabora) fixed an issue with opening newly-created database forms, fixed Basic isNumeric() function giving incorrect results, fixed an installation issue affecting Active Directory setups on Windows, fixed issues with allowed characters in file name when exporting as PDF, fixed wrong number of results being reported when going over 1000 while executing Find All in Calc, fixed inability to pass a Date object to an UNO API method, fixed an issue with handling of Variant types in Basic, made handling of conditional formatting with colour conditions more robust when moving columns, made intercepting .uno:Open command work again, fixed a crash related to regular expressions in Basic and made SQL queries handle negative values
  10. Caolán McNamara (Collabora) fixed crashes, fixed many issues found by static analysers and did code cleanups and optimisations
  11. Stephan Bergmann (allotropia) worked on the WASM build. He also adapted the code to compiler changes and did code cleanups
  12. Noel Grandin (Collabora) improved the speed of inserting rotated images to Writer. He also did many code cleanups and optimisations
  13. Justin Luth (Collabora) fixed DOCX import issues with frames before tables getting anchored to a table cell instead of an empty paragraph and missing header properties in page styles
  14. Michael Weghorn (TDF) continued cleaning up and reorganising accessibility-related code, did refactoring in Linux printer code and fixed some crashes. He also worked on using native widgets in Qt UIs
  15. Balázs Varga (allotropia) fixed import of cropped vector graphic objects in PPTX files, improved warnings related to allowed characters in the PDF password input dialog, made it possible to show or hide the text in some password dialogs (more to be included), fixed broken cropped SVG

Thursday
06 February, 2025


face

La nueva versión principal ofrece un gran número de mejoras en la interfaz de usuario y la accesibilidad, además de las habituales funciones de interoperabilidad

Berlín, 6 de febrero de 2025 – LibreOffice 25.2, la nueva versión principal de la …


face


Nova osrednja izdaja ponuja veliko število izboljšav vmesnika in dostopnosti, pa tudi običajnih funkcionalnosti medopravilnosti.

Berlin, 6. februar 2025 – LibreOffice 25.2, nova osrednja izdaja najboljšega odprtokodnega pisarniškega paketa za Windows (Intel, AMD in ARM), macOS (Apple in Intel) in Linux, ki jo podpirajo prostovoljci, je na voljo na naslovu https://sl.libreoffice.org/prenos LibreOffice je najboljši pisarniški paket za tiste uporabnike, ki želijo ohraniti nadzor nad svojimi lastnimi programskimi orodji in dokumenti, da zaščitijo svojo zasebnost in digitalno življenje pred komercialnim vmešavanjem in strategijami povzročanja odvisnosti velikih tehnoloških podjetij.

LibreOffice je edini pisarniški paket, zasnovan na potrebah uporabnika, ne le na pojavni všečnosti. Ponuja številne možnosti vmesnika, ki ustrezajo različnim navadam uporabnikov, od tradicionalnih do sodobnih, in kar najbolje izkorišča zaslone različnih mer, saj optimizira prostor, ki je na voljo na namizju, tako da je čim večje število funkcij le klik ali dva stran. Je tudi edino programje za ustvarjanje dokumentov, ki lahko vsebujejo osebne ali zaupne podatke, a tudi spoštuje zasebnost uporabnikov, s čimer zagotavlja, da se uporabnik lahko odloči, če in s kom je pripravljen deliti vsebino, ki jo je ustvaril, zahvaljujoč standardiziranemu in odprtemu zapisu, ki se ne uporablja kot orodje za povzročanje odvisnosti uporabnikov, ki vsiljuje periodične posodobitve programja. Vse to z naborom funkcionalnosti, primerljivim s tistim vodilnega programja na tržišču in daleč zmogljivejšim od vsega, kar ponujajo preostali tekmeci.

LibreOffice je edinstven zaradi platforme LibreOffice Technology, edine na tržišču, ki omogoča skladen razvoj namiznih, mobilnih in oblačnih različic – tudi tistih, ki jih ponujajo podjetja iz ekosistema – ki lahko izdela identične in povsem združljive dokumente na osnovi dveh obstoječih standardov ISO: odprtem zapisu ODF ali Open Document Format (ODT, ODS in ODP), in lastniški vrsti datotek Microsoft OOXML (DOCX, XLSX in PPTX). Slednje v sebi skrivajo mnogo umetne (in nepotrebne) zavezane kompleksnosti, kar lahko povzroča težave uporabnikom, ki so prepričani, da uporabljajo standardiziran zapis.

Končnim uporabnikom je na voljo tudi tehnična pomoč prve ravni prostovoljcev na uporabniških dopisnih seznamih ter spletišču Ask LibreOffice: https://ask.libreoffice.org

Novosti v LibreOffice 25.2


ZASEBNOST

  • Če je potrjena možnost odstranitve zasebnih podatkov pri shranjevanju, se osebni podatki ne bodo izvozili (imena avtorjev in časovni žigi, trajanje urejanja, ime tiskalnika in njegove nastavitve, predloga dokumenta, avtorji in datumi komentarjev ter sledi sprememb).
OSRČJE / SPLOŠNO
  • LibreOffice 25.2 lahko bere in zapisuje dokumente v zapisu ODF različice 1.4.
  • Mnogo izboljšav medopravilnosti z lastniškimi vrstami dokumentov OOXML.
  • Zdaj lahko samodejno podpisujete dokumente, ko določite privzeto potrdilo.
  • Windows 7 in 8/8.1 sta opuščeni platformi in podpora zanju bo odstranjena z različico 25.8.
  • Razširitve in funkcionalnosti, ki se zanašajo na Python, ne delujejo na sistemih Windows 7.
WRITER
  • Izboljšave upravljanja sprememb dokumentov, še posebej

Thursday
30 January, 2025


face

When you want to interact with users, sometimes simple dialog boxes are sufficient: a simple yes or no, or some info box. But in other cases, you may need more complex message boxes. Here I discuss how to use VCL Weld to create a custom one.

Simple Message Box

You can create a simple message box, using predefined templates like Info box using a code snippet like this:

std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pParent, VclMessageType::Question, VclButtonsType::YesNo, u"Are you sure?"_ustr));
xInfoBox->run();

And, this is the result, which is very simple, without any title bar:

Yes / No message box

Yes / No message box

There are other predefined types, which can be used in different scenarios:

enum class VclMessageType
{
    Info,
    Warning,
    Question,
    Error,
    Other
};

But, if you want custom message boxes, you should be using weld mechanism, with its CreateBuilder function.

Custom Message Boxes

Below is the code from the source code sfx2/source/doc/QuerySaveDocument.cxx, which is inside sfx2 (framework) module. This dialog box is accessible across different modules, including Writer, Calc and Draw/Impress.

Let’s look into the code:

short ExecuteQuerySaveDocument(weld::Widget* _pParent, std::u16string_view _rTitle)
{
    ...
    std::unique_ptr<weld::Builder> xBuilder(
        Application::CreateBuilder(_pParent, u"sfx/ui/querysavedialog.ui"_ustr));
    std::unique_ptr<weld::MessageDialog> xQBox(
        xBuilder->weld_message_dialog(u"QuerySaveDialog"_ustr));
    xQBox->set_primary_text(xQBox->get_primary_text().replaceFirst("$(DOC)", _rTitle));
    return xQBox->run();
}

The code is using a UI file, named sfx/ui/querysavedialog.ui to create a message dialog, and then change the title of it.

QuerySaveDialog

QuerySaveDialog

If you look into the include file, include/vcl/weld.hxx inside Builder class, you may see functions like weld_… that are suitable to find various different UI elements from the UI, by mentioning the element ID. For example, to find a label with the ID equal to lable_id, you do this:

std::unique_ptr<weld::Label> m_pTextLabel label = m_xBuilder->weld_label(u"label_id"_ustr)

Result

This is the result, when you try to close an unsaved document.

QuerySaveDialog running

QuerySaveDialog running

Alternative Ways

This is not the only way you can create nice dialog boxes using VCL weld mechanism. There are some predefined message boxes that look nice which use weld mechanism, and are available for use via relevant C++ classes.

An interesting one here, is the QueryDialog, which is created by a factory method design pattern.

It uses a predefined dialog, using cui/uiconfig/ui/querydialog.ui as the UI file, and it contains a nice stock image! You can test it easily, by modifying a LibreOffice example, minweld.

IMPL_LINK_NOARG(TipOfTheDayDialog, OnNextClick, weld::Button&, void)
{
    VclAbstractDialogFactory* pFact = VclAbstractDialogFactory::Create();
    auto pDlg = pFact->CreateQueryDialog(getDialog(), u"Tips"_ustr, u"Tip of the day"_ustr, u"Are you sure you want to see the next tip of the day?"_ustr, false);
    sal_Int32 nResult = pDlg->Execute();
    pDlg->disposeOnce();

    if(nResult == RET_YES)
    {
        ++m_nCounter;
        m_pTextLabel->set_label(u"Here you will see tip of the day #"_ustr
+ OUString::number(m_nCounter) + ".");
    }
}

Assuming that you have a working build of LibreOffice, you can simply run the minweld workbench by invoking


Wednesday
29 January, 2025


face

We are pleased to announce the successful migration of Firebird Docker images to their new home:https://github.com/FirebirdSQL/firebird-dockerThe images are now published on Docker Hub athttps://hub.docker.com/r/firebirdsql/firebirdThanks to Adriano dos Santos Fernandes for his invaluable contributions and improvements throughout this process.


Friday
17 January, 2025


face

LibreOffice 25.2 will be released as final at the beginning of February, 2025 ( Check the Release Plan ) being LibreOffice 25.2 Release Candidate 2 (RC2) the forth and last pre-release since the development of version 25.2 started in mid Juny, 2024. Since the previous release, LibreOffice 25.2 RC1, 104 commits have been submitted to the code repository and 55 issues got fixed. Check the release notes to find the new features included in this version of LibreOffice.

LibreOffice 25.2 RC2 can be downloaded for Linux, macOS and Windows, and it will replace the standard installation.

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!


Thursday
16 January, 2025


face

Happy new year 2025! I wish a great year for you, and the global LibreOffice community. Now that we are now in 2025, I briefly discuss the year 2024 and outlook for 2024 in the development blog.

LibreOffice Conference 2024, Luxembourg

LibreOffice Conference 2024, Luxembourg

At The Document Foundation (TDF), our aim is to improve LibreOffice, the leading free/open source office suite that has millions of users around the world. Our work is community-driven, and the software needs your contribution to become better, and work in a way that you like.

My goal here, is to help people understand LibreOffice code easier, and eventually participate in LibreOffice core development to make LibreOffice better for everyone. In 2024, I wrote 22 posts around LibreOffice development in the dev blog (4 of them are unpublished drafts).

Outlook For the New Year

Focus of the development blog for 2025 in this blog will be:

  • Introducing new EasyHacks
  • Describing user interface creation with VCL
  • Explaining LibreOffice architecture
  • Explaining Python interaction with LibreOffice

I have written about some of these topics in 2024. Therefore, this year I will try to expand the previous writings and provide new articles about them. For example, creating user interfaces using VCL with the help of glade interface designer will be one of important things to discuss.

You can give feedback by writing a comment here, or sending me an email to hossein AT libreoffice DOT org.

We provide mentoring support to those who want to start LibreOffice development. You are welcome to contact me if you need help to build LibreOffice and do some EasyHacks via the above email address. Also, you can always refer to our Getting Involved Wiki page:

Let’s hope a great year for LibreOffice (and the world) in 2025.


Tuesday
14 January, 2025


face

Dione Maddern y el equipo (global) de documentación de LibreOffice se enorgullecen de anunciar la disponibilidad inmediata de Guía de LibreOffice Calc 24.8, una actualización de la Guía de Calc 24.2 existente con las mejoras disponibles en LibreOffice Calc …


Monday
13 January, 2025


face

Helen Borrie, a key figure in the Firebird relational database project and a longtime contributor at IBPhoenix, passed away on January 2, 2025. Her contributions were essential to Firebird’s creation and its development over the past 25 years.Read the rest of the official announcement


face

We're happy to announce the first release of Jaybird 6, Jaybird 6.0.0.


face

By Ndidi Folasade Ogboi

LibreOffice Writer has long been a trusted tool for users worldwide, offering an open-source solution for documents. But what happens when we take a step back and look at the user experience? How do templates fit into the workflows of users, what makes a great template and where do users want LibreOffice writer to improve?…


Thursday
09 January, 2025


face

General Activities

  1. LibreOffice 24.8.4 was announced on December 19
  2. Olivier Hallot (TDF) improved the warning in Help when JavaScript is not active and did many cleanups in help pages
  3. Dione Maddern created a help page for Alignment Sidebar deck
  4. Alain Romedenne improved and updated help for ScriptForge libraries
  5. Bogdan Buzea improved some UI labels, improved help for superordinate object settings and cached spreadsheet formulas and did many code cleanups
  6. Tomaž Vajngerl (Collabora) continued working on PDF 2.0 and PDF/A-4 support
  7. Miklós Vajna, Rashesh Padia, Attila Szűcs, Bayram Çiçek, Szymon Kłos, Marco Cecchetti, Pranam Lashkari, Hubert Figuière (Collabora) worked on LOKit used by Collabora Online
  8. Xisco Faulí (TDF) worked on crash report analysis tools, upgraded many dependencies and did many code stability improvements
  9. Michael Stahl (allotropia) made style name handling more robust, improved the handling of hidden frames after recent changes and improved the correctness of HTML import regarding formatting
  10. Mike Kaganski (Collabora) added an application-wide Viewer mode where all files are opened in read-only state while all editing tools are disabled, dropped all code specific to Windows 7, 8 and 8.1 while also making use of new possibilities such as handling long Windows paths with wildcards, made the Unix document mailer script future-proof in case the attach parameter is disallowed in mailto URLs, fixed an issue with calculating minimum heights for menus, fixed an issue with the number format being reported incorrectly in Writer tables, fixed an issue with multi-selection in Calc showing an incorrect cell format and preventing change of format, fixed inability to edit doubles in Basic IDE’s Watch window and fixed an issue preventing the use of points for custom image height/width in the PNG export dialog
  11. Caolán McNamara (Collabora) improved dark mode support, fixed crashes and fixed many issues found by static analysers and fuzzers and did code cleanups
  12. Stephan Bergmann (allotropia) fixed an issue with emailing multiline messages on Unix and worked on the MAR updater and WASM build. He also adapted the code to compiler changes and did code cleanups
  13. Noel Grandin (Collabora) improved saving time of XLSX files with lots of conditional formatting, improved the speed of processing styles when opening DOCX files and worked alongside Michael Stahl in making style name handling more robust. He also did many code cleanups and optimisations
  14. Justin Luth (Collabora) fixed a DOCX compatibilityMode import and export issue, fixed an issue with imported area fill images not being saved with their associated documents, fixed a Calc comment copying crash and fixed an issue with tables of contents in DOCX files misbehaving when the printer list has been disabled
  15. Michael Weghorn (TDF) did a big reorganisation in accessibility-related code to make it easier to work with, continued working with Cambalache developer (UI editing app) and did various accessibility fixes. He also worked on using native widgets in Qt UIs
  16. Balázs Varga (allotropia) improved and expanded Writer’s accessibility warnings, fixed saving “Fit height to

<- Current blog entries