The Document Foundation Planet

 

January 25, 2022

Official TDF Blog

Using a Matrix Bridge with LibreOffice IRC Channels

Hossein Nourikhah writes:

Ever wondered about using modern chat tools to discuss LibreOffice? Here we will discuss using a Matrix bridge to connect to the LibreOffice IRC rooms, to participate more efficiently in LibreOffice-related discussions.

Traditionally, IRC has been the preferred way of communication for the FOSS communities including the LibreOffice community. There are multiple IRC rooms that you can join, and the one related to the LibreOffice development is #libreoffice-dev at Libera Chat network. A more complete list is in the TDF Wiki:

IRC is an open protocol, and there are many clients for it. With the modern IRC clients, some of the shortcoming of the earlier IRC clients are now resolved. For example, you can use encryption in your connection.

https://libera.chat/guides/connect#accessing-liberachat-via-tls

On the other hand, IRC still has its drawbacks. You have to be online to get the messages, and you will lose the messages that was sent when you were offline. There are solutions like “IRC bouncers” that can help resolve this specific issue, but when compared to the modern chat clients and protocols, IRC still falls behind. So, many people prefer the new tools for chat.

But, is there a way to connect these two worlds, old and new? Fortunately there is a solution: using a Matrix bridge.

Using the Matrix Bridge for the LibreOffice IRC Channels

To use the matrix bridge for the LibreOffice IRC channels, first you need a Matrix account. Then, by clicking on the link below you can connect to the “LibreOffice space“, and see the LibreOffice channels in Matrix:

https://matrix.to/#/#libreoffice-space:matrix.org

"<yoastmark

You don’t have an account? No problem! You can register one at matrix.org. It is as easy as a simple sign up, by entering username, password and your e-mail. You have to verify your e-mail address by opening a link sent to your inbox.

You, or your organization can have your own Matrix home server. If not, you can stick to matrix.org account. In any way, having a Matrix account lets you to join the LibreOffice space.

Join LibreOffice space

Join LibreOffice space

Subsequently, after joining the LibreOffice space you can join separate rooms and enjoy the Matrix bridge!

Join rooms in the LibreOffice space which uses Matrix bridge to IRC

Join rooms in the LibreOffice space which uses Matrix bridge to IRC

Then, if you look at the users list in the IRC rooms, you see several people with [m] after their names. They are usually people that are using Matrix bridge. If you are also using Matrix bridges, you can use the Matrix for private messages and use all the features available in Matrix protocol and client.

Finally, we hope that you enjoy the LibreOffice space on Matrix, and have fun!

by Mike Saunders at January 25, 2022 04:59 PM

January 20, 2022

LibreOffice Dev Blog

LibreOffice Developer Community

Do you want to contribute to the LibreOffice development, but you don’t know enough about the LiberOffice code internals? Do you want to enhance the application or fix a bug in LibreOffice, but you don’t know how to do that? LibreOffice developer community can help you not only for at the beginning, but by helping you focus on the right aspect of the code. Reviewers will review your code that eventually will be part of the LibreOffice code!

How to understand the LibreOffice code?

There are good ways to grow your knowledge around LibreOffice. Let’s review some of them:

1)  Learn how to start development

First things first: see our “Getting started with LibreOffice development video“:

Getting Started (Video Tutorial)

Also, make sure that you have read this page in the Wiki:

2) Read the developer documentation

One way to understand the LibreOffice is to read the documents, manuals and other learning materials. We have gathered many of them here:

But as a community driven project, not every aspect of the code has comprehensive documentation. So, the other way would be as follows:

3) Read the code

The code itself is the best source to understand the internals of the software. You can use OpenGrok to browse the code better. Module documentation and Doxygen output (for example, see doxygen documentation for canvas) can help you to understand many aspects of each module.

But as agile manifesto says, we are supposed to value people over other things:

“Individuals and interactions over processes and tools
Working software over comprehensive documentation”

So, other than the referring to the code itself, a good way is to ask help from other people:

Community at the LibreOffice Conference 2016 in Brno

LibreOffice Conference 2016 in Brno

4) Ask help from the experts and other developers:

LibreOffice developers community consists of a large number of people. According to our developers’ page in the TDF Wiki, we have more than 1000 people involved in the development of LibreOffice in which a third of them were active during the previous year:

You can see the top contributors to LibreOffice core here:

Among these contributors, there are people with more experience and are experts in different areas of LibreOffice development. We have a list of these experts categorized by their field of expertise:

These experts are available in the LibreOffice developer mailing list. Please do not ask your question directly from these people by email, but rather discuss it in the mailing list or CC them in a bug report or in Gerrit. Discussing the issues in the mailing list and bug reports can take a while, but the results are usually well thought answers. To get a quicker answer, the #libreoffice-dev IRC channel would be a better choice.

While asking on IRC, please ask your question directly with enough details. If you want to send many lines of code or other lengthy text, please use a paste website like paste.debian.net and then provide a link.

If you want to know how a specific feature is implemented in LibreOffice, or how to approach to fix a bug, or any other questions related to development, this room is a good place for you.

For a suggested reading for asking smart questions that lead to good answers, take a look at this article from Eric S. Raymond:

One important note about IRC is that the LibreOffice IRC rooms are bridged into the matrix space: https://matrix.to/#/#libreoffice-space:matrix.org, so that you can easily use several Matrix clients to access to the IRC rooms. It is specially good when you want to access the previous chats, or you want to access the rooms via a mobile phone. There are several good Matrix clients available for the desktop, web and mobile platforms.

Due to the nature of the FOSS software and its community, active people in the LibreOffice developer community are usually helpful and are willing to help. Get help from LibreOffice developer community and start contribution and help make things better in the LibreOffice!

by Hossein Nourikhah at January 20, 2022 03:06 PM

January 18, 2022

LibreOffice QA Blog

LibreOffice 7.3 RC2 is available for testing

The LibreOffice Quality Assurance ( QA ) Team is happy to announce LibreOffice 7.3 RC2 is available for testing!

LibreOffice 7.3 will be released as final at the beginning of February, 2022 ( Check the Release Plan for more information ) being LibreOffice 7.3 RC2 the forth and last pre-release since the development of version 7.3 started in mid June, 2021. Since the previous release, LibreOffice 7.3 RC1, 117 commits have been submitted to the code repository and 65 issues got fixed. Check the release notes to find the new features included in this version of LibreOffice.

LibreOffice 7.3 RC2 can be downloaded from here for Linux, macOS and Windows, and it will replace 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 Telegram.

LibreOffice is a volunteer-driven community project and your help is much appreciated.

Happy testing!!

Download it now!

by x1sc0 at January 18, 2022 10:57 AM

Official TDF Blog

OpenOffice users: Getting messages about documents being made in a newer version?

Many OpenOffice users are seeing warnings when trying to access files in the OpenDocument Format (eg .odt, .ods). The full text is:

This document was created by a newer version of OpenOffice. It may contain features not supported by your current version.

In this case, the document was probably made in LibreOffice, which supports newer versions of the OpenDocument Format. LibreOffice is a successor project to OpenOffice that’s much more actively developed, with new major releases every six months, hugely improved Microsoft Office compatibility, and many other benefits:

LibreOffice supports OpenDocument Format 1.3, the latest release. COSM, the Community of ODF Specification Maintainers, is an independent project started by The Document Foundation, and oversees the work of preparing the new standards for ratification. COSM is starting to crowdfund work on the OpenDocument 1.4 standard – so organisations that would like to contribute should get in touch!

Another benefit of OpenDocument is its backwards compatibility. Even when a file is built around a newer format, older versions of the software should still be able to read and process it. So you’re not forced onto an upgrade treadmill (although as LibreOffice is free and open source software, it’s always good to keep up-to-date!)

Learn more about LibreOffice and OpenDocument here.

by Mike Saunders at January 18, 2022 10:26 AM

January 17, 2022

Official TDF Blog

Community Member Monday: Baltasar García Perez-Schofield

Today we have a quick chat with Baltasar García Perez-Schofield, who recently became a Member of The Document Foundation, the non-profit entity behind LibreOffice…

Tell us a bit about yourself!

I’m from Spain, in that north-west corner called Galicia. Professionally I’m a teacher of computer science, and dedicate my spare time to my family, swimming, hiking, and retro computing.

I defended my PhD Thesis in 2002, wrote it entirely in what was then OpenOffice, and later forked to LibreOffice, and more importantly spawned The Document Foundation. I then decided that I should somehow return the favor by collaborating (as far as I could), with the product.

What are you working on in the LibreOffice project right now?

I’ve lately dedicated my time to the Basic interpreter, solving simple bugs such as type-persistence through compilation and execution, or the behaviour of certain functions that do not adhere to the specification.

Why did you decide to become a member of TDF?

I think that the open standards for document formats are vital for any computer user, and therefore defend the TDF’s existence. In that sense, becoming a member was an honor for me, and I also perceived it as a recognition for the work I did.

Anything else you plan to do in the future? What does LibreOffice really need?

I plan to continue collaborating with LibreOffice, at least in my free time gaps. Regarding the needs of LibreOffice, I think it probably needs marketing and compatibility (right now it is a must) with MS Office. The objective would be to let computer users realize that they have the possibility to use a free product as capable (or even more so!) as the private one.

Thanks to Baltasar for all his contributions! All LibreOffice users can join him in helping to improve the software, and find out what they can do for LibreOffice. �

by Mike Saunders at January 17, 2022 03:30 PM

January 12, 2022

LibreOffice QA Blog

QA/Dev Report: December 2021

General Activities

  1. LibreOffice 7.2.4 and LibreOffice 7.1.8 were released on December 6 providing an important security fix
  2. Alain Romedenne improved the Help content for Basic functions
  3. Olivier Hallot (TDF) added help for sep= in CSV files, VBA mode for RGB functions and warnings, improved help for Writer fields and started annotating Help for functions that are not in ODF spec
  4. Rafael Lima improved the Help content for the ScriptForge library, fixed opening Help from an Expert Configuration property dialog, improved subscript/superscript help about Sidebar and fixed CTL information in Hyphenation help page
  5. Kevin Suo corrected the Calc error string STR_LONG_ERR_NO_VALUE in the code and fixed a couple of Calc error strings in Help
  6. flywire improved the Help content for the ScriptForge library
  7. Stanislav Horáček made fixes in Basic and Python Help content
  8. Jean-Pierre Ledure worked on the ScriptForge library
  9. Miklos Vajna (Collabora) continued working on support for colour themes in OOXML documents and made OLE object previews reliable
  10. Krzysztof Hałasa fixed a problem with connecting to a Mysql/MariaDB instance
  11. Ismael Luceno improved the POSIX-compatibility of the build system
  12. Chris Sherlock continued VCL refactoring work and improved font matching for CJK text
  13. Rizal Muttaqin made many updates to the Colibre icon theme
  14. Áron Budea (Collabora) made a Python-related build fix for Win 10 with Win 11 SDK
  15. René Engelhard (Debian) fixed a UI test
  16. Christian Lohmaier (TDF) created a build target for vscode-ide-integration and made some other build-related improvements
  17. Tünde Tóth (NISZ) fixed OOXML import of transparent hatching
  18. Arnaud Versini made some code cleanups
  19. Regina Henschel improved extrusion of custom shapes
  20. Dhiraj Holden added all subtotal functions to Calc’s autosum
  21. David Tardon (Red Hat) updated the libmwaw library providing support for legacy Mac documents
  22. Kohei Yoshida updated liborcus and mdds libraries used by Calc and fixed Calc child styles not inheriting from parent
  23. Hossein Nourikhah (TDF) created a minimal VCL example application and fixed a problem with line spacing in inserted SVG files
  24. Michael Weghorn implemented accessibility handling for focused Calc cell state
  25. Heiko Tietze (TDF) made some UI improvements
  26. Winfried Donkers fixed Function wizard lying about DCOUNT and DCOUNTA arguments
  27. Attila Bakos (NISZ) continued working on support for text in grouped shapes
  28. Armin Le Grand (allotropia) made border line width use the correct default, made right-clicking hyperlinks in Calc behave more intuitively, fixed handling of closing brackets in hyperlinks and worked on fixing a glitch in diagonal border lines
  29. Thorsten Behrens (allotropia) fixed a Windows build issue and made some cleanups
  30. Samuel Mehrbrodt (allotropia) fixed saving Calc color filter when having multiple data ranges in sheet
  31. Urja Rannikko fixed a time tick issue on 32-bit Linux that caused problems with auto-playing slideshows and long-running macros
  32. Laurent Balland-Poirier improved the Writer templates shipped with LibreOffice by removing their hardcoded page size setting
  33. Tomaž Vajngerl (Collabora) added a document setting for image preferred DPI and did a lot of refactoring in drawinglayer and vcl
  34. Justin Luth (Collabora/SIL) fixed a Calc UI focus issue, Other options in Find and Replace dialog not staying closed in certain cases, horizontal alignment in certain imported XLSX files, an issue with disabled buttons in Mailmerge toolbar, reappearing Calc hidden columns, an issue with Calc comment marks not getting hidden when hiding columns, an issue with Impress/Draw bullets and numbering not activating from the dialog, made it so applying a border colour on an image activates border as well and added easier autocomplete access to frequently used Calc functions
  35. Tibor Nagy (NISZ) added a workaround for “At least” line spacing not being supported by PPTX format
  36. László Németh made many improvements to DOCX and ODT change tracking, especially regarding tables
  37. Andreas Heinisch fixed an issue with using dates in Calc conditional formatting, an issue with Basic variable information being overwritten, made Basic boolean operators return values of type Boolean and made Home key behave more intuitively in Basic IDE
  38. Eike Rathke (Red Hat) improved relative cell address parsing in Calc, fixed an issue with XML data always importing to first sheet in certain cases and made the Calc functions AND(), OR(), XOR() propagate their errors
  39. Stephan Bergmann (Red Hat) made many code and build-related cleanups as well as test fixes
  40. Jim Raykowski made many improvements to Navigator, including list order of elements and added an expert option ‘navigateonselect’ to navigate by single click instead of double
  41. Caolán McNamara (Red Hat) fixed an issue with unwanted kerning changes when working in Calc and improved autofilter submenu arrangement. He also fixed many crashes and UI issues and continued working on the new gtk4 UI backend
  42. Gábor Kelemen (allotropia) made it so EXIF rotation of inserted images is applied without asking and made the Hide Columns section in Sidebar smarter
  43. Roland Kurmann made it so non-sequentially selected rows or columns are counted in Calc’s statusbar and fixed the output for Calc’s function INFO(“OSVERSION”) on Linux
  44. Julien Nabet fixed issues with Evolution email client as address database, made quick find in Calc search by value by default, made Parameter query with :parameter IS NULL work in Firebird databases and made it possible to delete external tables in Firebird databases. He also fixed several crashes and regressions and made many code cleanups
  45. Michael Stahl (allotropia) finished the implementation of Curl-based WebDAV and was able to remove Neon and Serf dependencies
  46. Luboš Luňák (Collabora) continued improving the Windows clang-cl build support, continued improving the speed of Calc VLOOKUP function, fixed an issue with images appearing blurred in Impress edit mode and made it so Calc text operations are not queried by numeric value allowing to make substring queries on dates, for example
  47. Vasily Melenchuk (CIB) implemented Word content controls support
  48. Jan-Marek Glogowski (allotropia) made extensive improvements to the build system
  49. Xisco Faulí (TDF) made over thirty additions and improvements to automated tests
  50. Mike Kaganski (Collabora) fixed an issue with dragging and dropping images with Unicode characters in their filenames into documents on Windows, added support for detecting UTF-16 data without BOM, improved the VSCode IDE integration, made saving registrymodifications.xcu more robust (resistant to corruption) on Windows, fixed problems caused by recently opened remote files that are not accessible, fixed check marks rendered incorrectly in menus on scaled-up desktops and made many code cleanups
  51. Noel Grandin (Collabora) improved thread-safety of the code and the load time of large charts. He also made many code cleanups

Kudos to Ilmari Lauhakangas for helping to elaborate this list.

Reported Bugs

489 bugs, 49 of which are enhancements, have been reported by 304 people.

Top 10 Reporters

  1. Telesto ( 60 )
  2. Kevin Suo ( 13 )
  3. Mike Kaganski ( 12 )
  4. achim ( 9 )
  5. Hossein ( 9 )
  6. NISZ LibreOffice Team ( 8 )
  7. Aron Budea ( 7 )
  8. Regina Henschel ( 7 )
  9. Gabor Kelemen (allotropia) ( 6 )
  10. Colin ( 5 )

Triaged Bugs

504 bugs have been triaged by 88 people.

Top 10 Triagers

  1. Dieter ( 54 )
  2. Buovjaga ( 41 )
  3. raal ( 30 )
  4. Julien Nabet ( 26 )
  5. Heiko Tietze ( 22 )
  6. V Stuart Foote ( 21 )
  7. Mike Kaganski ( 20 )
  8. stragu ( 19 )
  9. zcrhonek ( 19 )
  10. Xisco Faulí ( 18 )

Resolution of resolved bugs

489 bugs have been set to RESOLVED.

Check the following sections for more information about bugs resolved as FIXED, WORKSFORME and DUPLICATE.

Fixed Bugs

167 bugs have been fixed by 32 people.

Top 10 Fixers

  1. Caolán McNamara ( 13 )
  2. Julien Nabet ( 11 )
  3. Justin Luth ( 10 )
  4. Michael Stahl ( 10 )
  5. Noel Grandin ( 10 )
  6. László Németh ( 9 )
  7. Mike Kaganski ( 6 )
  8. Eike Rathke ( 5 )
  9. Jim Raykowski ( 4 )
  10. Olivier Hallot ( 4 )

List of critical bugs fixed

  1. tdf#144244 Crash when FILESAVE a calc file after delete some columns ( Thanks to Julien Nabet )
  2. tdf#146286 Crash/hang calling context menu ( Thanks to Noel Grandin )

List of high severity bugs fixed

  1. tdf#128895 Hidden Columns but keep reappearing! Unlike Rows which will stay hidden (steps: comment 19) ( Thanks to Justin Luth )
  2. tdf#136855 Crash correcting with spell checker with track & changes enabled ( Thanks to Michael Stahl )
  3. tdf#141175 CRASH: cutting content with redlines ( Thanks to Michael Stahl )
  4. tdf#144565 Crash in: SfxItemSet::Clone(bool,SfxItemPool *) ( Thanks to Michael Stahl )
  5. tdf#146141 Delete empty comment crash – Crash in: `anonymous namespace’::collectUIInformation ( Thanks to Caolán McNamara )

List of crashes fixed

  1. tdf#136452 Crash swlo!SwTextFrame::HasFootnote+0xc0d: at undo ( Thanks to Michael Stahl )
  2. tdf#136855 Crash correcting with spell checker with track & changes enabled ( Thanks to Michael Stahl )
  3. tdf#139843 Crash swlo!SwNumRule::MakeNumString ( Thanks to Michael Stahl )
  4. tdf#141175 CRASH: cutting content with redlines ( Thanks to Michael Stahl )
  5. tdf#144244 Crash when FILESAVE a calc file after delete some columns ( Thanks to Julien Nabet )
  6. tdf#144565 Crash in: SfxItemSet::Clone(bool,SfxItemPool *) ( Thanks to Michael Stahl )
  7. tdf#145062 Crash when inserting hidden field over input field ( Thanks to Michael Stahl )
  8. tdf#145090 LO Calc Crash with drop-down-menu (GTK3) ( Thanks to Noel Grandin )
  9. tdf#145892 Crash (failed assert) in DBGUTIL build when inserting a section from a WEBP ( Thanks to Caolán McNamara )
  10. tdf#145928 Crash mergedlo!SdrUndoObj::ImpShowPageOfThisObject+33 (SwpHints::Check(bool) ndhints.cxx:359) ( Thanks to Michael Stahl )
  11. tdf#146141 Delete empty comment crash – Crash in: `anonymous namespace’::collectUIInformation ( Thanks to Caolán McNamara )
  12. tdf#146179 Developer Tools crashes LO when inspecting object in special file ( Thanks to Julien Nabet )
  13. tdf#146208 FILEEDIT DOCX Crash at Redo of accepting table row deletions ( Thanks to László Németh )
  14. tdf#146286 Crash/hang calling context menu ( Thanks to Noel Grandin )
  15. tdf#146295 Base linked to txt or csv files crashes on filter dialog ( Thanks to Julien Nabet )
  16. tdf#146333 Crash when closing table wizard, then odb file only (not whole LO). ( Thanks to Caolán McNamara )
  17. tdf#146363 [regression] LibreOffice Draw crashes when changing width/height of text box ( Thanks to Julien Nabet )

List of performance issues fixed

  1. tdf#146037 Autofilter is slow when filter conditions are set in multiple columns ( Thanks to Luboš Luňák )
  2. tdf#146108 Calc is slow to change cell focus in a document with a big background image ( Thanks to Noel Grandin )

List of old bugs ( more than 4 years old ) fixed

  1. tdf#103331 Child styles not inheriting from parent ( Thanks to Kohei Yoshida )
  2. tdf#104823 For Word 2016 Content Controls Placeholder Text is Being Displayed Instead of Text from XML ( Thanks to Vasily Melenchuk )
  3. tdf#107292 uninterrupted deletion tracked changes inserted in wrong order during ODF import ( Thanks to László Németh )
  4. tdf#58125 [UI] Comment marks not hidden when column is hidden ( Thanks to Justin Luth )
  5. tdf#90805 TOOLBAR: Enabling border color on an image should enable border ( Thanks to Justin Luth )
  6. tdf#92010 Easier autocomplete access to more frequently used functions ( Thanks to Justin Luth )
  7. tdf#99027 [FORMATTING] Default table border width is useless ( Thanks to Samuel Mehrbrodt )

WORKSFORME bugs

92 bugs have been retested by 41 people.

Top 10 testers

  1. Buovjaga ( 15 )
  2. Dieter ( 8 )
  3. Robert Großkopf ( 5 )
  4. Kevin Suo ( 4 )
  5. Julien Nabet ( 4 )
  6. Ezinne ( 3 )
  7. Aron Budea ( 3 )
  8. BogdanB ( 3 )
  9. Michael Warner ( 3 )
  10. m.a.riosv ( 3 )

DUPLICATED bugs

100 bugs have been duplicated by 37 people.

Top 10 testers

  1. V Stuart Foote ( 9 )
  2. stragu ( 8 )
  3. Julien Nabet ( 8 )
  4. phv ( 6 )
  5. Dieter ( 6 )
  6. Heiko Tietze ( 5 )
  7. Buovjaga ( 5 )
  8. Michael Stahl (allotropia) ( 4 )
  9. Telesto ( 4 )
  10. Kevin Suo ( 3 )

Verified bug fixes

71 bugs have been verified by 18 people.

Top 10 Verifiers

  1. stragu ( 20 )
  2. NISZ LibreOffice Team ( 15 )
  3. BogdanB ( 9 )
  4. Dieter ( 5 )
  5. Buovjaga ( 4 )
  6. Gabor Kelemen (allotropia) ( 3 )
  7. Aron Budea ( 2 )
  8. Kevin Suo ( 2 )
  9. Xisco Faulí ( 2 )
  10. Rizal Muttaqin ( 1 )

Categorized Bugs

300

by x1sc0 at January 12, 2022 09:21 AM

January 11, 2022

Official TDF Blog

“LibreOffice Expert” magazines available for schools and communities

Recently, Linux New Media released a special edition magazine, full of tutorials, tips and tricks about LibreOffice. And some articles were contributed by members of the LibreOffice community! Well, we have 50 issues to give away – and we’d like to get them in the hands of students, communities and other projects around the world:

The magazines come with DVDs that include LibreOffice for Linux, Windows and macOS, alongside extra templates, extensions and guidebooks. So ideally, we’d like to get these magazines out to locations and communities where internet connections aren’t always available – so that the users can really benefit from the discs.

So, if you can help us to distribute this magazines to students, local communities and other places, drop us a line! Let us know what you plan to do with them, and how many you need. Send us an email and let’s spread the word!

by Mike Saunders at January 11, 2022 10:02 AM

January 10, 2022

Official TDF Blog

Oyez! Oyez! Oyez! The LibreOffice Draw Guide 7.2 has arrived!

Peter Schofield and the LibreOffice Documentation Team announcs the immediate availability of the Draw Guide 7.2, the update of the Draw Guide for LibreOffice version 7.2.

Draw Guide 7.2

Anyone who wants to quickly acquire knowledge about LibreOffice Draw and is new to drawing software, or may be familiar with another office suite, will find this user guide very useful. It introduces the main features of LibreOffice Draw. Although Draw is a vector graphics drawing tool, it can also perform some operations on raster graphics (pixels) such as photographs.

Using Draw, a wide variety of graphical images can be created quickly. Some of the drawing functions are: layer management, snap functions and grid-point system, dimensions and measurement display, connectors for making organization charts, 3D functions that enable small 3D drawings to be created (with texture and lighting effects), drawing and page-style integration, and Bézier curves.

A printed version is available at Lulu Inc, thanks to Jean H. Weber. The Draw Guide completes the LibreOffice 7.2 book collection, and opens the LibreOffice 7.3 shelf for more work and activities.

Peter Schofield

Peter Schofield

The Draw Guide 7.2 – as well as many other LibreOffice Guides – can be downloaded from the LibreOffice Documentation website and the LibreOffice Bookshelf website.

A big thank you to Peter and the LibreOffice Draw documentation team!

Join the Documentation Team

by Olivier Hallot at January 10, 2022 12:09 PM

January 09, 2022

Roman Kuznetsov

Language Tool 5.6 is released

Language Tool 5.6 is available now.

Russian, English, Ukrainian, French, German, Portuguese, Catalan, Dutch and Spain language checking modules were updated in this release.

LibreOffice integration was improved too.

You can download the LibreOffice extension by the link.

by Roman Kuznetsov (noreply@blogger.com) at January 09, 2022 11:19 AM

January 06, 2022

Marius Popa Adrian

Firebird Grammar railroad diagram

Railroad diagram for the Firebird database you can see/get it here (following the instructions)https://github.com/FirebirdSQL/firebird/issues/6898Zip file with self contained images is here (generated with the above instructions).

by Popa Adrian Marius (noreply@blogger.com) at January 06, 2022 02:14 PM

Miklos Vajna

Start of document themes in Impress: shape text

Impress now has the start of document theme support: it is possible to define a document theme on master pages and you can refer to the theme colors from shape text (including effects).

First, thanks to our partner SUSE for working with Collabora to make this possible.

Motivation

PowerPoint users can attach a set of colors (and fonts, formattings) to master pages, and then refer to these in shape text, shape fill, shape geometry. You can even make the original color lighter and darker. These effects are preserved when you change the theme colors.

This is a larger feature, this blog post shows how theme colors can be defined and how to refer to those colors from Impress shape text. The rest of the feature is to be done in follow-up steps.

Results so far

Here is a demo that shows how it works:

Figure 1. Demo of theme support in Impress shape text

In other words, it consists of 2 parts on the UI:

  • You can define theme colors once you click on "Master View" in Impress, and then select the Slide → Slide properties menu item, and there choosing the new Theme tab. You can e.g. make "accent1" blue, "accent2" orange, and so on.

  • Then you can refer to these theme colors. Select some shape text, and then either use Format → Character → Font effects → Font color → Theme colors or use the sidebar to set the font color.

This later shows a grid of colors: each column is one theme color and then the column offers various lighter and darker variants of the color.

And the important bit: if you later change theme colors, then the color of shape text (using theme colors) is updated, even the effects (lighter or darker variants) are preserved.

To set expectations, this only works for shape text for now, and only in Impress, as a start.

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. The first step was to upstream work by Tomaž Vajngerl and Sarper Akdemir from the feature/themesupport2 feature branch:

The rest of the work was to go through the usual stages of document model, UNO API, rendering, ODP/PPTX filter and UI work to complete the work started on the branch:

Want to start using this?

You can get a snapshot / demo of Collabora Office and try it out yourself right now: try unstable snapshot. 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 (7.4).

by Miklos Vajna at January 06, 2022 08:07 AM

January 05, 2022

Jean Hollis Weber

Writer Guide for Mac users

Cover of Writer Guide macOS editionI revised the Writer Guide to make a macOS-specific edition, and the LibreOffice Documentation Team accepted it as one of the official books.

You can download the PDF free here.

I will produce a printed version soon.

by Jean at January 05, 2022 05:49 AM

December 31, 2021

LibreOffice Dev Blog

Happy New Year 2022!

I wish everyone the best for 2022!

Hoping a great year for LibreOffice, all the FOSS users and developers, and above that, everyone around the globe!

Hoping to see:

more and more contributors,

many more nice features,

lots of helpful bug fixes,

and increased user satisfaction.

See you in 2022!

by Hossein Nourikhah at December 31, 2021 10:59 PM

Use basegfx to convert angle unit – EasyHack

What is basegfx?

First, what is basegfx, how it is used for converting angle units, and why we should care?

If you look at the list of LibreOffice modules in docs.libreoffice.org, you will see that basegfx is one of the LibreOffice modules. It contains the “algorithms and data types for graphics“, and it provides useful functions for LibreOffice graphics code. We care because using these functions helps us write cleaner code using well tested methods.

basegfx classes in LibreOffice API documentation

basegfx classes in LibreOffice API documentation

In the LibreOffice code related to angles, there are many instances of angle unit conversion. For instance, conversion from radians (rad) to degrees (deg) or vice versa is common. However, currently some of these unit conversions directly divide or multiply the angle values by or in π/180.

Alternatively, a better approach would be using basegfx fTools methods. If you look at include/basegfx/numeric/ftools.hxx in the LibreOffice source code, you will find these methods among others: rad2deg() and deg2rad(). The usage is obvious as the names imply: converting from radians (rad) to degrees (deg), and vice versa.

Consider this expression that converts fAngle from degrees to radians:

3.14159265359/180.0*fAngle

A more understandable form is:

basegfx::deg2rad(fAngle)

In addition, if you look closely to the function declaration, it is visible that you can pass a multiplier named DegMultiple:

template <int DegMultiple=1> constexpr double deg2rad(double v)

To illustrate the usage, there are many interesting applications of this function in the current code with this extra parameter. Consider this old usage of deg2rad():

double fRad = basegfx::deg2rad(nMSORotationAngle / 60000.0)

Now, the new simplified code is:

double fRad = basegfx::deg2rad<60000>(nMSORotationAngle);

You can see some example commits around this idea:

Finding instances for change

This grep search provides some instances of the issue, although not all of the results are related:

git grep -F 3.14 *.cxx

A more restricted search can be:

git grep -F 3.14 *.cxx | grep 180

You can also take a look at EasyHack tdf#145759: Use symbolic constants instead of magic numerical constants.

Final Notes

EasyHacks are a good start for newcomers. This specific improvement  is filed as tdf#146479.

Of course, the basegfx module has more interesting classes and functions for doing things beyond the simple angle unit conversion. I will write more about some of other classes and functions inside this LibreOffice module. These are the source folders inside basegfx/src, which show the different applications of this module:

color  numeric polygon raster tuple  curve
matrix point   range   tools  vector

In the end, if you want to contribute to LibreOffice code by working on this improvement, but you need to know how to get started with LibreOffice development, I suggest you to see our video tutorial:

Getting Started (Video Tutorial)

by Hossein Nourikhah at December 31, 2021 10:31 PM

December 28, 2021

Marius Popa Adrian

Short overview of Firebird events in 2021

From all of us at Firebird Project, we'd like to wish you a safe and happy holiday season and a peaceful and prosperous new year! And here is a short overview of Firebird events in 2021.

by Popa Adrian Marius (noreply@blogger.com) at December 28, 2021 09:46 AM

December 27, 2021

LibreOffice QA Blog

LibreOffice 7.3 RC1 is available for testing

The LibreOffice Quality Assurance ( QA ) Team is happy to announce LibreOffice 7.3 RC1 is available for testing!

LibreOffice 7.3 will be released as final at the beginning of February, 2022 ( Check the Release Plan for more information ) being LibreOffice 7.3 RC1 the third pre-release since the development of version 7.3 started in mid June, 2021. Since the previous release, LibreOffice 7.3 Beta1, 241 commits have been submitted to the code repository and 130 issues got fixed. Check the release notes to find the new features included in this version of LibreOffice.

LibreOffice 7.3 RC1 can be downloaded from here for Linux, macOS and Windows, and it will replace 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 Telegram.

LibreOffice is a volunteer-driven community project and your help is much appreciated.

Happy testing!!

Download it now!

by x1sc0 at December 27, 2021 04:28 PM

Roman Kuznetsov

LibreOffice Calc Guide 7.1 Russian Edition

Finally, I have ended the LibreOffice Calc Guide translating to Russian.

You can download it by the link. Enjoy!
 

by Roman Kuznetsov (noreply@blogger.com) at December 27, 2021 04:08 PM

December 25, 2021

Jean Hollis Weber

LibreOffice Documentation Year in Review

Olivier Hallot has published a detailed summary of the Documentation Team’s successes during 2021 and a look ahead at plans for 2022.

2021: The Year the LibreOffice Documentation Team Shined

by Jean at December 25, 2021 04:14 AM

December 23, 2021

Marius Popa Adrian

Firebird Project is happy to announce general availability of Firebird 4.0.1

Firebird Project is happy to announce general availability of Firebird 4.0.1 — the first point release in the Firebird 4.0 series.This sub-release offers many bug fixes and also adds a few improvements, please refer to the Release Notes for the full list of changes.Binary kits for Windows, Linux and Android platforms are immediately available for download.

by Popa Adrian Marius (noreply@blogger.com) at December 23, 2021 06:30 PM

Michael Meeks

2021-12-23 Thursday

  • Last minute end of year invoicing admin thrash; grateful for turning the bottom of people's budgets into Free Software in 2022.
  • Pleased to see what we've achieved in 2022 with a nice Thank You blog from the marketing team.

December 23, 2021 01:03 PM

December 22, 2021

Michael Meeks

2021-12-22 Wednesday

  • Calls with various staff; company meet-up in gather.town, nice to see some different faces. Sync. with Andras.
  • Julie & Isaac & David over for dinner - lovely to see them; played games variously in the evening.

December 22, 2021 09:00 PM

December 21, 2021

Michael Meeks

2021-12-21 Tuesday

  • Up; breakfast, worked with Simon in the kitchen until lunch, call with Elisa. Dropped him to the station. Mail chew, catch-up, booster vaccination, partner sales call, dinner. Out to sing carols to the local retirement home (from outside) - worked late.

December 21, 2021 09:00 PM

December 20, 2021

Michael Meeks

2021-12-20 Monday

  • Planning call; admin, into Cambridge to collect Simon L; into the office, contract signing thanks to Iris & Hannah; briefing, laptop setup thanks to Doug. Call with marketers. Back to Newmarket, out for dinner with Simon N, caught up with J. bed.

December 20, 2021 09:00 PM

December 19, 2021

Michael Meeks

2021-12-19 Sunday

  • All Saints - H. played organ, as did Peter; Carols. Lunch, slugged, back in the evening with H. to sing for carol concert with the town band. Watched The Mentalist with babes variously, played Rumikub.

December 19, 2021 09:00 PM

December 16, 2021

Marius Popa Adrian

Flamerobin 0.9.3.11 Snapshot released with new Firebird 4 features and fixes

Flamerobin 0.9.3.11 Snapshot released with new firebird 4 features and fixes :Fixed timestamp problem with Fb4 : PR #224Fixed problems with numeric typesFix encoding at blob editorFix UDF property loading at Fb<=2.5Implementing Fb4 datatypes by @andy-123( in progress) : PR #223 Implement time zone support for firebird 4

by Popa Adrian Marius (noreply@blogger.com) at December 16, 2021 07:09 PM

Jean Hollis Weber

New user guide for Base

LibreOffice 7.2 Base GuideAnother user guide was published by the LibreOffice documentation team on December 8: the LibreOffice 7.2 Base Guide, for the database component. It is available in free PDF or ODT from the LibreOffice website, or in a low-cost printed copy from Lulu.com.

Given the very few changes in Base since LibreOffice 6.4, the team decided to just rebrand the previous book, as part of an effort to produce a complete set of books for v7.2. If you want printed copies and already have the Base 6.4 book, you could choose to save some money by not buying this one.

Visit the Documentation page on the LibreOffice website for links.

by Jean at December 16, 2021 05:15 AM

December 15, 2021

Miklos Vajna

Writer embedded objects: reliably update object previews

Embedded objects in Writer consist of a native data part and a preview part. Until now, there was no way to force the update of the preview part in case it was empty.

Now the Tools → Update → Update all menu item updates such previews as well. This is especially useful if you manipulate the ZIP/XML document directly to insert native data, then load it into Writer to generate a preview.

First, thanks Vector who made this work by Collabora possible.

Motivation

The Update all menu item already updates all sorts of generated content: fields, table of contents, charts, the document layout, but not the preview of embedded objects. You could work this around by double-clicking on the embedded object to re-generate the preview, but doing this manually for a larger document is not efficient. This is especially useful for hand-crafted documents which have proper native data, but no preview image yet.

Results so far

Here is how an embedded object without a preview looks like:

https://share.vmiklos.hu/blog/sw-ole-update/old.png
Figure 1. Writer embedded object with no preview

Now using the Update all menu item turns a sample document into this preview:

https://share.vmiklos.hu/blog/sw-ole-update/new.png
Figure 2. Writer embedded object with a preview

How is this implemented?

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

sw: update previews of OLE objects on "update all" is the change implementing this small feature. It works by:

  • Iterating over the frame formats ("special" formats) of the document

  • Filter out shapes

  • Filter out objects which are only reachable from the undo stack

  • Filter out objects which are not embedded ("OLE") objects

  • Once we have access to the OLE node, jump to its SwOLEObj, then to its svt::EmbeddedObjectRef, which knows how to re-calculate the preview bitmap

  • Finally notify the OLE node that the preview was updated, so the necessary repaint can happen

Want to start using this?

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 (7.4).

by Miklos Vajna at December 15, 2021 08:23 AM

December 10, 2021

Caolán McNamara

gtk3: calc autofilter as GtkPopover

 

 

How calc's autofilter looks today under gtk3 + wayland in trunk towards LibreOffice 7.4

by caolan (noreply@blogger.com) at December 10, 2021 08:35 PM

LibreOffice QA Blog

QA/Dev Report: November 2021

General Activities

  1. LibreOffice 7.1.7 was released on November 4
  2. LibreOffice 7.2.3 was released on November 25
  3. Alain Romedenne improved the Help content for the ScriptForge library and several Basic functions
  4. Adolfo Jayme Barrientos updated the help strings for QR and Barcode dialog
  5. Ilmari Lauhakangas (TDF) made it so the navigation menus in Help close when clicking outside of them
  6. Olivier Hallot (TDF) improved the Help content for Digital Signatures, text filters, Calc’s CSV import and also did a lot of refactoring in Help
  7. Rafael Lima improved the Help content for the ScriptForge library, improved the Help for Writer’s Direct Cursor mode and did several refactorings and cleanups in Help
  8. Steve Fanning improved the Help content for Calc’s CONVERT_OOO and SUM functions
  9. Jean-Pierre Ledure worked on the ScriptForge library
  10. Eike Rathke (Red Hat) improved the help for Calc’s MATCH function, improved language/locale display, made handling of German ß more robust, fixed an edge case issue of update references when sorting range of cells in Calc, fixed an issue with referencing Calc expression labels and made Regression Statistics more robust by using cell references for calculating offsets
  11. Mike Kaganski (Collabora) improved the help for Basic’s CInt function, continued optimising UNO API’s Sequence, adapted a WebDAV fix to the new webdav-curl, improved the Visual Studio IDE integration, made the internal handling of units and constant numbers more robust, fixed a Windows installer issue, made registry updating more robust, improved handling of document print events as macro triggers and made many code cleanups
  12. Ming Hua updated help for inserting a cross-reference
  13. flywire improved the help for Python locations
  14. Winfried Donkers made Calc’s WEEKS add-in function provide correct results
  15. Michael Warner fixed a problem with Poppler PDF library not being properly installed and made Sentence case formatting operation honour selection
  16. Michael Meeks (Collabora) fixed crashes related to fetching clipboard data and moving windows
  17. René Engelhard (Debian) made a couple of build fixes
  18. Armin Le Grand (allotropia) made a couple of Qt improvements
  19. Michael Weghorn improved Qt stability and layouts and fixed a HiDPI scaling bug affecting the KDE Frameworks UI
  20. Sarper Akdemir (Collabora) implemented support for PPTX colour themes
  21. Matt K removed an unnecessary pop-up dialog for read-only documents
  22. Bubli made it possible to undo adding and editing animations in Impress
  23. Rizal Muttaqin added icons for 1.15 line spacing and UNO Object Inspector
  24. Chris Sherlock continued VCL refactoring work
  25. Thorsten Behrens (allotropia) added sccache to the Windows build setup
  26. Vasily Melenchuk (CIB) implemented handling of DOCX content controls and made it so spaces in field instructions are preserved in DOCX export
  27. Heiko Tietze (TDF) made spellchecking wavy lines more prominent depending on the zoom level, fixed an issue with Basic IDE in dark mode and made several layout improvements
  28. David Alan Gilbert fixed some issues spotted by cppcheck
  29. Dennis Francis (Collabora) made Calc’s copying to clipboard take objects into account
  30. László Németh added section and parent RDF metadata support for Style Inspector, implemented change tracking for moved text, fixed a change tracking issue with referenced text and improved DOCX change tracking support as well
  31. Szymon Kłos (Collabora) addded glow and soft edge panels for Fontwork Sidebar UI
  32. Andreas Heinisch fixed a line spacing issue in Impress, made it so base64-encoded images are imported correctly from HTML files and fixed the handling of embedded newlines set via an API method in Calc
  33. Andras Timar (Collabora) fixed a regression affecting scaling in charts driven by macros
  34. Gábor Kelemen (allotropia) made “Perform file extension check” option respect finalisation via Windows registry, made it so file names are properly encoded in error dialogs and fixed button actions being reversed in image rotation prompt dialog
  35. Regina Henschel enabled matte and metal extrusion surfaces for Fontwork
  36. Hossein Nourikhah (TDF) made many code cleanups and improvements to the code documentation. He also published a couple of blogpost about easyhacks, the first one about the use of atan2 and the second about the use of symbolic constants
  37. Tünde Tóth (NISZ) implemented saving of password for editing with PPTX files and made it so character formatting targeting only numbering is imported correctly from DOCX files
  38. Samuel Mehrbrodt (allotropia) added more Beanshell scripting samples for Writer and Calc and improved the line thickness presets and their presentation
  39. Kohei Yoshida upgraded mdds and liborcus libraries
  40. Tibor Nagy (NISZ) continued improving PPTX hyperlink support and fixed PPTX export of proportional line spacing and superscript and subscript positions
  41. Björn Michaelsen fixed some regressions caused by refactoring of Writer internals
  42. Xisco Faulí (TDF) made over sixty additions and improvements to automated tests
  43. Tor Lillqvist (Collabora) fixed a problem with paper sizes when printing from Impress and made some code cleanups and build fixes
  44. Jim Raykowski made many improvements to Navigator, including its tracking of objects and fixed an old focus-switching crash in Writer
  45. Attila Szűcs (NISZ) fixed a problem where unwanted pages would appear in the context of multicolumn sections with footnotes
  46. Tomaž Vajngerl (Collabora) fixed signing OOXML documents with multiple certificates and images anchored to page in Writer sometimes getting the wrong z-order. He also worked on support for colour themes from OOXML documents.
  47. Miklos Vajna (Collabora) fixed an issue with graphic sizes in RTF import, actions on IME-edited text not being grouped in the undo history, following styles when editing imported RTF files, several undo issues, handling of chart theme overrides in PPTX import and viewing of OLE objects in protected sections. He also worked on support for colour themes from OOXML documents and wrote about linked paragraph and character styles in Writer
  48. Justin Luth (Collabora/SIL) fixed issues related to page styles in DOC/DOCX files, an autocorrect capitalisation issue, a DOCX SmartArt roundtrip issue, issues with text transparency and colour in PPTX import, an issue with paper sizes in print preview and visual artifacts appearing in the context of Calc’s autofilter
  49. Noel Grandin (Collabora) improved thread-safety of the code, greatly improved the speed of Calc’s autofilter with big data sets, the speed of calculating fractions and made loading of large RTL Writer documents faster. He also made many code cleanups
  50. Giuseppe Castagno worked on the implementation of Curl-based WebDAV
  51. Michael Stahl (allotropia) worked on the implementation of Curl-based WebDAV, fixed issues with PDF export of Writer master documents, improved the MS Word compatibility with list indents and fixed a Writer undo crash. He also fixed some regressions and made code cleanups.
  52. Kevin Suo fixed some CJK and localisation issues and made code cleanups
  53. Julien Nabet improved MySQL/MariaDB support, fixed multiple Macro execution when triggered by Document print event, fixed some crashes and regressions and made many code cleanups
  54. Stephan Bergmann (Red Hat) made Java detection more robust on macOS and made many code and build-related cleanups, including dropping workarounds for the Boost library and improving the Windows clang-cl build support
  55. Caolán McNamara (Red Hat) fixed many crashes and UI issues and continued working on the new gtk4 UI backend
  56. Jan-Marek Glogowski (allotropia) made several Qt improvements and fixed a Windows font GDI handle leak
  57. Luboš Luňák (Collabora) greatly improved the speed of Calc’s autofilter with big data sets, improved the speed of Calc VLOOKUP function, implemented HiDPI support for Skia graphics engine on macOS and made macOS default to Skia and improved the Windows clang-cl build support He also made ccache work on Windows
  58. Akshit Kushwaha added a Cubic-Bezier Curve Draw Test into VCL tests

Kudos to Ilmari Lauhakangas for helping to elaborate this list.

Reported Bugs

483 bugs, 45 of which are enhancements, have been reported by 311 people.

Top 10 Reporters

  1. Telesto ( 36 )
  2. Rafael Lima ( 11 )
  3. Mike Kaganski ( 10 )
  4. sophie ( 8 )
  5. NISZ LibreOffice Team ( 7 )
  6. Gabor Kelemen (allotropia) ( 7 )
  7. Colin ( 6 )
  8. Kevin Suo ( 6 )
  9. Xisco Faulí ( 6 )
  10. David ( 5 )

Triaged Bugs

477 bugs have been triaged by 84 people.

Top 10 Triagers

  1. Xisco Faulí ( 89 )
  2. Buovjaga ( 43 )
  3. Dieter ( 39 )
  4. Heiko Tietze ( 36 )
  5. Julien Nabet ( 25 )
  6. Kevin Suo ( 18 )
  7. m.a.riosv ( 18 )
  8. Mike Kaganski ( 15 )
  9. Michael Warner ( 13 )
  10. Roman Kuznetsov ( 12 )

Resolution of resolved bugs

499 bugs have been set to RESOLVED.

Check the following sections for more information about bugs resolved as FIXED, WORKSFORME and DUPLICATE.

Fixed Bugs

198 bugs have been fixed by 41 people.

Top 10 Fixers

  1. Caolán McNamara ( 32 )
  2. Justin Luth ( 12 )
  3. Luboš Luňák ( 11 )
  4. László Németh ( 7 )
  5. Heiko Tietze ( 7 )
  6. Eike Rathke ( 5 )
  7. Michael Stahl ( 5 )
  8. Tibor Nagy ( 4 )
  9. Vasily Melenchuk ( 4 )
  10. Bjoern Michaelsen ( 4 )

List of critical bugs fixed

  1. tdf#144940 Calc disables header/footer or loses footer content when saves a spreadsheet ( part 2 ) ( Thanks to Attila Bakos (NISZ) )
  2. tdf#145584 Writer crashes on exporting as PDF with its Range in PDF Options set to ‘Selection’ ( Thanks to Julien Nabet )

List of high severity bugs fixed

  1. tdf#119206 Freeze if Option “Edit document properties before saving” is Enabled ( Thanks to Caolán McNamara )
  2. tdf#121546 CRASH undoing table paste ( Thanks to Michael Stahl )
  3. tdf#142420 Filter By Color: Hangs after apply a color filter and then deselect the filter ( Thanks to Caolán McNamara )
  4. tdf#143511 Writer: Comment oversized and text missing when printed in margin in Linux ( Thanks to Caolán McNamara )
  5. tdf#143815 EDITING: images duplicated after undo ( Thanks to Bjoern Michaelsen )
  6. tdf#143971 LibreOffice 7.2 introduced addition popup for read only file that shouldn’t be showing ( Thanks to Matt K )
  7. tdf#144249 Deleting 10.000 rows column in a spreadsheet: 15 sec with 4.1| 10 sec up to 300+ sec with 6.2| 130 sec with 7.3 ( Thanks to Luboš Luňák )
  8. tdf#145158 character format dialog doesn’t show the current character size any more ( Thanks to Mike Kaganski )
  9. tdf#145621 Crash swlo!IDocumentMarkAccess::IsLegalPaMForCrossRefHeadingBookmark+0x2681 at overwriting certain area ( Thanks to Michael Stahl )

List of crashes fixed

  1. tdf#121546 CRASH undoing table paste ( Thanks to Michael Stahl )
  2. tdf#145207 One click and three presses of TABs crashes Writer ( Thanks to Jim Raykowski )
  3. tdf#145464 Crash when opening Digital signatures dialog from infobar (GTK3) ( Thanks to Caolán McNamara )
  4. tdf#145486 LO crashes with finalized ooSetupLastVersion ( Thanks to homeboy445 )
  5. tdf#145567 Crash when click “File > Open” if previously a Draw document is opened via Writer and closed ( Thanks to Caolán McNamara )
  6. tdf#145584 Writer crashes on exporting as PDF with its Range in PDF Options set to ‘Selection’ ( Thanks to Julien Nabet )
  7. tdf#145611 CRASH: Inserting page breaks and undoing ( Thanks to Attila Szűcs )
  8. tdf#145621 Crash swlo!IDocumentMarkAccess::IsLegalPaMForCrossRefHeadingBookmark+0x2681 at overwriting certain area ( Thanks to Michael Stahl )
  9. tdf#145731 CRASH: Closing document ( Thanks to Julien Nabet )
  10. tdf#145786 Crash in: libgobject-2.0.so.0 Gtk-CRITICAL when attempting to change color palette (UI, Sidebar) ( Thanks to Caolán McNamara )
  11. tdf#145863 Crash when click on autofilter dropdown, cancel and then click on the dropdown again ( Thanks to Caolán McNamara )
  12. tdf#145952 CRASH: pressing any arrow key after displaying autofilter dropdown (gen) ( Thanks to Caolán McNamara )

List of performance issues fixed

  1. tdf#133835 Calc autofilter freeze after deselecting an item (in a column containing many unique string values) and pressing OK ( Thanks to Luboš Luňák )
  2. tdf#133867 Open file slightly slower & ctrl+a causes CPU to peak (autofilter related?) ( Thanks to Luboš Luňák )
  3. tdf#144249 Deleting 10.000 rows column in a spreadsheet: 15 sec with 4.1| 10 sec up to 300+ sec with 6.2| 130 sec with 7.3 ( Thanks to Luboš Luňák )

List of old bugs ( more than 4 years old ) fixed

  1. tdf#110003 Lower-case ß is capitalized as SS instead of ẞ ( Thanks to Eike Rathke )
  2. tdf#48622 Line thickness specification – too many choices, nonintuitive ( Thanks to Samuel Mehrbrodt )
  3. tdf#54465 FORMATTING: Inserting footnote in section (with columns), make that sections size grow to the full page ( Thanks to Attila

by x1sc0 at December 10, 2021 04:32 PM

December 08, 2021

Marius Popa Adrian

Leaving MySQL - blog post by long-term MySQL team member Steinar H. Gunderson

Leaving MySQL - blog post by long-term MySQL team member Steinar H. Gundersonwith discussions on Hacker News :https://news.ycombinator.com/item?id=29455852and on reddit : https://www.reddit.com/r/programming/comments/ra81ki/leaving_mysql/

by Popa Adrian Marius (noreply@blogger.com) at December 08, 2021 02:38 PM

December 01, 2021

LibreOffice QA Blog

LibreOffice 7.3 Beta1 is available for testing

The LibreOffice Quality Assurance ( QA ) Team is happy to announce LibreOffice 7.3 Beta1 is available for testing!

LibreOffice 7.3 will be released as final at the beginning of February, 2022 ( Check the Release Plan for more information ) being LibreOffice 7.3 Beta1 the second pre-release since the development of version 7.3 started in mid June, 2021. Since the previous release, LibreOffice 7.3 Alpha1, 1199 commits have been submitted to the code repository and 205 issues got fixed. Check the release notes to find the new features included in this version of LibreOffice.

LibreOffice 7.3 Beta1 can be downloaded from here 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 Telegram.

LibreOffice is a volunteer-driven community project and your help is much appreciated.

Happy testing!!

Download it now!

by x1sc0 at December 01, 2021 10:51 AM

November 23, 2021

LibreOffice Dev Blog

Use symbolic constants instead of magic numerical constants – EasyHack

There are many situations that you need to use numerical constants in your code. If you use numerical literal values directly instead of symbolic constants, it can cause problems. For example, consider this piece of code that calculate area of a circle:

double area = 3.14 * r * r;

This is not OK, because:

1. The value of π is not 3.14 nor 3.141592. π is an irrational number, and the suitable value depends on the number of decimal places that you can/want to use among unlimited decimals of π.

2. Suppose that you want to change the numerical literal to increase the number of decimals that you use. You should search for 3.14, and check one by one to see if it is actually π, or it is another 3.14 unrelated to the well-known mathematical constant.

C++ logo

C++ is the main programming language used in the LibreOffice development

Using symbolic constants

A better code can be:

double area = M_PI * r * r;

and with more long and meaningful name for variables:

double circle_area = M_PI * radius * radius;

Because of the above mentioned problems, it is better to use some numerical constant instead.

ES.45: Avoid “magic constants”; use symbolic constants

If it is well-known (like π), you should use the appropriate symbolic constant like M_PI. If not, you should define a new constant with proper name and type with ‘contsexpr’.

One solution to find such magic constants is to start from a list of some well known mathematical constants:

Then, store some of them in a text file, let’s say ‘constants.txt’, then search for all these values inside C++ files:

git grep -Ff constants.txt *.cxx *.hxx

Many of these symbolic constants like M_PI already exist in C++ standard library or some place in the LibreOffice code, and you can use them easily.

You should examine the ‘grep’ results carefully, because not every 3.14 refers to PI.

Final Notes

Besides fixing the bugs, there are many places to work on improving the code, and some of these are listed as EasyHacks. The specific improvement that is discussed in this blog post is filed as tdf#145759.

If you want to work on this improvement about using symbolic constants, but you need to know how to get started with LibreOffice development, I suggest you to see our video tutorial:

Getting Started (Video Tutorial)

by Hossein Nourikhah at November 23, 2021 12:01 PM

Jean Hollis Weber

Two new user guides: Impress and Calc

Cover of Impress 7.2 GuideCover of Calc 7.2 GuideThe latest user guides from the LibreOffice documentation team are LibreOffice 7.2 Impress and LibreOffice 7.2 Calc, available in free PDF, ODT, or to read in a browser. Low-cost printed copies are available from Lulu.com.

Visit the Documentation page on the LibreOffice website for links.

by Jean at November 23, 2021 07:07 AM

November 17, 2021

LibreOffice Dev Blog

Use atan2 function instead of atan – EasyHack

When working with shapes and charts in LibreOffice, there are several occasions that you have to calculate tan-1x. But is atan function always the best choice? Here we discuss using atan2 function instead of atan in C++ code. When used in correct place, atan2 can have a lot of benefits when calculating atan ( y / x ).

Unit circle

Unit circle

If you use atan(x) to calculate the output θ, you have to think about different situations that may occur, because with the same value of x, there are multiple values of θ, and it would be your responsibility to handle that, and find out what is the suitable value of θ.

But, if you have two values y and x, and you want to calculate atan(y / x), there is a better choice: using atan2(y, x). As discussed here, atan2(y, x) can handle the values from all the 4 different quadrants.

This is the formula for atan2(y, x):

atan2 formula

atan2 formula

In this way, you don’t have to check the sign of x and y because atan2() does this by itself.

There are some places in the LibreOffice core that is currently using atan, and atan2 is more suitable. For example, in hwpfilter/source/hcode.cxx:

1447 double angle;
1448 angle = (180 / PI) * atan( ( y2 - y1 ) * 1.0 / ( x2 - x1 ));
1449 if( y2 >= y1 ){ /* 1, 2 quadrant */
1450      if( angle < 0. )
1451            angle += 180.;
1452 }
1453 else{ /* 3, 4 quadrants */
1454      if( angle > 0 )
1455            angle += 180.;
1456      else
1457            angle += 360.;
1458 }

A better choice would be this one single line:

1458 double angle = basegfx::rad2deg(atan2(y2 - y1 , x2 - x1));

Instead of multiplying the output of atan() by (180 / PI) to get degrees out of radians, we simply use basegfx::rad2deg() for the conversion, and also using the atan2(), those conditions would be superfluous, and are removed.

Finding instances of atan to replace with atan2

This grep command shows the instances of the similar situations:

git grep atan\(

Within the results of the grep, you can find places that atan2() is better. You should take care about the conditions that may be present (or missing) after the atan(). These conditions usually check the sign of the numerator and denominator in the fraction passed to atan(). Make sure that the code works correctly after removing them.

Final Notes

Besides fixing the bugs, there are many places to work on improving the code, and some of these are listed as EasyHacks. The specific improvement that is discussed in this blog post is filed as tdf#145630, and you can submit patches for this improvement  to LibreOffice Gerrit.

If you want to work on this improvement, but you need to know how to get started with LibreOffice development, I suggest you to see our video tutorial:

Getting Started (Video Tutorial)

by Hossein Nourikhah at November 17, 2021 03:38 PM

November 12, 2021

Miklos Vajna

Start of linked paragraph and character styles in Writer

Writer now has the start of linked character and paragraph styles. This improves DOCX compatibility, extends ODT and it’ll improve the style previews and the UI in the future, hopefully.

First, thanks Docmosis who made this work by Collabora possible.

Motivation

Word allows linking paragraph and character styles together, which means only the paragraph one will be present on the UI. Such a split has benefits if you customize the character properties on the UI and later you want to update the paragraph properties from a template, for example.

This is frequent markup in DOCX files, because Word defaults to splitting out the character properties of a Test paragraph style into a Test Char character style on editing.

Saving the document in Writer and then viewing it in Word lead to loosing these links, so their style pickers started to show unwanted Test Char rows.

Results so far

We used to preserve such linking information when doing DOCX → DOCX conversion for a while, since about 2013. But such preservation was in-memory, so if you saved the document to ODT, then such information was lost. This approach also lacked a real document model, which is necessary to incrementally build this feature into a complete solution.

Here is how the style picker in Word looks like now, after a DOCX → ODT → DOCX pipeline:

https://share.vmiklos.hu/blog/sw-linked-styles/new.png
Figure 1. Word’s style picker, new output: no unwanted additional character styles

Here is how this used to look like before the new changes (note the Heading 1 Char line between Heading and Index):

https://share.vmiklos.hu/blog/sw-linked-styles/old.png
Figure 2. Word’s style picker, old output: unwanted additional character styles

And here is how the input document looks like:

https://share.vmiklos.hu/blog/sw-linked-styles/ref.png
Figure 3. Word’s style picker, reference output: no unwanted additional character styles

How is this implemented?

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

Just to set expectations, this is currently an invisible feature, but unlike the old approach from 8 years ago, this one can be extended into a full feature, incrementally. It also survives ODT roundtrips.

Want to start using this?

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 (7.3).

by Miklos Vajna at November 12, 2021 03:19 PM

October 28, 2021

Caolán McNamara

GTK4: Toolbars in Sidebar

 

GTK4 port of Libreoffice now supports the "widebutton" Toolbar MenuButtons that show a preview of the selected color.

by caolan (noreply@blogger.com) at October 28, 2021 04:28 PM

CIB News

LibreOffice powered by CIB: jetzt mit aktualisierten LTS-Versionen

Software-Update: CIB und die allotropia software haben die Produktpalette LibreOffice powered by CIB auf die Version 6.4 LTS aktualisiert. Dieses Update enthält eine komplette Desktop-Produktivitätslösung für Unternehmen und Organisationen jeder Größe, die LibreOffice in einer stabilen Umgebung einsetzen können – Support inklusive. Die Produktpalette von LibreOffice powered by CIB umfasst: 1.            LibreOffice powered by CIB … LibreOffice powered by CIB: jetzt mit aktualisierten LTS-Versionen weiterlesen

Der Beitrag LibreOffice powered by CIB: jetzt mit aktualisierten LTS-Versionen erschien zuerst auf CIB Blog.

by CIB Marketing at October 28, 2021 08:24 AM

October 22, 2021

Luboš Luňák

Optimizing LibreOffice for a larger number of users

Have you ever edited a document in LibreOffice in more than one window? Right, neither have I. Who'd think about LibreOffice and more than one user at the same time, right? Except ... somebody did and that's how collaborative editing based on LibreOffice works. For whatever strange reason, somewhen in the past somebody thought that implementing multiple views for one document in OpenOffice (StarOffice?) was a good idea. Just select Window->New Window in the menu and you can edit your favourite document in 50 views that each show a different part of the document and update in real time. And that, in fact, is how collaborative editing such as with Collabora Online works - open a document, create a new view for every user, and there you go.

But, given that this has never really been used that much, how well did the original relevant code perform and scale for more users? Well, not much, it turns out. Not a big surprise, considering that presumably back when that code was written nobody thought the same document could be edited by numerous users at the same time. But I've been looking exactly into this recently as part of optimizing Collabora Online performance, and boy, are there were gems in there. You thought that showing the same document in more views would just mean more painting also in those views? Nah, think again, this is OpenOffice code, the land of programming wonders.

Profiling the code

When running Online's perf-test, which simulates several users typing in the same document, most of the time is actually spent in SwEditShell::EndAllAction(). It's called whenever Writer finishes an action such as adding another typed characters, and one of the things it does is telling other views about the change. So here LO spends a little time adding the character and then the rest of the time is spent in various code parts "talking" about it. A good part of that is that whenever an action is finished, that view tells the others about it happening, and then all those views tell all other views about how they reacted to it, making every change O(n^2) with the number of views. That normally does not matter, since on the desktop n generally tends to be 1, but hey, add few more views, and it can be a magnitude slower or more.

Redrawing, for example, is rather peculiar. When a part of the document changes, relevant areas of the view need redrawing. So all views get told about the rectangles that need repainting. In the desktop case those can be cropped by the window area, but for tiled rendering used by Online the entire document is the "window" area, so every view gets told about every change. And each view collects such rectangles, and later on it processes them and tells all other views about the changes. Yes, again. And it seems that in rare cases each view really needs its own repaint changes (even besides the cropping, as said before). So there's a lot of repeated processing of usually the same rectangles over and over again.

One of the functions prominently taking place in CPU costs is SwRegionRects::Compress(), which ironically is supposed to make things faster by compressing a group of rectangles into a smaller set of rectangles. I guess one of the cases in OpenOffice where the developer theoretically heard about optimizations being supposed to make things faster, but somehow the practical side of things just wasn't there. What happens here is that the function compares each rectangle with each other, checking if they can be merged ... and then, if yes and that changes the set of rectangles, it restarts the entire operation. Which easily makes the entire thing O(n^3). I have not actually found out why the restarting is there. I could eventually think of a rather rare case where restarting makes it possible to compress the rectangles more, but another possibility is that the code dates back to the time when it was not safe to continue after modifying whichever container SwRegionRects was using back then, and it has stayed there even though that class has been using to std::vector since a long time ago.

Another kind of interesting take on things is the SwRegionRects::operator-= in there. Would you expect that rectangles would be collected by simply, well, collecting them and then merging them together? Maybe you would, but that's not how it's done here. See, somebody apparently thought that it'd be better to use the whole area, and then remove rectangles to paint from it, and then at the end invert the whole thing. The document area is limited, so maybe this was done to "easily" crop everything by the area? It works, except, of course, this is way slower. Just not slow enough to really notice when n is 1.

Other code that works fine with small numbers but fails badly with larger ones is VCLEventListeners, a class for getting notified about changes to VCL objects such as windows. It's simply a list of listener objects, and normally there aren't that many of those. But if LO core gets overloaded, this may grow. And since each listener may remove itself from the list at any point, the loop calling all of them always checks for each of them if the listener is still in the list. So, again, O(n^2). And, of course, it's only rarely that any listener removes itself, so the code spends a lot of time doing checks just in case.

But so that I do not talk only about old code, new code can do equally interesting things. Remote rendering uses LOK (LibreOfficeKit), which uses text-based messages to send notifications about changes. And the intuitive choice for writing text are C++ iostreams, which are flexible, and slow. So there will be a lot of time spent in creating text messages, because as said above, there are many changes happening, repeatedly. And since there are so many repeated messages, it makes sense to write extra class CallbackFlushHandler that collects these messages and drops duplicates. Except ... for many of the checks it first needs to decode text mesages back to binary data, using C++ iostreams. And in most cases, it will find out that it can drop some message duplicates, so all these string conversions were done for nothing. Oops.

And there are more ways in which things can get slower rather than faster. CallbackFlushHandler uses an idle timer to first process all data in bulk and flush the data at once only when idle. Except if it gets too busy to keep up, and it can easily get too busy because of all the things pointed out above, it may take a very long time before any data is flushed. To make things even worse, the queue of collected messages will be getting longer and longer, which means searching for duplicates and compressing it will get longer. Which in turn will make everything even slower, which again in turn will make everything even slower. Bummer.

All in all, if unlucky, it may not take that much for everything to slow down very noticeably. Online's perf-test, which simulates only 6 users typing, can easily choke itself for a long time. Admitedly, it simulates them all typing at the same time and rather fast, which is not very a realistic scenario, but typing hitting the keyboard randomly and quickly is exactly how we all test things, right? So I guess it could be said that Collabora Online's perf-test simulates users testing Collabora Online performance :). Realistic scenarios are not going to be this bad.

Anyway. In this YT video you can see in the top part how perf-test performs without any optimizations. The other 5 simulated users are typing elsewhere in the document, so it's not visible, but it affects performance.

Improved performance

But as you can see in the other two parts, this poor performance is actually already a thing of the past. The middle part shows how big a difference can even one change make. In this specific case, the only difference is adding an extra high-priority timer to CallbackFlushHandler, which tries to flush the message queue before it becomes too big.

The bottom part is all the improvements combined, some of them already in git, some of them I'm still cleaning up. That includes changes like:

  • SwRegionRects::Compress() is now roughly somewhere at O(n*log(n)) I think. I've fixed the pointless restarts on any change, and implemented further optimizations such as Noel's idea to first sort the rectangles and not compare ones that cannot possibly overlap.
  • I have also changed the doubly-inverted paint rectangles handling to simply collecting them, cropping them at the end and compressing them.
  • One of the things I noticed when views collect their paint rectangles is that often they are adjacent and together form one large rectangle. So I have added a rather simple optimization of detecting this case and simply growing the previous rectangle.
  • Since it seems each Writer view really needs to collect its own paint rectangles, I have at least changed it so that they do not keep telling each other about them all the time in LOK mode. Now they collect them, and only once at end they are all combined together and compressed, and often thousands of rectangles become just tens of them.
  • Another thing Writer views like to announce all the time in LOK mode are cursor and selection positions. Now they just set a flag and compute and send the data only once at the end if needed.
  • VCLEventListeners now performs checks only if it knows that a listener has actually removed itself. Which it knows, because it manages the list.
  • Even though LOK now uses tiled rendering to send the view contents to clients, LO core was still rendering also to windows, even though those windows are never shown. That's now avoided by ignoring window invalidations in LOK mode.
  • Noel has written a JSON writer which is faster then the Boost one, and made non-JSON parts use our OString, which is faster and better suited for the fixed-format messages.
  • I have converted the from-message conversions to also use our strings, but more importantly I have changed internal LOK communications to be binary rather than text based, so that they usually do not even have to be converted. Only at the end those relatively few non-duplicated text messages are created.
  • Noel has optimized some queue handling in CallbackFlushHandler and then I have optimized it some more. Including the high-priority timer mentioned above.
  • There have been various other improvements from others from Collabora as part of the recent focus on improving performance.
  • While working on all of this, I noticed that even though we have support for Link Time Optimization (LTO), we do not use it, probably because it was broken on Windows. I've fixed this and sorted out few other small problems, and releases in the future should get a couple percent better performance across the board from this.

This is still work in progress, but it already looks much better, as now most of the time is actually spent doing useful things like doing the actual document changes or drawing and sending document tiles to clients. LOK and Collabora Online performance should improve noticeably, recent (Collabora) versions 6.4.x should include already some improvements, and the upcoming Collabora Online 2021 should have all of them.

And even though this's been an exercise in profiling LibreOffice performance for something nobody thought of back when the original OpenOffice code was written, some of these changes should matter even for desktop LibreOffice and will be included starting with LO 7.3.



by llunak (noreply@blogger.com) at October 22, 2021 02:15 PM

Miklos Vajna

Transparent shadow for tables from PPTX in Impress

Impress is now able to correctly render shadows for table shapes, even if the shadow itself or the fill of the table cells have transparency. The result is now compatible with PowerPoint.

First, thanks to our partner SUSE for working with Collabora to make this possible.

Motivation

We got a PPTX document, which has a table shape with pink background and a blurry shadow. Impress rendered a red background, making the text hard to read.

The request was to improve the shadow rendering to be PowerPoint-compatible and in general correctly support transparency when it comes to table cell fills and table shadows.

Results so far

The table shadow now looks like this:

https://share.vmiklos.hu/blog/sd-table-transparent-shadow/new.png
Figure 1. New render result in Impress

Matching the reference rendering:

https://share.vmiklos.hu/blog/sd-table-transparent-shadow/ref.png
Figure 2. Reference render result

While background was red previously:

https://share.vmiklos.hu/blog/sd-table-transparent-shadow/old.png
Figure 3. Old render result in Impress

You can see that not only the background in the top center cell is pink now, but the blurry table shadow is still correct.

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 fixes:

With these, it’s now possible to add transparency to both table cell fills and to table shadows, and the rendering will take both into account, correctly.

Want to start using this?

You can get a snapshot / demo of Collabora Office and try it out yourself right now: try unstable snapshot. 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 (7.3).

by Miklos Vajna at October 22, 2021 06:48 AM

October 18, 2021

LibreOffice Design Blog

Results from the Survey about LibreOffice Calc

Introduction

Earlier this year we run a survey on LibreOffice Calc. It was inspired by a similar questionnaire for LibreOffice Draw (see first and second blog post). The Calc survey was used to learn about how Calc is being used, what features are most important to users and where they expect to see the improvements to the software.…

by Heiko Tietze at October 18, 2021 08:18 AM