The Document Foundation Planet

 

July 01, 2022

Marius Popa Adrian

Flamerobin 0.9.3.12 Snapshot released with a few Firebird 4 fixes

Flamerobin 0.9.3.12 Snapshot released with a few Firebird 4 fixes , here is the changelog Implement Int128 by @andy-123 in #230Implement firebird 4 types: decimal(16) and decimal(34) by @andy-123 in #244Some fixes by @Jdochoa in #254Some Fixes by @Jdochoa in #255FB Library Search by @Jdochoa in #261Full Changelog: 0.9.3.11...0.9.3.12

by Popa Adrian Marius (noreply@blogger.com) at July 01, 2022 02:57 PM

Official TDF Blog

Community Member Monday: রিং/ring (S R Joardar)

Today we’re talking to রিং/ring (S R Joardar) from Bangladesh, who’s helping to spread the word about Free Software (as in freedom) – including LibreOffice – in his country…

Tell us a bit about yourself!

I am a GNU/Linux user, lover, translator and supporter since 2000, and a sysadmin since 2003 using Red Hat 5.0, later Fedora and RHEL. I am using Ubuntu in personal computers since December 2006. Canonical sent me a zero-priced gift pack of 10 CDs with Ubuntu 6.10 back then. I have started deployment of Ubuntu servers with Ubuntu 8.04 manual installations in 2009, and just provisioned a few instances with 22.04 on Linode and Digital Ocean. In the years 2009-2017, I personally made over 6,000 new desktop or laptop installations with Ubuntu and LinuxMint.

I am from Dhaka, Bangladesh. In 2011, I along with 21 more Free software enthusiasts formed an organization titled “FOSS Bangladesh (Foundation for Open Source Solutions Bangladesh)” and started with official tour to the Universities here in Bangladesh. Up to December 2019, FOSS Bangladesh had organized 75 events in various universities and colleges and schools to spread out the digital freedom knowledge among the pupils, the future leaders. I have invited Mr. Richard M. Stallman came in Dhaka, Bangladesh at Daffodil International University for a session in 2014 and he agreed to my request and visited. I am also a Mozillian (Mozilla Firefox and Thunderbird Fan, User and Supporter and end user support volunteer). At present I am working as the General Secretary of FOSS Bangladesh.

I am an IT Freelancer, working on PPH and Freelancer. I love to cook food and play cricket besides my computing and voluntary support to spread Free Software knowledge. 🙂

How well is FOSS, LibreOffice, GNU/Linux etc. known and used in Bangladesh? What are the obstacles to adoption?

In 2011, FOSS Bangladesh ran an online survey to gather approximate user data about GNU/Linux users, with the help of various online local language forums sites here in Bangladesh. Back then, it was around 9,000 people. As per my statistical knowledge nowadays, the pupils I had served with installations and had met by 2017 became professionals, and GNU/Linux users is now more than 100 times of that 15,000 count.

The obstacles to adoption of GNU/Linux and LibreOffice in here in Bangladesh is the lack of law bindings regarding software piracy. So far, can obtain a pirated copy of Windows 10 with Microsoft Office, and many more and get used to that closed, bind and blinded ecosystem. So when it comes to the professional workplace, most people got bound into that closed software ecosystem. They do not think that they are stealing – and on the piracy index globally, they make Bangladesh ashamed. Government offices here also go alike with the closed software ecosystem.

But the scenario is changing day to day. Those who once got the chance to get out of that closed system embracing the GNU/Linux ecosystem or the Free Software getting hold for his/her lifetime. They also spreads the enjoyment of Freedom to their surroundings.

Spreading the knowledge of Free Software and Digital Freedom is a must. Only sharing and caring, and contributing to the Freedom Ecosystem, can make that happen in the future. But the COVID-19 pandemic affected local events ing FOSS Bangladesh since 2020. We hope to start with a new run soon, by November 2022.

You’d like to grow the LibreOffice community in Bangladesh. How can others help out and get involved?

Translation and helping others to use LibreOffice can help grow the community in Bangladesh more quickly. Since 2010, I have transformed three industries in Bangladesh from Microsoft Windows to Ubuntu, and then LibreOffice came along. To this date, date they are using Ubuntu 20.04 or Linux Mint 20.3 with LibreOffice 7.3.2. I have to install, train end users to get into the ecosystem, and provide day-to-day user support. Around 500 users are migrated and get evolved in this Free Software ecosystem, and using it in the professional arena. I can recall 15,000 valid contacts, but the real count is many more than that.

In Bangladesh, I know that there are there are more private companies running only on Free software.

Finally, how can people get involved and help to grow the LibreOffice and Free Software community in Bangladesh?

We have already have setup a Telegram group – join it here.

Many thanks to Ring and all members of the Bangladesh community for their work and support!

by Mike Saunders at July 01, 2022 07:54 AM

June 30, 2022

Michael Meeks

2022-06-30 Thursday

  • Catch up with Miklos, partner call, COOL community call bits, call with Philippe & an old friend.
  • Today Collabora's app-store experiment with LibreOffice Vanilla was ended. In time we will write up and publish the data more widely, make final donations to TDF and as/when sensible finish up some Mac work in due course. Many thanks to all those who worked hard over the years to get LibreOffice into many app-stores - you rock. Of course - you can still get Collabora Office for your Mac, and help to support FOSS development that way.

June 30, 2022 06:49 PM

June 29, 2022

Michael Meeks

2022-06-29 Wednesday

  • Slide work with Eloy much of the morning.
  • Really pleased to see so much work from the team, and the wider community released as Collabora Online 22.05 - a first cut of our next round of development work around the next-generation Collabora Online - quicker, slicker, better, prettier and more.
  • Partner Council - really good to catch up with and get feedback from our partners - companies making awesome things happen in the world of FLOSS.
  • Community & partner call later. Sync with Miklos.
  • Band practice early with H. in the evening, Beckie's birthday.

June 29, 2022 09:00 PM

Official TDF Blog

LibreOffice project and community recap: June 2022

Here’s our summary of updates, events and activities in the LibreOffice project in the last four weeks – click the links to learn more…

  • We’re still maintaining the LibreOffice 7.3 branch, of course, and on June 9 we released LibreOffice 7.3.4 with over 80 bugfixes and compatibility improvements.

  • Meanwhile, রিং/ring (S R Joardar) from the Bangladeshi LibreOffice community told us about his efforts to spread the word about Free Software in his country. The community has set up a Bangladeshi Telegram channel to coordinate activities. Thanks to everyone involved!

  • And finally, The Document Foundation is supporting a student through the Deutschlandstipendium initiative. We caught up with Julian Hübenthal to find out what he’s doing, and what he knows about FOSS already…

Keep in touch – follow us on Twitter, Facebook and Mastodon. Like what we do? Support our community with a donation – or join us and help to make LibreOffice even better!

by Mike Saunders at June 29, 2022 12:29 PM

June 28, 2022

Michael Meeks

2022-06-28 Tuesday

  • Mail, team testing session; marketing review, Partner Council slide review late in the evening.

June 28, 2022 09:00 PM

June 27, 2022

Michael Meeks

2022-06-27 Monday

  • Mail chew, new-look, quicker planning call; missed Gokay. Patch review, dentist appointment & then TDF board call - the Dentist was fun - a new chap.

June 27, 2022 09:00 PM

June 26, 2022

Michael Meeks

2022-06-26 Sunday

  • All Saints, played with the band. Home for a pizza lunch. Read to the babes a bit, Chris, Leanna & Annabelle over to see us for a bit and borrow some tools. Enjoyed the sun together.

June 26, 2022 09:00 PM

June 24, 2022

Official TDF Blog

Interview with German Scholarship student Julian Hübenthal

In 2019, the German LibreOffice community unfortunately lost one of its most active members, Klaus-Jürgen Weghorn. In his memory, The Document Foundation decided to support a student through the Deutschlandstipendium initiative.

Let’s get to know him…


Tell us a bit about yourself!

I come from near Lüneburg. I graduated from the Wilhelm-Raabe-Schule Gymnasium in Lüneburg last year.

I have quite a wide range of interests, which certainly contributed to my Abitur [qualification at the end of secondary education] average of 1.0 and did not make my decision to study any easier. However, my main focus is certainly in the mathematical/scientific/technical subjects.

I like to ride my road bike and go cycling in general, and I like to travel, gladly combining both interests together.

What are you currently studying, and how is it going?

I am currently studying computer science in my second semester. The course is interesting and I like the challenge. However, I have found out that the course is not quite right for me. Therefore, I would like to change to business informatics for the coming winter semester, for which I am currently already taking the appropriate modules. I am impressed by what I have already learned in a comparatively short time during my studies. Apart from that, I have been able to maintain my Abitur during my studies.

Are you familiar with free and open source software?

I have already used free and open source software, for example the Linux distribution Ubuntu as part of my studies, or Eclipse even before my studies. However, I have not yet participated in such a project myself.

Apart from the questions, I would also like to thank you again for the support and recognition of my achievements.


You’re welcome, Julian! We wish you every success in your studies.

by Mike Saunders at June 24, 2022 09:55 AM

June 22, 2022

Marius Popa Adrian

Firebird 3.0.10 sub-release is available

Firebird Project is happy to announce general availability of Firebird 3.0.10 — the latest point release in the Firebird 3.0 series.This sub-release offers a few important bugfixes, 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, packages for Mac OS will follow shortly.

by Popa Adrian Marius (noreply@blogger.com) at June 22, 2022 07:09 PM

June 15, 2022

LibreOffice QA Blog

LibreOffice 7.4 Beta1 is available for testing

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

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

LibreOffice 7.4 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 June 15, 2022 11:53 AM

June 09, 2022

Official TDF Blog

LibreOffice 7.3.4 Community has been released

Berlin, June 9, 2022 – LibreOffice 7.3.4 Community, the fourth minor release of the LibreOffice 7.3 family, targeted at technology enthusiasts and power users, is available for download from https://www.libreoffice.org/download/.

The LibreOffice 7.3 family offers the highest level of compatibility in the office suite market segment, starting with native support for the OpenDocument Format (ODF) – beating proprietary formats in the areas of security and robustness – to superior support for DOCX, XLSX and PPTX files.

Microsoft files are still based on the proprietary format deprecated by ISO in 2008, which is artificially complex, and not on the ISO approved standard. This lack of respect for the ISO standard format may create issues to LibreOffice, and is a huge obstacle for transparent interoperability.

LibreOffice for enterprise deployments

For enterprise-class deployments, TDF strongly recommends the LibreOffice Enterprise family of applications from ecosystem partners, with long-term support options, professional assistance, custom features and Service Level Agreements: https://www.libreoffice.org/download/libreoffice-in-business/.

LibreOffice Community and the LibreOffice Enterprise family of products are based on the LibreOffice Technology platform, the result of years of development efforts with the objective of providing a state of the art office suite not only for the desktop but also for mobile and the cloud.

Products based on LibreOffice Technology are available for major desktop operating systems (Windows, macOS, Linux and Chrome OS), mobile platforms (Android and iOS) and the cloud. They may have a different name, according to each company brand strategy, but they share the same LibreOffice unique advantages, robustness and flexibility.

Availability of LibreOffice 7.3.4 Community

LibreOffice 7.3.4 Community is the best office suite for personal productivity. With the LibreOffice 7.2 family approaching the end of life, all users are invited to upgrade to this version as soon as possible.

LibreOffice 7.3.4 change log pages are available on TDF’s wiki: https://wiki.documentfoundation.org/Releases/7.3.4/RC1 (changed in RC1) and https://wiki.documentfoundation.org/Releases/7.3.4/RC2 (changed in RC2). Over 80 bugs and regressions have been solved.

LibreOffice Technology based products for Android and iOS are listed here: https://www.libreoffice.org/download/android-and-ios/, while for App Stores and ChromeOS are listed here: https://www.libreoffice.org/download/libreoffice-from-microsoft-and-mac-app-stores/

LibreOffice individual users are assisted by a global community of volunteers: https://www.libreoffice.org/get-help/community-support/. On the website and the wiki there are guides, manuals, tutorials and HowTos. Donations help the project to make all of these resources available.

LibreOffice users are invited to join the community at https://ask.libreoffice.org, where they can get and provide user-to-user support. People willing to contribute their time and professional skills to the project can visit the dedicated website at https://whatcanidoforlibreoffice.org

LibreOffice users, free software advocates and community members can provide financial support to The Document Foundation with a donation via PayPal, credit card or other tools at https://www.libreoffice.org/donate

LibreOffice 7.3.4 is built with document conversion libraries from the Document Liberation Project: https://www.documentliberation.org

by Italo Vignoli at June 09, 2022 12:55 PM

LibreOffice QA Blog

QA/Dev Report: May 2022

General Activities

  1. LibreOffice 7.2.7 was released on May, 12
  2. LibreOffice 7.3.3 was released on May, 5
  3. Adolfo Jayme Barrientos made some minor improvements to Help text readability
  4. Seth Chaiklin improved the help for vertical positioning of objects, Print preview, Options tab for Frame/Object/Image, Outline bar for Impress and anchoring. He also improved many LibreOffice UI strings and tips of the day
  5. Ilmari Lauhakangas (TDF) added right-to-left support to Help
  6. Alain Romedenne improved the correctness of Basic help pages and documented the new Resize() and Center() methods for ScriptForge’s SF_Dialog
  7. flywire cleaned up ScriptForge examples in Help
  8. Rafael Lima documented the new CompactLeft and CompactUp methods from the Calc service in ScriptForge
  9. Olivier Hallot (TDF) improved the help pages for Basic’s Shell function, CSV import filter, Direct SQL and colour palettes
  10. Miklos Vajna (Collabora) continued working on colour themes in OOXML documents and content controls for Writer
  11. Jean-Pierre Ledure worked on the ScriptForge library
  12. Tünde Tóth (NISZ) fixed a bug that made Autorecovery option always save every 10 minutes regardless of the minute setting
  13. Dennis Francis and Szymon Kłos (Collabora) worked on LOKit improvements
  14. Vasily Melenchuk (CIB) fixed an issue with numbering styles in imported DOCX files and fixed some regressions
  15. Eike Rathke (Red Hat) fixed issues with Calc’s AGGREGATE and COUNTIFS functions, counting times with SUM, made array formulas more robust and made some Calc optimisations. Together with Mike Kaganski he fixed an issue where copying and pasting a sheet with a chart resulted in incorrect chart data ranges
  16. Bartosz Kosiorek added support for several EMF+ graphics features
  17. Tomaž Vajngerl (Collabora) worked on chart code refactoring and polished the Calc sparkline feature
  18. Regina Henschel fixed issues with curved arrow shapes and arcs
  19. Julien Nabet changed TIFF image handling to be done with libtiff library together with Caolán McNamara
  20. Jim Raykowski made many polishing fixes to Navigator, including to display of hyperlinks and media objects
  21. Andreas Heinisch made it so LibreOffice (non-native) file dialog shows directory path upon hover in the Places list, fixed Basic bugs with case-sensitivity and VBA parsing and made page style handling more robust
  22. László Németh continued improving change tracking, fixed bugs related to Writer footnotes and an issue with saving recovery information for password-protected XLSX files. He also added options for skipping hyphenation with short words and the last word in a paragraph
  23. Xisco Faulí (TDF) fixed many issues with exporting PDF form elements, created a script to help manage crash reports and fixed some crashes. He also added a couple of dozen automated tests
  24. Heiko Tietze (TDF) improved the UI for Calc’s sparkline feature, made list indent and level shortcuts consistent and made some other UI improvements
  25. Armin Le Grand (allotropia) worked on Advanced Diagram support
  26. Michael Stahl (allotropia) polished the curl-based webdav implementation, made it so JVM UNO components can be run out-of-process and made crash fixes, regression fixes and cleanups
  27. Attila Bakos (NISZ) continued polishing text in grouped shapes
  28. Samuel Mehrbrodt (allotropia) made Windows installer more robust and made Calc’s formula bar remember its height per document
  29. Michael Weghorn made many Android cleanups and improved the Qt/kf5 UI
  30. Hossein Nourikhah (TDF) fixed a couple of regressions and worked on developer’s guide C++ SDK examples
  31. Mike Kaganski (Collabora) improved the Fontwork dialog layout (and icon lists in general), made Windows file dialog more robust, made some test fixes and many cleanups and optimisations
  32. Caolán McNamara (Red Hat) continued making automated tests more robust regarding use of fonts, made many improvements to TIFF image handling after the collaboration with Julien Nabet on switching to libtiff, fixed some right-to-left issues, fixed an issue with Chinese fonts in tooltips on macOS, made Impress animation panel scroll to object upon selection, made gtk UIs detect high contrast theme, fixed crashes, issues found by fuzzers and many UI issues. He also made the gtk UIs follow org.freedesktop.appearance.color-scheme setting
  33. Stephan Bergmann (Red Hat) made master documents allow subdocuments with multiple consecutive spaces in their file names, fixed crashes and made many code and build-related cleanups as well as test fixes
  34. Rizal Muttaqin continued improving the dark icon variants, added new icons to Breeze and Colibre themes and updated tips of the day to match current UI
  35. Gábor Kelemen (allotropia) made some code cleanups
  36. Noel Grandin (Collabora) improved the loading speed of a PPT file with equation objects, made many code cleanups and general optimisations
  37. Luboš Luňák (Collabora) continued optimising the layouting of text glyphs and made many optimisations to Calc internal queries with one result being that COUNTIFS function speed is much faster than in competing suites
  38. Justin Luth (SIL) improved Writer’s page style UI and fixed a formatting issue with imported XLSX files
  39. Pranam Lashkari (Collabora) made copying Writer comments more robust
  40. Daniel Lohmann fixed graphical glitches in Impress when upscaling images
  41. Thorsten Behrens (allotropia) made creating LibreOffice installers faster
  42. Enhua Xu made some mnemonics cleanups
  43. Mark Hung added support for hang baseline feature of OpenType fonts
  44. Jan-Marek Glogowski (allotropia) fixed many Qt/kf5 UI issues
  45. Roman Kuznetsov made several code cleanups
  46. Louis Possoz fixed an issue with custom footnote/endnote formats not being loaded from saved ODT files
  47. Daniel Kamil Kozar made fill Series dialog respect the number format of the source cell in Calc
  48. hasban12138 fixed a cell range selection issue in Calc
  49. Ashleigh Sinclair made it so clicking on the document canvas with a shape tool activated creates a shape with default size in Writer, Impress and Draw
  50. Lera Goncharuk made many cleanups in Python UI tests
  51. Paris Oplopoios added Z compressed graphic formats support for EMF/WMF
  52. Jürgen Funk (CIB) fixed an OLE object update regression
  53. Chris Sherlock added automated tests for vcl and store modules
  54. Kohei Yoshida fixed an issue with switching language during spell-check in Calc
  55. Tibor Nagy (NISZ) fixed PPTX import/export issues related to shape connectors and hyperlinks

Kudos to Ilmari Lauhakangas for helping to elaborate this list.

Reported Bugs

524 bugs, 53 of which are enhancements, have been reported by 269 people.

Top 10 Reporters

  1. sdc.blanco ( 42 )
  2. Telesto ( 27 )
  3. Eyal Rozenberg ( 24 )
  4. Rafael Lima ( 16 )
  5. Xisco Faulí ( 14 )
  6. Olivier Hallot ( 14 )
  7. Mike Kaganski ( 10 )
  8. NISZ LibreOffice Team ( 9 )
  9. Gabor Kelemen (allotropia) ( 9 )
  10. Regina Henschel ( 9 )

Triaged Bugs

662 bugs have been triaged by 83 people.

Top 10 Triagers

  1. Xisco Faulí ( 104 )
  2. Buovjaga ( 97 )
  3. Dieter ( 46 )
  4. Heiko Tietze ( 39 )
  5. Timur ( 39 )
  6. Timur ( 26 )
  7. Rafael Lima ( 24 )
  8. raal ( 24 )
  9. Mike Kaganski ( 23 )
  10. Regina Henschel ( 18 )

Resolution of resolved bugs

607 bugs have been set to RESOLVED.

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

Fixed Bugs

210 bugs have been fixed by 43 people.

Top 10 Fixers

  1. Caolán McNamara ( 25 )
  2. Seth Chaiklin ( 12 )
  3. László Németh ( 9 )
  4. Luboš Luňák ( 7 )
  5. Xisco Fauli ( 5 )
  6. Julien Nabet ( 5 )
  7. Jan-Marek Glogowski ( 5 )
  8. Eike Rathke ( 5 )
  9. Michael Stahl ( 5 )
  10. Stephan Bergmann ( 5 )

List of critical bugs fixed

  1. tdf#149106 LOdev 7.4.0.0alpha1 cannot be installed over an existing installation ( Thanks to Samuel Mehrbrodt )

List of high severity bugs fixed

  1. tdf#147844 UI: Edit track changes dialog missing buttons (reject/accept) ( Thanks to Xisco Fauli )
  2. tdf#148954 Writer Crash on loading files with RTL/CTL text and certain glyphs (debug build only) ( Thanks to Luboš Luňák )
  3. tdf#149071 SUMIFS generates wrong result ( Thanks to Luboš Luňák )
  4. tdf#149072 Export PDF doesn’t work with PDF/UA in GUI after Index language was set ( Thanks to Julien Nabet )

List of crashes fixed

  1. tdf#147708 Writer crashes trying to open file with 3000 pages ( Thanks to Caolán McNamara )
  2. tdf#148148 CRASH: Format – Text – Cycle Case (part 2) ( Thanks to Michael Warner )
  3. tdf#148365 CRASH: Writer 7.4 enters infinite loop while opening DOCX file (high CPU, previously hangup) ( Thanks to Attila Bakos (NISZ) )
  4. tdf#148683 Editing: Crash when deleting a piece of text with change tracking enabled, but hidden ( Thanks to Miklos Vajna )
  5. tdf#148954 Writer Crash on loading files with RTL/CTL text and certain glyphs (debug build only) ( Thanks to Luboš Luňák )
  6. tdf#148985 Impress crash on animation search ( Thanks to Caolán McNamara )
  7. tdf#149079 EDITING Calc crashes when editing cell content in inserted rows ( Thanks to Caolán McNamara )
  8. tdf#149184 Crash during save to DOCX after removing footer ( Thanks to Hossein )
  9. tdf#149198 Crash on DOCX save ( Thanks to Stephan Bergmann )
  10. tdf#149231 Crash on print preview of master document (Linux) ( Thanks to Jim Raykowski )
  11. tdf#149261 Impress crashes when starting slide show the second time ( Thanks to Miklos Vajna )
  12. tdf#149268 FILEOPEN: particular document will CRASH after opening the navigator ( Thanks to Jim Raykowski )
  13. tdf#149280 CRASH: reinstalling extension from addition dialog ( Thanks to Caolán McNamara )

List of performance issues fixed

  1. tdf#144777 countifs() in Calc is slower than Excel’s countifs() ( Thanks to Luboš Luňák )
  2. tdf#148911 FILEOPEN RTF Opening time of an RTF with a very large page splitting table has grown a lot ( Thanks to Luboš Luňák )
  3. tdf#89331 [WMF/EMF] Slow performance scrolling doc and missing items ( Thanks to Bartosz Kosiorek )

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

  1. tdf#103954 Support compressed metafile formats WMZ/EMZ ( Thanks to offtkp )
  2. tdf#104930 please handle ‘hang’ baseline feature of OpenType fonts ( Thanks to Mark Hung )
  3. tdf#105972 PDF form export does not save field types ( Thanks to Xisco Fauli )
  4. tdf#107765 CALC: Switching language during spell-check doesn’t change the text’s language property ( Thanks to Kohei Yoshida )
  5. tdf#108188 PageStyle property “isInUse” is always true ( Thanks to Andreas Heinisch )
  6. tdf#117006 On GNU/Linux, with High Contrast theme, the icon set is not correct ( Thanks to Caolán McNamara )
  7. tdf#50400 PDF export: Warn that password field does not accept Unicode characters other than ASCII (see Comment 6) ( Thanks to Caolán McNamara )
  8. tdf#56266 FILESAVE: “Track/record changes”: interdependentant revision marks not correctly saved to ODT file ( Thanks to László Németh )
  9. tdf#65067 change defaults to avoid unnecessary horizontal spacing around formulas ( Thanks to Rafael Lima )
  10. tdf#66228 FILESAVE: save to PPTX changes connector style ( Thanks to Tibor Nagy )
  11. tdf#74331 16bit “Photometric Interpretation: min-is-black” tiff not loaded correctly ( Thanks to Caolán McNamara )
  12. tdf#89331 [WMF/EMF] Slow performance scrolling doc and missing items ( Thanks to Bartosz Kosiorek )
  13. tdf#91035 UI: Available paragraph styles in Conditional Style defaults to All Styles but dropdown says Hidden Styles ( Thanks to Justin Luth )
  14. tdf#99708 Calc Formula Bar multiline input doesn’t remember state ( Thanks to Samuel Mehrbrodt )

WORKSFORME bugs

144 bugs have been retested by 44 people.

Top 10 testers

  1. Xisco Faulí ( 37 )
  2. Buovjaga ( 22 )
  3. Dieter ( 10 )
  4. Timur ( 8 )
  5. Timur ( 8 )
  6. Telesto ( 5 )
  7. Martin Srdoš ( 5 )
  8. BogdanB ( 4 )
  9. Julien Nabet ( 4 )
  10. Michael Weghorn ( 3 )

DUPLICATED bugs

110 bugs have been duplicated by 37 people.

Top 10 testers

  1. Mike Kaganski ( 12 )
  2. Heiko Tietze ( 10 )
  3. Xisco Faulí ( 9 )
  4. Timur ( 8 )
  5. Buovjaga ( 7 )
  6. Dieter ( 7 )
  7. Gabor Kelemen (allotropia) ( 6 )
  8. Timur ( 6 )
  9. Rafael Lima ( 5 )
  10. Lubos Lunak ( 4 )

Verified bug fixes

80 bugs have been verified by 24 people.

Top 10 Verifiers

  1. NISZ LibreOffice Team ( 19 )
  2. Dieter ( 10 )
  3. Xisco Faulí ( 9 )
  4. Julien Nabet ( 8 )
  5. Michael Weghorn ( 4 )
  6. Timur ( 3 )
  7. sdc.blanco ( 3 )
  8. BogdanB ( 3 )
  9. Aron Budea ( 2 )
  10. Buovjaga ( 2 )

Categorized Bugs

360 bugs have been categorized with a metabug by 30 people.

Top 10 Categorizers

  1. sdc.blanco ( 77 )
  2. Aron Budea (

by x1sc0 at June 09, 2022 11:17 AM

June 08, 2022

Official TDF Blog

Winners in the Month of LibreOffice, May 2022!

At the start of May, we revved up a new Month of LibreOffice, celebrating community contributions all across the project. We do these every six months – so how many people got sticker packs this time? Check it out…

Awesome work, everyone! Hundreds of people, all across the globe, have helped out in our projects and communities. We’re hugely thankful for your contributions – and, of course, everyone who’s listed on the wiki page can get a sticker pack, with these stickers and more:

How to claim

If you see your name (or username) on this page, get in touch! Email mike.saunders@documentfoundation.org with your name (or username) from the wiki page so that we can check, along with your postal address, and we’ll send you a bunch of stickers for your PC, laptop and other kit.

(Note: your address will only be used to post the stickers, and will be deleted immediately afterwards.) If you contributed to the project in November but you’re not on the wiki page, please let us know what you did, so that we can add you!

There is one more thing…

And we have an extra bonus: 10 contributors have also been selected at random to get an extra piece of merchandise – a LibreOffice hoodie, T-shirt, rucksack or snazzy glass mug. Here are the winners – we’ll get in touch personally with the details:

  • Andrew Watson
  • Yotam Benshalom
  • Yuvarani
  • Ulrich Gemkow
  • klaatu1
  • Christophe JAILLET
  • gregors15
  • Riyadh Talal
  • qsu
  • Siddhant Chaudhary

Congratulations to all the winners, and a big thanks once again to everyone who took part! Your contributions keep the LibreOffice project strong. We plan to have another Month of LibreOffice next May, but everyone is welcome to see what they can do for LibreOffice at any time!

by Mike Saunders at June 08, 2022 12:54 PM

June 01, 2022

Miklos Vajna

Content controls in Writer: dropdown, picture and date types

Writer already had rich text and checkbox content controls: a new way to set properties on a piece of text, primarily for form filling purposes. This feature now gained 3 additional types: dropdown, picture and date picker types. This improves compatibility with the DOCX format: there are now 5 inline content control types we can now import.

https://share.vmiklos.hu/blog/sw-content-controls2/feature.png
Figure 1. Word-style inline content controls in Writer.

First, thanks to NGI DAPSI who made this work by Collabora possible.

https://share.vmiklos.hu/blog/sw-content-controls/eu.png
Figure 2. This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 871498

Motivation

Word users expect to be able to import their document to Writer and experience a matching feature set: form filling is not an exception. Word provides several content control kinds (inline, block, row and cell content controls), this project focuses on inline ("run") content controls.

In the scope of inline content controls, the above linked blog post already described the rich text and checkbox types. In this post, we’ll focus on the new dropdown, picture and date content controls.

You might wonder why content controls are useful, since Writer already has form controls and fieldmarks, which provide something similar. Here are some benefits:

  • Dropdown content controls have a list of dropdown items. Each item is a display-text and value pair, allowing to differentiate between a human-readable string and a machine-readable value. Fieldmarks only handled (machine-readable) values, resulting in document text different from Word.

  • Picture content controls allow the author of a form to pre-format the image before the filler of the form inserts the actual image. Writer already had placeholder fields for images in the past, but that was just text, allowing image format only after insertion of the actual image.

  • Date content controls were emulated with Writer fieldmarks in the past, which created trouble during export, since Word itself doesn’t have a date form-field.

Results

The feature consists of menu items to insert dropdown/picture/date content controls, and then you can interact with the inserted content controls or with their properties:

https://share.vmiklos.hu/blog/sw-content-controls2/menu.png
Figure 3. Menu items to insert drop-down, picture and date content controls.

Drop-down content controls show a dropdown button when you’re inside the content control:

https://share.vmiklos.hu/blog/sw-content-controls2/dropdown.png
Figure 4. A drop-down content control.

This is similar to dropdown fields, just allows display-text and value pairs, not limited to just values.

Picture content controls contain a single as-character image, but you can interact with them: clicking on the content control opens the file open dialog to provide a replacement for the placeholder:

https://share.vmiklos.hu/blog/sw-content-controls2/picture.png
Figure 5. Picture controls.

And these content controls can be saved to ODT and DOCX.

There is also a content control properties dialog, which allows setting if the content controls are in placeholder mode or not:

https://share.vmiklos.hu/blog/sw-content-controls2/properties.png
Figure 6. Content control properties.

It has additional widgets for dropdowns. There is UI to create, update or delete these list items:

https://share.vmiklos.hu/blog/sw-content-controls2/properties-inner.png
Figure 7. Content control properties inner UI for list items.

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 incremental commits:

To make this more interesting, Rashesh Padia of Collabora continued exposing this in Collabora Online, see the PR at https://github.com/CollaboraOnline/online/pull/4803.

Want to start using this?

You can get a snapshot / demo of Collabora Office 22.05 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 June 01, 2022 07:09 AM

May 19, 2022

Caolán McNamara

Dark Style Preference with GTK

Added something to track the org.freedesktop.appearance.color-scheme property as used by the GNOME 42 Dark Style Preference setting. Screencast recorded with the new iteration of GNOME's screen built-in recorder which is quite snazzy.

by caolan (noreply@blogger.com) at May 19, 2022 10:45 AM

LibreOffice Dev Blog

Interacting with the Review Bot on Gerrit

Have you received “A polite ping, still working on this bug?” message on one of your Gerrit submissions? You can simply send an arbitrary reply to avoid the patch being abandoned within a month. Here we discuss more about Review bot, which is one of the QA (Quality Assurance) tools for the LibreOffice QA team to manage old submissions.

Interacting with the Review bot

You may have received messages from some bots, including Review bot. This bot checks Gerrit to find the older submissions, and abandon the old ones that no one actively work on them.

If it has been several months after the last change on a submission, the bot adds a comment and asks:

A polite ping, still working on this bug?

Then, you can do one of these things, according to your choice:

    1. Reply with whatever you want, and the Review bot will not longer try to abandon your submission. Do this if you want to continue work on the submission.
    2. Mark the patch as “work in progress”. This would be helpful if you want to prevent the bot from monitoring the submission.
    3. Leave it as is. Then, after 1 month your patch will be automatically abandoned with this message:

Abandoned

Abandoning this for the moment due to inactivity. Be aware it can be reopened anytime if you still want to continue working on it. Do not forget to rebase it first.

Even in this case, you don’t have to worry! As the message says, you can simply click on the RESTORE button on the top right of the page to restore the patch and continue working on it.

Please note that if you have restored an old submission, you have to do a re-base to get the latest changes in the LibreOffice code, pushed while your submission was remaining intact. If there is not a merge conflict, you can do this easily by clicking on the REBASE button on the top right of the page. Otherwise, you have to download the patch and resolve the merge conflict manually.

More information

You can find more information about

Also, you can read this previous post on how to use Gerrit code review.

by Hossein Nourikhah at May 19, 2022 06:57 AM

May 12, 2022

Luboš Luňák

Improving Calc support for 16384 columns

So I enabled support for up to 16384 columns in Calc by default some time ago, but just getting it to work was not necessarily the end of the work. Making Calc have 16 times more columns means that any operation that works on entire columns is suddenly 16 times slower, or even worse. Similarly this could easily lead to 16x more memory used. So the support not only needs to work, but it also needs to be usable.

It theory adding a number of empty columns to the end of a spreadsheet should not make a difference, but in practice it does. With 1024 columns it is not as necessary to ignore those empty columns as it is with 16k, and a lot of the code dates back to the times when Calc supported even fewer colums (256?), where a being little inefficient here or there didn't show. But now it suddently did.

For example, if you protect or hide all unused columns until the end of the spreadsheet, then hitting the right arrow key on the last accessible cell makes Calc check all cells to the right for whether it's possible to go into them. And checking whether a column is hidden requires searching the list of column information, which is not trivial (it's compacted in order not to waste memory). The barely noticeable cost of this with 1024 columns got large enough to cause noticeable delays. Fortunately the ColHidden() function is smart enough to return the first and last column in the compacted range where the flag is equal, the code doing the cursor navigation just up until now didn't bother using that information, but now it needed to do so.

Another example, and that's quite a large topic, is allocating columns. If most of those new columns are not actually used, then it makes sense to allocate them only when needed, right? That will save memory, and it will make things faster too, because there is no need to check those empty columns. That idea got implemented back when this 16k work was started by others, adding e.g. function GetColumnsRange() that clamped the range to the allocated columns, but the problem is that in practice this is not as simple as that.

One of the issues here is let's say the case of selecting an entire row (clicking the row number to the left of the table does that easily) and then hitting Ctrl+B to make the entire row bold. That should not clamp the column range to the allocated columns, because if I later enter something into cells in those columns, I expect that to be bold. But if Calc allocates all columns for this, maybe I do not intend to enter values anywhere else except the first rows, so allocating all columns will be a waste. The solution to this is having default column data. The ScTable class now, besides having a list of allocated ScColumn's also has a ScColumnData member that stores some data for all not-yet allocated columns. Set the bold flag for all allocated columns and also in the default, and problem solved.

Except then, GetColumnsRange() clamping to allocated columns becomes incorrect, because now it's possible to have set data even beyond allocated columns, such as this bold flag. So I changed GetColumnsRange() to simply return the given range, without any adjustments, and then added the better-named GetAllocatedColumnsRange() for cases where the code knows it wants only the allocated range.

Somewhat similarly to the bold case, merely showing or going to an unallocated column should not allocate it. Otherwise hit e.g. Ctrl+Right one time too many and the cursor going to column XFD would make all columns get allocated. But that causes yet another complication - I am now at an unallocated column and all operations should either detect the column is not allocated and return, or allocate the column if needed. The initial 16k work added CreateColumnIfNotExists() exactly to protect such accesses and allocate the column if needed. It's just that this needed adding to quite many places, and some were still missing it, and others were calling it unnecessarily causing unnecessary column allocations. So I needed to work on these over time. I eventually went as far as change Calc to initially allocate just one column. Since before that Calc used to allocate 64 columns by default, a number of places missing such checks kept working because normally people didn't work with more than 64 columns (and so this 64 default was a reasonable choice at the time, as there was really a lot to check and fix). Now that I have changed this to just one column and fixed all tests, it looks like I've rooted them all out (at least I'm still getting only very few bugreports about something breaking :) ).

Drawing, somewhat unexpectedly, turned out to be a possible performance problem too. There are few ways in which cells to the left can affect drawing of cells to the right. If you enter a too-long text into a cell, it will overflow to the right, into the space of the next cell, or possibly even several cells. So when Calc is drawing let's say a couple of cells around the 10000th column, it actually needs to check also all the 10000 columns before. Somebody back in the day thought about optimizing it, and so before Calc draws cells, function FillInfo() first collects information about all the cells to draw and also all the cells to the left. What possibly(?) was an optimization with 256 or 1024 column is a problem with 16384 columns. Even allocating and clearing all the memory actually had a noticeable performance impact. Sadly, as sometimes happens to be the case with optimizations from the OpenOffice.org times, whoever wrote this made it slow. Function FillInfo() collects all data necessary for drawing a cell into struct CellInfo, and all that info is collected also for all the cells to the left, even though most of it is not used for them. So I had to find out what was necessary and split that out (and provide proper abstraction, because real programmers back in the day used direct data access, right).


 Some of the problems can be even a bit funny. Have you created e.g. a named range called DAY1, NUM1, LOG10 or even DOG10? Well, now you can't, since now those are valid cell addresses, going up to XFD1. So Calc now needed special backwards compatibility code for this.

I expect the real test of this comes when it becomes part of the LibreOffice 7.4 release or Collabora Online. But so far it seems to work rather well.

This work is funded/sponsored by DEVxDAO as part of its mission to support open source and transparent research and development of emerging technologies and frameworks.


by llunak (noreply@blogger.com) at May 12, 2022 12:48 PM

May 06, 2022

LibreOffice QA Blog

QA/Dev Report: April 2022

General Activities

  1. Adolfo Jayme Barrientos made many minor improvements to Help text readability
  2. Seth Chaiklin updated the help for Bullets and Numbering toolbar and made several help page refactorings and tweaks. He also improved many LibreOffice UI strings, tips of the day and UI layouts
  3. Ilmari Lauhakangas (TDF) improved the style of code blocks in Help and started making tables mobile-friendly. He also updated the links to the Developer Guide in LibreOffice source code
  4. Alain Romedenne added notes to Help about Basic ‘New’ operator being optional when setting ‘Option Compatible’ and improved Help for ScriptForge. He also improved many LibreOffice UI strings
  5. Olivier Hallot (TDF) documented Writer manual row break in Help, updated Impress menu paths and made several other improvements to Help
  6. Miklos Vajna (Collabora) worked on content controls feature for Writer, continued working on colour themes in OOXML documents, polished the clearing breaks feature and improved the layout XML dump developer feature
  7. Jean-Pierre Ledure worked on the ScriptForge library and made a couple of small fixes to Access2Base
  8. Tünde Tóth (NISZ) finished fixing the handling of embedded and linked media in PPTX files and polished the fix for the old issue with embedded images getting multiplied upon OOXML export
  9. Dennis Francis and Szymon Kłos (Collabora) worked on LOKit improvements
  10. Vasily Melenchuk (CIB) made it so “border between” feature for tables in Microsoft formats is emulated while waiting for proper support to be implemented. He also fixed a text encoding issue with RTF files and made RTF filter faster
  11. Eike Rathke (Red Hat) improved date handling in Calc
  12. Bartosz Kosiorek polished EMF+ graphics implementation and added initial support OfficeArtBlip TIFF format
  13. Tomaž Vajngerl (Collabora) started working on MSO-style data tables for charts and continued working on sparkline support for Calc
  14. Regina Henschel fixed several issues with shapes in OOXML files
  15. Arnaud Versini made some code cleanups
  16. Julien Nabet fixed some TIFF image handling issues, fixed an issue with copying complete rows in Firebird databases, implemented VBA.FormatPercent function and removed an unwanted restriction the field “Width of numbering” in list style dialog. He also made crash fixes and code cleanups
  17. Jim Raykowski made many polishing fixes to Navigator, including to the ordering of items and more precise categorisation
  18. Andreas Heinisch made it so inserting a hyperlink in Calc without being in edit mode uses cell text content as the link text, improved font family handling in Insert Special Character dialog and fixed XLS export of charset used in VBA macros
  19. László Németh continued improving change tracking and made pasting and inserting rows into Writer tables more robust
  20. Xisco Faulí (TDF) made nearly forty improvements and additions to automated tests. He also added INT formula support into Writer tables for DOCX interoperability, fixed colour problems with bullet points and underlines in PPTX files and made a crash fix
  21. Heiko Tietze (TDF) fixed a layout issue in options dialog
  22. Armin Le Grand (allotropia) worked on Advanced Diagram support
  23. Ilmari Lauhakangas (TDF) and Timur Gadzo created a wiki page to explain automation of bisections
  24. Michael Stahl (allotropia) polished the curl-based webdav implementation, made it possible to use change tracking UI in read-only documents for navigating and made crash fixes and cleanups
  25. Attila Bakos (NISZ) continued polishing text in grouped shapes and made Writer text wrapping with as character anchored images compatible with DOCX files
  26. Samuel Mehrbrodt (allotropia) added a search field to Extension Manager and continued working on UNO API for custom Jump List categories in Windows Task Bar
  27. Michael Weghorn fixed some Qt/kf5 issues and ported the Android version from from Android Support Lib to AndroidX and made many related cleanups. He also enabled support for PowerPoint PPSX files in Android
  28. Hossein Nourikhah (TDF) ported some Developer Guide examples from Java to Python and C++, made code cleanups and crash fixes and wrote about
    how to use Gerrit code review effectively,
    using cmake to build LibreOffice C++ SDK examples and Supporting metafile formats
  29. Mike Kaganski (Collabora) made domain name handling in Mail Merge more robust, made several fixes to the Mail Merge dialogs, made saved Writer HTML documents always use UTF-8 encoding and enabled sidebar in Math. He also made many code cleanups
  30. Caolán McNamara (Red Hat) added a note to Help about the security implications of allowing update of links/webservice, made it so Impress tables don’t lose edit focus after deleting a row, added an attention-grabbing effect to Find bar, fixed an issue with audio from interaction not stopping when exiting slideshow (gtk3) and made a big harmonising renovation regarding which fonts are used in automated tests. He also fixed crashes, issues found by fuzzers and many UI issues and continued working on the new gtk4 UI backend
  31. Stephan Bergmann (Red Hat) made handling of inputted values in Expert Configuration more robust and added unoidl-read to the SDK as a replacement for the legacy regview. He also fixed crashes and made many code and build-related cleanups as well as test fixes
  32. Rizal Muttaqin continued improving the dark icon variants
  33. Gábor Kelemen (allotropia) made many code cleanups
  34. Noel Grandin (Collabora) improved the speed of opening Paragraph dialog and deselecting a chart after insertion. He also made many code cleanups
  35. Luboš Luňák (Collabora) greatly improved the PDF export time of certain big documents as well as the speed of handling very long text strings
  36. Justin Luth (SIL) continued improving DOCX compatibility regarding fields and fixed a Calc cell editing glitch
  37. Pranam Lashkari (Collabora) put in place a remaining Page/Slide distinction between Draw and Impress in Sidebar
  38. Laurent Balland-Poirier improved some Writer and Draw templates and changed the label of the OK button in Move/copy sheet dialog according to selected action
  39. Daniel Lohmann fixed an issue with resuming a slideshow through Presenter Console or Impress remote
  40. Dhiraj Holden split up footnotes and endnotes in Navigator
  41. Thorsten Behrens (allotropia) fixed a crash with Impress slide transitions
  42. Enhua Xu fixed xcode-ide-integration, some mnemonics issues and made cleanups
  43. Mark Hung fixed several CJK issues
  44. Vincent Reher fixed a couple of shortcut issues
  45. Jan-Marek Glogowski (allotropia) continued working on the WebAssembly port and fixed many Qt UI issues

Kudos to Ilmari Lauhakangas for helping to elaborate this list.

Reported Bugs

552 bugs, 58 of which are enhancements, have been reported by 279 people.

Top 10 Reporters

  1. Telesto ( 64 )
  2. sdc.blanco ( 32 )
  3. Eyal Rozenberg ( 25 )
  4. Gabor Kelemen (allotropia) ( 20 )
  5. Xisco Faulí ( 18 )
  6. Mike Kaganski ( 13 )
  7. Michael Weghorn ( 11 )
  8. Roman Kuznetsov ( 10 )
  9. Regina Henschel ( 9 )
  10. Rafael Lima ( 8 )

Triaged Bugs

563 bugs have been triaged by 65 people.

Top 10 Triagers

  1. Buovjaga ( 105 )
  2. Heiko Tietze ( 79 )
  3. Timur ( 48 )
  4. Xisco Faulí ( 38 )
  5. Dieter ( 31 )
  6. Julien Nabet ( 22 )
  7. Roman Kuznetsov ( 21 )
  8. Telesto ( 21 )
  9. Mike Kaganski ( 18 )
  10. Michael Weghorn ( 14 )

Resolution of resolved bugs

475 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 34 people.

Top 10 Fixers

  1. Caolán McNamara ( 13 )
  2. Seth Chaiklin ( 11 )
  3. Jan-Marek Glogowski ( 9 )
  4. Julien Nabet ( 7 )
  5. Mike Kaganski ( 7 )
  6. László Németh ( 7 )
  7. Michael Weghorn ( 6 )
  8. Vasily Melenchuk ( 6 )
  9. Luboš Luňák ( 5 )
  10. Jim Raykowski ( 5 )

List of high severity bugs fixed

  1. tdf#147485 Docx having pure VML group inside converted to DrawingML on save and Writer unable to open it. ( Thanks to Caolán McNamara )
  2. tdf#148665 CRASH in 7.4: importing DOCX document with diagram ( Thanks to Hossein )
  3. tdf#53970 EDITING: avi file lost when save presentation to PPTX ( Thanks to Tünde Tóth )

List of crashes fixed

  1. tdf#140272 impress crashes while dragging a slide in slide preview ( Thanks to Caolán McNamara )
  2. tdf#143135 Impress crashes when switching to another application then back (kf5 / qt5 with IM) ( Thanks to Jan-Marek Glogowski )
  3. tdf#143615 Impress: Crash when slide transition = 0sec ( steps in comment 10 ) ( Thanks to Thorsten Behrens )
  4. tdf#147723 CRASH: after pasting twice ( Thanks to Michael Stahl )
  5. tdf#147876 Crash in Macros with Import dialog if OS file dialog used ( Thanks to Samuel Mehrbrodt )
  6. tdf#148197 LibreOffice crashes when I try to dock floating Navigator window (GTK3) ( Thanks to Caolán McNamara )
  7. tdf#148313 CRASH: Basic IDE crashing while resizing dialog ( Thanks to Noel Grandin )
  8. tdf#148336 Crash in SwFntObj::GetTextSize(SwDrawTextInfo&) on file open ( Thanks to Caolán McNamara )
  9. tdf#148395 CRASH: doubleclick on chart OLE Object ( Thanks to Julien Nabet )
  10. tdf#148397 Crash on font features dialog opening with EB Garamond ( Thanks to Julien Nabet )
  11. tdf#148445 Exchanging data source in mail merge wizard causes crash (kf5) ( Thanks to Michael Weghorn )
  12. tdf#148553 Android Viewer crashes when opening attached document with form elements ( Thanks to Michael Weghorn )
  13. tdf#148620 Crash in Draw and Impress when using Format > Lists > Move Down ( Thanks to Noel Grandin )
  14. tdf#148665 CRASH in 7.4: importing DOCX document with diagram ( Thanks to Hossein )
  15. tdf#148779 Crash when editing “Structure and Formatting” of Bibliography (macOS only or perhaps also ios?) ( Thanks to Stephan Bergmann )
  16. tdf#148851 Android Viewer crashes because it runs out of memory when scrolling up and down in Chinese Calc doc ( Thanks to Michael Weghorn )

List of performance issues fixed

  1. tdf#116400 Very time lengthy PDF-generation nowhere near OO speed ( see comment 9 and 19 and 31 ) ( Thanks to Luboš Luňák )
  2. tdf#144515 Perf: slow operation on a Calc cell with huge text ( Thanks to Luboš Luňák )

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

  1. tdf#100391 FILESAVE PPTX Text in shape shifted from center to upper left corner ( Thanks to Regina Henschel )
  2. tdf#100680 FILEOPEN DOCX Image anchored as character + long word wrapped differently ( Thanks to Attila Bakos (NISZ) )
  3. tdf#109169 [FILESAVE DOCX] Some shapes are not correctly preserved when saved as DOCX ( Thanks to Regina Henschel )
  4. tdf#111427 Add support for .ppsx format ( Thanks to Michael Weghorn )
  5. tdf#116400 Very time lengthy PDF-generation nowhere near OO speed ( see comment 9 and 19 and 31 ) ( Thanks to Luboš Luňák )
  6. tdf#53970 EDITING: avi file lost when save presentation to PPTX ( Thanks to Tünde Tóth )
  7. tdf#75263 FILESAVE XLS Cyrillic (Russian) characters inserted by macro appear as question marks ( Thanks to Andreas Heinisch )
  8. tdf#80043 EDITING: Insert hyperlink dialog wont use text in highlighted cell as hyperlink text ( Thanks to Andreas Heinisch )
  9. tdf#85610 Track Changes does not keep Footnote marked as deleted ( Thanks to László Németh )
  10. tdf#95706 FILEOPEN: RTF import doesnt interpret ascii text encoding with windows code pages ( Thanks to Vasily Melenchuk )

WORKSFORME bugs

67 bugs have been retested by 31 people.

Top 10 testers

  1. Buovjaga ( 18 )
  2. Timur ( 10 )
  3. Telesto ( 5 )
  4. Dieter ( 3 )
  5. Roman Kuznetsov ( 3 )
  6. Xisco Faulí ( 2 )
  7. Michael Weghorn ( 2 )
  8. sdc.blanco ( 2 )
  9. Julien Nabet ( 2 )
  10. Alex Thurgood ( 2 )

DUPLICATED bugs

112 bugs have been duplicated by 32 people.

Top 10 testers

  1. Timur ( 21 )
  2. Heiko Tietze ( 14 )
  3. Buovjaga ( 12 )
  4. Telesto ( 9 )
  5. Lubos Lunak ( 5 )
  6. Mike Kaganski ( 5 )
  7. Julien Nabet ( 4 )
  8. Dieter ( 4 )
  9. V Stuart Foote ( 4 )
  10. Michael Weghorn ( 4 )

Verified bug fixes

54 bugs have been verified by 20 people.

Top 10 Verifiers

  1. NISZ LibreOffice Team ( 13 )
  2. Dieter ( 7 )
  3. Xisco Faulí ( 5 )
  4. sdc.blanco ( 4 )
  5. Michael Weghorn ( 3 )
  6. Buovjaga ( 3 )
  7. Timur ( 3 )
  8. Gerald Pfeifer ( 2 )
  9. Rafael Lima ( 2 )
  10. Julien Nabet ( 2 )

Categorized Bugs

315 bugs have …

by x1sc0 at May 06, 2022 10:02 AM

May 05, 2022

LibreOffice Dev Blog

How to write a good commit message

If you have started your journey to become an experienced developer, you already know that you have to describe what you have done when you change the code and submit it to be merged in the master branch. In git and many other source code management systems, this description is called a commit message.

The commit message has a title, and can have a detailed description. You should separate the description from the title by adding a blank line after the title.

Why it matters to write a good commit message

Some may argue that the code itself is the most important thing, and you should provide a readable clean code. This is true, and you should care most for the code. But, on the other hand, when you are working on a big project with hundreds of developers, it is also important to write descriptive commit message that is easy to read for other developers who work on the same project.

In order to be able to search and find the relevant historical information about different aspects in the code, a good way would be searching in the commit messages. You can invoke:

$ git log

You can press “/” for search, then type a search phrase. By pressing “Enter”, you will get a match, and then the next match by pressing the key “n”. This happens if matches are found.

This is only possible if you and others have previously provided good information on what each change does, providing enough details and keywords, so that others could be able to search efficiently.

If you have added your changes to the staging area of the git, then you can invoke this command to commit the changes.

$ git commit

You should provide a good title and description. Here’s how.

Information Beyond the Commit Message

Git commits also have other information, that are automatically generated. For example, the “Author” field comes from your git settings. You should use your complete first name and surname, and a valid email. Your timezone also comes from your system settings.

The Change-Id is generated when you commit, and it is used to identify a submission across different patch sets. Gerrit adds “Reviewed-on”, “Reviewed-by” and “Tested-by” fields automatically. For example, consider this commit:

Author: Miklos Vajna <vmiklos@collabora.com>
Date: Wed Apr 27 20:12:52 2022 +0200

sd theme: add PPTX import for shape fill color effects

This is always direct formatting, so FillProperties::pushToPropMap()
always has the needed info at hand.

Change-Id: I3317b618e0e8bb7688d0f0fbfe4546e2e8b4e947
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133525
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>

Use an informative title with 50 characters or less

You should describe what you have done in a commit in the commit title. The suggested maximum length for the commit title is 50 characters. Also, you should limit the amount of work in a single commit to only one thing. There are many reasons for that; one of them is to be able to roll back your changes with a single git revert.

For LibreOffice commits, you should provide the issue id at the first of the title. For example, tdf#xyz refers to the bug number xyz in the Bubzilla:

Another abbreviation, cid#xyz refers to the Coverity scan report number xyz:

For other abbreviations, please refer to this Wiki article:

You can refer to the module with its abbreviation (sw, sc, etc.) to emphasize the module that the patch is related to. Here is an overview of the modules of LibreOffice.

It is important to keep the title short, because other people can get the whole idea of the change that you have done at a glance. You can see the list of recent changes in this page:

Also, you can pull the latest changes, and use information from git locally, using these commands:

$ ./g pull -r
$ git log --oneline --since=1week

The above command lists the title of commits from the previous week.

Provide a Detailed Description

Beyond the title, you should provide detailed description of what you have done in the current commit. You can link to other commits with the commit hash if needed.

Using lists with *, +, – or characters like that can help to provide a better formatting for the texts. For example, consider this commit:

Author: Miklos Vajna <vmiklos@collabora.com>
Date: Thu Apr 21 09:08:03 2022 +0200

sw content controls: add insert UI

- add an SwWrtShell::InsertContentControl() to put the current selection
into a content control
- if there is no selection, add a non-empty placeholder
- expose this as a new .uno:InsertContentControl uno command
- add this new command to the bottom of the form menu -- probably we can
have a sub-menu there once there will be more types

Various details are provided as a list. The syntax is mostly similar to the Markdown. Some people argue that the width of the lines should be limited to 72 characters, but there is no consensus on the exact maximum width for line wrapping.

What to Include in the Commit Message?

Include relevant information that can help other developers, including but not limited to:

  • Affected modules
  • history of the problem, and the solution
  • cause of the regression, if this is a fix for a regression
  • backtrace (or parts of it), if needed
  • references
  • any relevant information

How Much Should I Write?

It all depends on you, but please describe what you are doing! Remember that what you write will be read in the future by the others, thus it should describe the changes that you have done in the commit.

Writing a paragraph is the minimum thing that is expected, so the suggestion is that you avoid submitting patches with blank description.

by Hossein Nourikhah at May 05, 2022 11:13 AM

May 03, 2022

Miklos Vajna

Content controls in Writer

Writer now has the start of content controls: a new way to set properties on a piece of text, primarily for form filling purposes. This feature improves compatibility with the DOCX format: inline content control types "rich text" and "checkbox" are the first two types we can now import.

https://share.vmiklos.hu/blog/sw-content-controls/feature.png
Figure 1. Word-style inline content controls in Writer.

First, thanks to NGI DAPSI who made this work by Collabora possible.

https://share.vmiklos.hu/blog/sw-content-controls/eu.png
Figure 2. This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 871498

Motivation

Word users expect to be able to import their document to Writer and experience a matching feature set: form filling is not an exception. Word provides several content control kinds (inline, block, row and cell content controls), this project focuses on inline ("run") content controls.

In the scope of inline content controls, the plan is to support rich text, checkbox, dropdown, picture and date content controls. This blog post presents the already implemented rich text and checkbox types.

You might wonder why content controls are useful, since Writer already has form controls and fieldmarks, which provide something similar. Here are some properties of content controls, which make them incompatible with field-based fillable forms or form controls:

  • inline content controls can’t span over multiple paragraphs, while this is allowed for fieldmarks (bookmark-based fields)

  • content controls must be well-formed XML elements, this allows nesting (while Writer fields can’t be nested), but does not allow the start/end position to be a random place in the document (while this is allowed for fieldmarks, which have separate XML elements for start and end)

  • content controls just have a set of properties, while fieldmarks are supposed to have a field command and a result (with a separator between the two)

  • content controls can contain rich text (full set of character formatting), while Writer fields can only have one character formatting (e.g. half of the field can’t be bold)

Results

The feature consists of menu items to insert rich text or checkbox content controls, and then you can interact with the inserted content controls:

https://share.vmiklos.hu/blog/sw-content-controls/menu.png
Figure 3. Menu items to insert rich text and checkbox content controls.

Rich text content controls simply show an indicator when you’re inside the content control:

https://share.vmiklos.hu/blog/sw-content-controls/rich-text.png
Figure 4. A rich text content control.

This is similar to input fields, just allows rich text content, not limited to plain text.

Checkbox content controls contain a single character, but you can interact with them: clicking on the content control toggles the checked state of the checkbox:

https://share.vmiklos.hu/blog/sw-content-controls/checkbox.png
Figure 5. Checkbox content controls.

And these content controls can be saved to ODT and DOCX.

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 incremental commits:

To make this even more interesting, Rashesh Padia of Collabora started exposing this in Collabora Online, see the PR at https://github.com/CollaboraOnline/online/pull/4703.

Want to start using this?

You can get a snapshot / demo of Collabora Office 2022 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 May 03, 2022 06:16 AM

April 26, 2022

LibreOffice Dev Blog

Supporting metafile formats: WMF/EMF/EMF+

LibreOffice supports many file formats, and among them are some raster and vector image formats from Microsoft. Metafile formats WMF, EMF and EMF+ are among the vector formats usable in Microsoft products, and also in LibreOffice. Here we discuss the implementation of the  support for these file formats in LibreOffice.

We call these file formats metafiles, as they are means of storing drawing commands that are calls to the Windows API that draws shapes and text on the screen. It is possible to replay these metafiles to have a graphical output in an appropriate context.

It is possible to create complex shapes using metafiles. For example, if you take a look at the odk/examples/basic/forms_and_controls folder in the LibreOffice source code, you will see some nice examples. Here is one of them: A delicious burger created using vector primitives.

berger.wmf

berger.wmf

The oldest metafile format is WMF, which goes back to Windows 3.1 during 1990s, but EMF and EMF+ are newer formats and support many new features.

LibreOffice can open these file formats. It is also possible to use them as the images inside another formats. For example, you can have WMF inside a DOC or DOCX file, or in native ODT format of LibreOffice.

Code Structure for Metafile Support

The emfio module of LibreOffice handles reading of the metafile records. It essentially translates these records into the mataactions. Then, vcl and drawinglayer display them. You can take a look at emfio/source/reader to see the main source files, wmfreader.cxx and emfreader.cxx in which rely on mtftools.cxx.

An important class which is used here is the GDIMetaFile class, which is described in the vcl/README.GDIMetaFile.md as:

The GDIMetaFile class reads, writes, manipulates and replays metafiles via the VCL module.

A typical use case is to initialize a new GDIMetaFile, open the actual stored metafile and read it in via GDIMetaFile::Read( aIStream ). This reads in the metafile into the GDIMetafile object – it can read in an old-style VCLMTF metafile (back in the days that Microsoft didn’t document the metafile format this was used), as well as EMF+ files – and adds them to a list (vector) of MetaActions. You can also populate your own GDIMetaFile via AddAction(), RemoveAction(), ReplaceAction(), etc.

Once the GDIMetafile object is read to be used, you can “play” the metafile, “pause” it, “wind forward” or “rewind” the metafile.

Other than reading, LibreOffice can write metafile formats as the output. For the output filter, vcl/source/filter/wmf is the place to look at.

Tools for Working with Metafile Formats

As the metafile formats are binary files, you will need tools to be able to work with these formats. We discuss three useful tools among others: mso-dumper, limerest and mtf-demo.

Mso-dumper

The mso-dumper is an in-house developed tool created and used by LibreOffice developers to dump information from the Microsoft binary formats. It reads the binary files WMF, EMF, EMF+ in addition to DOC, PPT, XLS and other Microsoft formats, and dumps it as xml.

To be able to dump a metafile, you should do this:

$ git clone https://git.libreoffice.org/mso-dumper
$ cd mso-dumper
$ ./wmf-dump.py burger.wmf
$ ./emf-dump.py computer_mail.emf

Please note that the burger.wmf and computer_mail.emf files are available inside the LibreOffice source. You should replace the burger.wmf and computer_mail.emf with the path of the file you want to dump its structure.

Limereset

Re-lab provides this tool which had the former name of OLEToy. It is a graphical tool that is suitable for understanding the binary file formats including the metafiles, and investigating the contents of the sample binary files. In addition to the visual display of records and their contents, it has a nice hex viewer that is very handy when debugging binary formats.

You can download this tool from here:

https://gitlab.com/re-lab-project/limerest

Mtf-demo

The mtf-demo is also a useful tool for displaying the metafiles WMF, EMF/EMF+, and also dumping the metaactions.

A demo renders of a metafile using vcl be seen by:

./bin/run mtfdemo odk/examples/basic/forms_and_controls/burger.wmf

This opens the burger.wmf as displays it in a window. You should have built the LibreOffice from sources to be able to run the above command from the LibreOffice source folder.

For debugging purposes, it is also possible to dump metaactions created as the intermediary format before rendering the metafile using -d option:

./bin/run mtfdemo -d odk/examples/basic/forms_and_controls/burger.wmf

If the command is successful, this message will be shown, and metadump.xml will be put in the current folder. The output will be:

Dumped metaactions as metadump.xml

DrawingLayer Primitives

The actual drawing is done using vcl and drawinglayer. One can dump the drawinglayer primitives for debugging purposes. We don’t have a dedicated tool to dump the primitives, but if you look at the tests inside emfio/qa/cppunit/emf/EmfImportTest.cxx, you can add this code snippet to do this:
Primitive2DSequence aSequence = parseEmf(u"emfio/qa/cppunit/wmf/data/stockobject.emf");
drawinglayer::Primitive2dXmlDump dumper;
Primitive2DContainer aContainer(aSequence);
dumper.dump(aContainer, "/tmp/drawinglayer.xml");

Then, after invoking make CppunitTest_emfio_emf, /tmp/drawinglayer.xml will be the dump of the drawinglayer primitives to the /tmp/drawinglayer.xml.

Status of Metafile Support in LibreOffice

Support of metafile formats in LibreOffice is not complete. Some unimplemented records, and some bugs remaining. If you want to help, you can refer to the emfio documentation to see the list of unimplemented records in WMF and EMF/EMF+. Please look at the “Limitations” section.

Recently, Bartosz Kosiorek implemented SETARCDIRECTION record of the EMF. He added the support for this specific record to the LibreOffice core with this commit:

His implementation consists of several changes, including a change in emfio/source/reader/emfreader.cxx to read the record from the file and create tools::Polygon aPoly with additional parameter IsArcDirectionClockWise(). Also, change in emfio/source/reader/mtftools.cxx to set the mbClockWiseArcDirection member variable of the MtfTools class, adding setter/getter for this variable, and also changes in tools/source/generic/poly.cxx to change Polygon::Polygon() and ImplPolygon::ImplPolygon() to add support for the extra parameter, a boolean variable bool bClockWiseArcDirection.

This commit also contains a sample document and a new unit test, TestSetArcDirection() to make sure that the support for this record does not break easily in the future.

Final Notes

For a detailed tutorial on how to fix regressions, you can refer to this blog post:

Regression Fix: Missing Lines in DOCX

by Hossein Nourikhah at April 26, 2022 01:27 PM

April 20, 2022

Luboš Luňák

Improving text layout performance

So I've been working on improving LO text layout performance, as specified by the TDF tender. As it says, text layout in LO can be rather slow, because of problems like repeated text layout calls for the same text.

Let's have a look at a perf profile for PDF export of the document from bug#116400 :

There are two major costs here:

The first one is splitting text into script runs (separating runs of e.g. latin text from RTL text). About 61% of time is spent in vcl::text::TextLayoutCache. Which is rather strange for something called 'cache'. But this is one of the cases of poor naming, as the class is actually not a cache, it is the result of the script run splitting. It is called TextLayoutCache probably because callers are supposed to cache it and pass the same item to several OutputDevice calls ... which mostly does not happen. So whenever a text is to be drawn, this gets recreated. To make things even worse, it is done for the entire string, even if only a part of it is drawn, so this supposed cache actually makes things slower.

This can be fairly easily fixed by turning the class into an actual cache. Each TextLayoutCache instance depends only on the string, so it's easy to keep a reasonable number of them in one global cache.

The second problem is breaking text into multiple lines at suitable places. In this case the problem was in the ICU library we use. The common scenario when breaking text is finding the first break and then continuing with the same text to find the following break, and so on. ICU code tries to cache this if the position in the text is close enough to the previous one, and if it's not close enough but after the last position, it tries to only walk back a bit instead of repeating the entire work from the beginning of the string. But for whatever strange reason this walking back didn't work, and it walked back until the very beginning. And the test handling the result of the walking back didn't check what the result was and reset the position to whatever the result was. So in practice the breaking almost always started from the beginning, even if the last position was a way more reasonable place to start breaking from. So 26% of time is spent breaking the same text over and over (and it's only 26% because script run splitting is even more expensive).

I've reported this to ICU together with a suggested fix to not reset position to beginning if the last position is better, they've confirmed the problem, but apparently want to look at why the walking back doesn't work in the first place, and there has not been an actual fix from them yet. So I've at least pushed my patch for now.

The resulting perf profile now looks much better:

As can be seen from the number of cycles at the bottom, this is now almost 10x faster (well, ok, 8x to be more precise). The script run splitting can't be seen anymore (it's ~0.1% now), text breaking is still there, but way smaller (6%, and that's 6% of a total that's 8x smaller, so it would be 0.75% compared to the original 26%). Not bad. The PDF generation still takes a couple of seconds (it's 400 pages after all), but it's way faster.

Other problem I noticed while working on this was the related bugreport #144515 (and a couple more that I've closed as its duplicates):

The primary cost here is OutputDevice::ImplLayout(), which lays out text into glyphs and their positions. It is possible to cache this using the SalLayoutGlyphs class, and e.g. Writer has already started caching that for repeated calls, but in this case it's Calc using the EditEngine class, which does no caching.

So as a fix I've moved the caching code to VCL and turned it into a generic SalLayoutGlyphsCache class, and then made this place use that cache ... which didn't really help that much. After investigation it turned out that EditEngine tries to fit the given text into the given paper size (Calc's cell in this case), and so it repeatedly asks to lay out the entire long string in the cell, then breaks the line at the needed width, and then it repeats the same with the rest of the string for the next line, and so on. Which again results in horrible O(N^2) performance that mostly repeats the same over and over again.

But that should be possible to avoid, right? If it's repeatedly the same text, just a subset with increasing starting index, then presumably the glyphs are the same, and their positions are also the same, just at an offset. Well, it's not that simple actually, as in some cases it's not possible to cut glyphs for text at a random place and hope it'll be exactly the same as text layout would give, since text layout may try e.g. to position several adjacent spaces more nicely. But after a couple of attempts Noel pointed out to me that Harfbuzz actually provides information about places where it's not safe to break. Finally, I noticed that the problem with a number of those bugreports is people having small Calc cells with long text, where most of the text is not seen. So for the default case it can be made to show only the start of the text that fits, and so I made it possible for EditEngine to stop breaking lines when the given size is filled in instead of trying to pointlessly process lines that won't be needed.

Again, the resulting profile looks much better:

The operation is now almost 100x times faster (*cough*, ok, 62x) and is just a relatively small part in the total picture. Let's call that good enough.

In other somewhat related news, the fontconfig library has a new stable release that finally includes some performance improvemens when looking up fonts (not updated on its webpage, but available for download in release list).

BTW, since this was a TDF tender work, these improvements have been funded by TDF donations.


by llunak (noreply@blogger.com) at April 20, 2022 08:40 AM

April 19, 2022

LibreOffice Dev Blog

Using cmake to build LibreOffice C++ SDK examples

These days, many C++ projects are built using build tools like cmake and meson in addition to GNU make (gmake). In this blog, I have already written on how to compile and run LibreOffice SDK examples using gmake. Now I want to discuss instructions for compiling and running C++ examples using cmake as the build tool. For the previous instructions using gmake, see this older post:

Working with LibreOffice SDK Examples

Compiling and Running using cmake

Using Official LibreOffice Binaries and SDK

To be able to compile and run the C++ examples using cmake, you should have installed LibreOffice and LibreOffice SDK, then you should set LOROOT in CMakeLists.txt to appropriate folder. For LibreOffice 7.3 SDK, you should use this line:

set (LOROOT /opt/libreoffice7.3)

Compiling and running the C++ programs would be easy. For some of the examples, you need to run an instance of LibreOffice to listen for the incoming connections. So, you have to invoke:

$ libreoffice7.3 "--accept=socket,port=2083;urp;"

and then just open the project file in Qt Creator (or any other IDE of your choice that supports cmake), and click Build and then Run.

Local Build

If you have built LibreOffice yourself, use the instdir path for LOROOT:

set(LOROOT = /home/hossein/Projects/libreoffice/core/instdir)

If you use a local build, you may need a running instance of LibreOffice. For this purpose, invoke:

$ ./instdir/program/soffice.bin "--accept=socket,port=2083;urp;"

And execute the project from your IDE.

Building and Running from Command Line using cmake

Here I assume that the project is named example. To build and run the example from the command line using cmake, go to the source folder, and then invoke:

$ mkdir build
$ cd build
$ cmake ..
$ make
$ ./example

The CMakeLists.txt file containing the instructions for building the the example project can be as following:

cmake_minimum_required(VERSION 3.5)

project(example LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(LOROOT /opt/libreoffice7.3)

add_executable(example main.cpp)

SET(CMAKE_INCLUDE_CURRENT_DIR ON)

include_directories(
    ${CMAKE_SOURCE_DIR}
    ${CMAKE_CURRENT_BINARY_DIR}/com/sun/star
    ${LOROOT}/sdk/include
    )
target_link_directories(example PRIVATE
    ${LOROOT}/program
    ${LOROOT}/sdk/lib
    )
target_link_libraries(example
    -luno_sal
    -luno_cppu
    -luno_cppuhelpergcc3
    -luno_salhelpergcc3
    -lunoidllo
    -lxmlreaderlo
    -lreglo
    -lmergedlo
    )

add_definitions(-DLINUX)
execute_process(COMMAND ${LOROOT}/sdk/bin/cppumaker -Gc -O. ${LOROOT}/program/types.rdb ${LOROOT}/program/types/offapi.rdb)

Essentially, the above file specifies these:

1) Include directories: sdk/include, com/sun/star and also the source directory.

2) Library directories: sdk/lib and program.

3) Name of the linked libraries: -luno_sal -luno_cppu -luno_cppuhelpergcc3 -luno_salhelpergcc3 -lunoidllo -lxmlreaderlo -lreglo -lmergedlo

4) Using cppumaker utility to generate UNO headers from the binary description offapi.rdb. You can read more about LibreOffice SDK utilities in LibreOffice DevGuide chapter 4.

Important Environment Variables

Several environment variables are set when you use the original scripts provided by the LibreOffice SDK. When using cmake, you may have to set these environment variables:

On Linux:

export UNO_PATH=/opt/libreoffice7.3/program
export URE_BOOTSTRAP=vnd.sun.star.pathname:/opt/libreoffice7.3/program/fundamentalrc

and on Windows:

SET UNO_PATH=C:/Progra~1/LibreOffice/program
SET URE_BOOTSTRAP=vnd.sun.star.pathname:C:/Progra~1/LibreOffice/program/fundamental.ini

LibOCon 2021 Presentation

I have previously talked about using cmake to build LibreOffice SDK examples in LibOCon 2021. You can see the presentation below:

Please accept YouTube cookies to play this video. By accepting you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

If you accept this notice, your choice will be saved and the page will refresh.

Presentation: LibreOffice SDK Examples OverhaulHossein Nourikhah

This talk was presented in the LibreOffice Conference 2021 (LibOCon 2021) (Slides)

LibreOffice Conference 2021

LibreOffice Conference 2021

by Hossein Nourikhah at April 19, 2022 12:45 PM

April 17, 2022

Caolán McNamara

GTK: Calling attention to a widget in LibreOffice with CSS animation


The motivation here is Use attention-attracting cue when pressing Ctrl+F while in the find bar and do "something" to call attention to the widget. I thought I'd try some of the built-in GTK CSS support. So here we animate the widget to reduce its left and right margins inwards a little and its opacity to 50% before returning to its original properties.

Nothing is ever simple, so in order to repeat the animation (the second time ctrl+f is pressed while the widget has focus) we have to duplicate the animation and use the other copy when the previous copy was last run.

by caolan (noreply@blogger.com) at April 17, 2022 02:01 PM

April 12, 2022

Caolán McNamara

GTK4: ComboBox Cell Renderers

 

Custom Gtk Cell Renderer in GTK4 GtkComboBox in LibreOffice now working as hoped for.

by caolan (noreply@blogger.com) at April 12, 2022 07:52 PM

April 11, 2022

LibreOffice Design Blog

Improve the table configuration in LibreOffice Writer

Configuring tables is an every day task for word processors. Most users likely insert a table via menu or toolbar and size the columns per mouse. This usually wont result in a satisfying precision and the table properties dialog would be the next step.…

by Heiko Tietze at April 11, 2022 12:55 PM

LibreOffice Dev Blog

How to use Gerrit code review effectively

Any code submission to LibreOffice should pass Gerrit code review in order to get merged into the LibreOffice codebase. This is possible using the code review tool Gerrit.

To understand more, refer to these articles:

For getting started with LibreOffice development in general, watch this video.

Here, I assume that you have read those articles, you have created your account, and you have done your first contributions to the LibreOffice – but you want to know more about how to effectively use Gerrit. This is what I am discussing in this article.

LibreOffice Gerrit

LibreOffice Gerrit

How to Find Reviewers

If you are a newcomer, possibly I (Hossein) and Ilmari can help you. You can add us as the reviewers, and we will review your submissions. Just search for our names in front of the “Reviewers” part in your submission, and you can easily add me or Ilmari as the reviewer.

If you want to work on more complicated tasks, you can also refer to this page to find experts in different areas.

We have experts in these areas:

Access2Base, Automated tests, BASIC, Bugzilla, build system (gbuild), Calc, Chart, Database, Debian, adding dictionaries, documentation, Draw, General UI problems, git⁠ and Writer RTF filters, gerrit⁠, GUI design questions, headless (–without-x build switch), i18nlangtag, i18npool, Impress presentation, KDE, Libcdr and Corel Draw import, libvisio and Visio import, localization fixes / l10n / non-English bug description, localization fixes / l10n tools, Mac, ODF filter, Pebble, PostgreSQL integration, QA, ScriptForge, Translation, Ubuntu, UI, UNO, sal, configmgr, VCL, Weblate, Wiki, Wiki Extension, Wiki Config, Editing, Windows, Windows Installer, Writer, writerfilter, X11-specific

Quite a lot of topics!

But, as you can read in that Wiki page, please “Please do not email these developers personally with your personal pet bug”. Just add them as the CC or the reviewer of a relevant submission.

Handling Problems with the Jenkins builds

Sometimes it happens that Jenkins can not build your submission. This can happen for several reasons. It can be because of a problem in your code, or a problem with the build system itself.

If the problem is from your side, then fix the problem and re-submit your code as a new patch set, and Jenkins will try to build it again.

But, if the problem is with Jenkins, you can either ask on #tdf-infra and someone with appropriate access will resume your build. Another solution would be doing a re-base and then Jenkins will build your submission again. For doing this, you do not need any special permissions.

Please be patient, and keep in mind that CI is a limited resource, so you should use it carefully. Please note that you should build (using make) and test (using make check) on your computer locally before submitting the code to the Gerrit.

Working on Multiple Gerrit Submissions

Sometimes you want to work simultaneously on multiple submissions. Then, you have to create a branch for each of these submissions to be able to work on them.

A tool named git review can help you manage your submissions easily. It is a review tool, but you can use it both for submissions from others (for reviewing), and also your own submissions.

To download a submission with the id of 1234, you can easily do:

git review -d 1234

The id (1234 here) is the number you see in the end of the submission URL, for example: https://gerrit.libreoffice.org/c/core/+/1234. Then, your patch is downloaded, and a new branch is created for that submissions.

If you want to do a re-base, do this:

./g pull -r

If you face a merge conflict, you have to download your changes using the above method, do a re-base, and then try to resolve the conflicts. Then, you have to use git add to stage the changed source files.

When you have finished fixing your submission, you can do:

git commit --amend
./logerrit submit master

If you want to go back to the master branch, just use:

git checkout master

Handling Requested Changes From the Reviewers

In the review process, you should do the changes requested from the reviewers. Sometimes, you may disagree with the reviewers, but then you should provide good reasons for not doing the requested changes in order to convince the reviewers.

Anyway, you should know that your code must conform to certain requirements in order to be eligible for merging. So, try to convince the reviewers that your code deserves to get merged into the code.

For the code conventions and coding style, it is suggested that you refer to these links:

For newer files, you may have to use clang-format, to re-format the code, and convince the CI that your code is fine!

There are many rules in the above links. Among them, this list on variable name prefixes is very useful. The list is extracted and suggested by Mike and Heiko:

  • (Smart) pointer/reference to an UNO interface -> xName
  • (Smart) pointer to anything else -> pName
  • Reference to anything else -> rName
  • Integer value -> nName
  • Floating-point number -> fName
  • Boolean -> bName, or isName, or canName
  • String -> optionally sName (for char * -> pName; for OUString -> aName)
  • Another object -> aName

Other conventions are gathered as extensive set of rules. If you had any doubts, you can refer to the appropriate section that discuss design, implementation, testing and other aspects.

On the other hand, you should know that the easiest part of the change is the coding style! There are many things related to good design and implementation that you should take care to be able to pass the code review and get a +2.

Search Among the Gerrit Submissions

By clicking on the name of each person in the Gerrit, you can see their contributions. But, this is not the whole story! Gerrit has a powerful query language that you can use inside the search box. For example:

owner:self: My own contributions

reviewer:self: Submissions that I am reviewing

owner:self status:merged: My merged contributions

owner:self status:open: My open contributions

You can use boolean operators between the queries:

AND -(negation) OR

If you do not specify anything, then AND is used.

You can do a lot of complicated searches among the submissions using its manual.

Final Remarks on Gerrit Code Review

Gerrit is a powerful tool, and you can use many features of it to work more effectively. But, keep in mind that your focus should be on fixing the possible problems of your code, and improving your code quality.

Don’t worry! Reviewers usually help you on the road to fix the problems. Although in the end, it is your responsibility to address the concerns and do the recommendations – and eventually fix your code.

To get more help, you can always refer to its manuals.

I hope that you will get the best out of this review tool!

by Hossein Nourikhah at April 11, 2022 07:52 AM

April 08, 2022

LibreOffice QA Blog

QA/Dev Report: March 2022

General Activities

  1. LibreOffice 7.3.1 and 7.3.2 were released on March 3 and March 31 respectively
  2. LibreOffice 7.2.6 was released on March 10
  3. Adolfo Jayme Barrientos updated and cleaned up menu paths in Help and updated some tips of the day
  4. Seth Chaiklin improved the Help and tooltip for Reset button
  5. Alain Romedenne improved the Help page for CallByname Basic function as well as several other functions
  6. Olivier Hallot (TDF) added or updated the Help pages for several toolbars, improved the Track Changes help, updated Calc’s Tools menu help and added a page for Share Spreadsheet
  7. Rafael Lima added help ID targets for the Manage Changes dialog and improved the ScriptForge library help pages
  8. Miklos Vajna (Collabora) added a clearing breaks feature into Writer and wrote a help page for it, continued working on colour themes in OOXML documents and improved the layout XML dump developer feature.
  9. Jean-Pierre Ledure worked on the ScriptForge library
  10. Tünde Tóth (NISZ) worked on fixing the PPTX export of media files, fixed an issue with text colour in DOCX shapes and an old issue with embedded images getting multiplied upon OOXML export
  11. Paris Oplopoios made some code cleanups
  12. Sarper Akdemir (Collabora) made it so section break formatting will not leak into bullets in imported DOCX files
  13. Jürgen Funk (CIB) fixed a couple of regressions
  14. Lemures Lemniscati fixed loss of precision in MediaBox elements in exported PDFs
  15. Michael Meeks (Collabora) fixed a crash affecting collaborative editing
  16. Dennis Francis, Mert Tumer, Andras Timar and Szymon Kłos (Collabora) worked on LOKit improvements
  17. Áron Budea (Collabora) fixed a Calc crash and an issue where shapes in certain cases were missing in imported XLSX files on Windows
  18. Vasily Melenchuk (CIB) fixed an issue with cross-references and paragraph numbering and several RTF import issues
  19. Eike Rathke (Red Hat) made improvements to Calc’s evaluation of IFS() and SWITCH() functions, made DDE links from Calc to Writer more robust and made internal improvements to Calc’s text import code
  20. Bartosz Kosiorek implemented the SETARCDIRECTION EMF graphic feature
  21. David Gilbert made it so hyperlinks with user:password authentication do not get lost in PDF export
  22. Vaibhav Malik wrote his first unit test
  23. Tomaž Vajngerl (Collabora) worked on sparkline support for Calc
  24. Regina Henschel fixed shapes losing their fill after PPTX export
  25. Arnaud Versini fixed a regression in the math formula editor and made some code cleanups
  26. Julien Nabet made it so save transparency option works for PNG export, fixed an issue with creating Firebird database table views and fixed some assertion crashes. He also made many code cleanups
  27. Kunal Pawar improved starting time on Windows by removing GetCaseCorrectPathName usage
  28. zhutyra fixed a couple of security issues
  29. Jim Raykowski worked on sorting and performance improvements for the Navigator, fixed an issue with docking split toolbar buttons using a shortcut key, improved the search wrapping messaging behaviour in Writer for frames, images, and OLE objects. He also made several other improvements to the Navigator and outline feature
  30. Andreas Heinisch fixed an old Impress/Draw issue where typed input into shapes was not interpreted as Unicode, made it so favourites in special characters dialog are highlighted and do not lose focus when right-clicking, made Firebird database queries with column aliases work with Basic macros and made the creation of Table of Contents possible for levels lower than chapter or heading 2
  31. László Németh continued improving change tracking
  32. Xisco Faulí (TDF) made about sixty improvements and additions to automated tests
  33. Heiko Tietze (TDF) made Colibre (Dark) available in icon themes, improved text contrast in dark mode and made other UI improvements
  34. Gülşah Köse (Collabora) improved handling of table borders and tab sizes in PPTX import
  35. Armin Le Grand (allotropia) worked on Advanced Diagram support
  36. Michael Stahl (allotropia) fixed many Writer regressions related to spellchecking, footnotes and undo
  37. Attila Bakos (NISZ) continued polishing text in grouped shapes
  38. Jens Carl worked on Java test to C++ conversion
  39. Tor Lillqvist (Collabora) improved font handling in printing and made code cleanups
  40. Samuel Mehrbrodt (allotropia) added UNO API for custom Jump List categories to Windows Task Bar
  41. Michael Weghorn made many internal improvements to the Linux and Windows accessibility code and fixed an issue with switching XForm to design mode from toolbar
  42. Tibor Nagy (NISZ) fixed line connectors becoming shapes in PPTX import and added glue points to basic shapes in PPTX
  43. Hossein Nourikhah (TDF) made it so drop-down fields in a protected Writer section are not editable, made some cleanups and wrote blog posts about development
  44. Mike Kaganski (Collabora) fixed importing MathML from clipboard on Linux, fixed misaligned checkmarks in menus, fixed blurry default icons in Start Center, fixed an issue with updating external links through macros and made many code cleanups and optimisations
  45. Caolán McNamara (Red Hat) added support for Windows 10/11 dark mode, fixed a performance issue related to font fallbacks and fixed an issue with Charts not showing in Report Builder reports. He also fixed crashes, issues found by fuzzers and many UI issues and continued working on the new gtk4 UI backend
  46. Stephan Bergmann (Red Hat) fixed crashes and made many code and build-related cleanups as well as test fixes
  47. Rizal Muttaqin made many updates to all the icon themes, especially focusing on the dark theme variants due to the newly-added Windows dark mode support
  48. Gábor Kelemen (allotropia) made many code cleanups
  49. Noel Grandin (Collabora) improved stack dumping on Windows to help diagnose problems seen in continuous integration build boxes, fixed some data races, improved the loading time of large files with many spelling errors and improved the saving time of large XLSX files with lots of character formatting. He also made many code cleanups
  50. Luboš Luňák (Collabora) improved the loading time of large CSV files, pasting time of large tables into Calc, saving time of very large spreadsheets, PDF exporting time of very large Writer documents. He also polished the handling of 1024+ columns in Calc and made many improvements to Calc’s document loading and general performance
  51. Justin Luth (SIL) fixed an unwanted Writer table alignment change when resizing its inner border, fixed issues with DocProperty field values in DOC files, incorrect Chart legend entries in DOCX files and pivot table data caching

Kudos to Ilmari Lauhakangas for helping to elaborate this list.

Reported Bugs

552 bugs, 63 of which are enhancements, have been reported by 338 people.

Top 10 Reporters

  1. Eyal Rozenberg ( 28 )
  2. Xisco Faulí ( 19 )
  3. Telesto ( 16 )
  4. Gabor Kelemen (allotropia) ( 14 )
  5. Mike Kaganski ( 11 )
  6. sdc.blanco ( 10 )
  7. Pedro ( 8 )
  8. Rafael Lima ( 8 )
  9. Michael Weghorn ( 7 )
  10. Rizal Muttaqin ( 7 )

Triaged Bugs

488 bugs have been triaged by 86 people.

Top 10 Triagers

  1. Dieter ( 63 )
  2. Xisco Faulí ( 47 )
  3. Buovjaga ( 46 )
  4. Timur ( 42 )
  5. Heiko Tietze ( 35 )
  6. Julien Nabet ( 32 )
  7. m.a.riosv ( 21 )
  8. Roman Kuznetsov ( 17 )
  9. raal ( 15 )
  10. Mike Kaganski ( 13 )

Resolution of resolved bugs

460 bugs have been set to RESOLVED.

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

Fixed Bugs

162 bugs have been fixed by 37 people.

Top 10 Fixers

  1. Luboš Luňák ( 13 )
  2. Caolán McNamara ( 10 )
  3. Julien Nabet ( 8 )
  4. Rizal Muttaqin ( 8 )
  5. Vasily Melenchuk ( 7 )
  6. László Németh ( 7 )
  7. Attila Bakos (NISZ) ( 6 )
  8. Michael Stahl ( 6 )
  9. Heiko Tietze ( 6 )
  10. Noel Grandin ( 6 )

List of high severity bugs fixed

  1. tdf#111924 Focus lost on context menu ( Thanks to Andreas Heinisch )
  2. tdf#117159 REPORTBUILDER – Trying to edit chart leads to crash of whole LO ( Thanks to Caolán McNamara )
  3. tdf#117162 REPORTBUILDER – Chart isn’t shown in report ( Thanks to Caolán McNamara )
  4. tdf#147126 [DOCX] Diagrams/shapes text imported was wrong font size now missing in 7.4 ( Thanks to Attila Bakos (NISZ) )
  5. tdf#147744 Calc crashes when pasting simple formula in a filtered column ( Thanks to Kohei Yoshida )
  6. tdf#147830 CRASH when apply particular advanced filter in particular document ( Thanks to Luboš Luňák )
  7. tdf#147961 Crash: Typing “++” and press Enter (AutoCorrect Create Table) ( Thanks to Noel Grandin )
  8. tdf#148053 Typing or pasting ZWNJ leads to Writer crash (debug build only) ( Thanks to Caolán McNamara )
  9. tdf#50916 Allow more than 1024 columns in calc ( Thanks to Luboš Luňák )

List of crashes fixed

  1. tdf#117159 REPORTBUILDER – Trying to edit chart leads to crash of whole LO ( Thanks to Caolán McNamara )
  2. tdf#147668 Writer crashes shortly after loading document with LanguageTool extension active ( Thanks to Stephan Bergmann )
  3. tdf#147744 Calc crashes when pasting simple formula in a filtered column ( Thanks to Kohei Yoshida )
  4. tdf#147830 CRASH when apply particular advanced filter in particular document ( Thanks to Luboš Luňák )
  5. tdf#147894 Calc is crashed when I tried fill a range to right from A1 to XFD1 ( Thanks to Luboš Luňák )
  6. tdf#147928 Crash when inserting comment and undoing in Writer (gtk3 only) ( Thanks to Caolán McNamara )
  7. tdf#147961 Crash: Typing “++” and press Enter (AutoCorrect Create Table) ( Thanks to Noel Grandin )
  8. tdf#148053 Typing or pasting ZWNJ leads to Writer crash (debug build only) ( Thanks to Caolán McNamara )
  9. tdf#148061 Crash when opening report of the file from tdf#148042 (DBG_UTIL only) ( Thanks to Julien Nabet )
  10. tdf#148063 Crash using incorrect type name ( Thanks to Stephan Bergmann )

List of performance issues fixed

  1. tdf#117366 Calc very slow on opening XLSX with a large table and Select All/Cut ( Thanks to Luboš Luňák )
  2. tdf#122827 UI doesn’t respond for a while when selecting all cells in calc & pressing F7 (Spelling) ( Thanks to Luboš Luňák )
  3. tdf#126326 FILESAVE XLSX Saving empty file with many sheets is slow ( Thanks to Luboš Luňák )
  4. tdf#134268 Slow sorting of a column ( part 2 ) ( Thanks to Luboš Luňák )
  5. tdf#141174 HANG: Select all and deleting sheet with revisions ( Thanks to Luboš Luňák )
  6. tdf#141182 Excessively large ODS spreadsheet hangs LibreOffice ( Thanks to Luboš Luňák )
  7. tdf#145862 calc taking too long to paste a table ( Thanks to Luboš Luňák )
  8. tdf#147283 [FILEOPEN PPTX] list with custom style is 10 times slower on 1st run ( Thanks to Caolán McNamara )
  9. tdf#148147 Calc freezes on “Sheet” menu after selecting multiple row ranges ( Thanks to Luboš Luňák )
  10. tdf#94677 Calc is slow opening large CSV ( Thanks to Luboš Luňák )

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

  1. tdf#104390 FILEOPEN RTF Courier New erroneously replaced with fallback font, when file does not contain \pard\plain ( Thanks to Vasily Melenchuk )
  2. tdf#109214 Highlight the favorites in the grid of special characters ( Thanks to Andreas Heinisch )
  3. tdf#111851 FILEOPEN: RTF: table’s shading ignored ( Thanks to Vasily Melenchuk )
  4. tdf#111924 Focus lost on context menu ( Thanks to Andreas Heinisch )
  5. tdf#113066 [EMF] Writer wrongly shows graphics semicircles from CAD that were pasted as GDI ( Thanks to Bartosz Kosiorek )
  6. tdf#114150 Remove duplication of strings found in linux and windows file dialogs ( Thanks to Julien Nabet )
  7. tdf#116256 DOCX Import: LAYOUT?: incorrect placement of textbox in table in floating frame, from ignoring LayoutInCell. ( Thanks to Attila Bakos (NISZ) )
  8. tdf#116358 Writer doesn’t keep a table row with the next in RTF documents ( Thanks to Vasily Melenchuk )
  9. tdf#35030 Customize Keyboard Reset button doesn’t work ( Thanks to Heiko Tietze )
  10. tdf#38669 Typing an accented letter when focus on a figure, display another character ( Thanks to Andreas Heinisch )
  11. tdf#50916 Allow more than 1024 columns in calc ( Thanks to Luboš Luňák )
  12. tdf#69648 FILEOPEN: DOCX Import renders text-boxes with text alignement (text anchoring property of frame) wrong ( Thanks to Attila Bakos (NISZ) )
  13. tdf#73125 Recorded change type (Action) for comment should be Comment instead of Insertion ( Thanks to László Németh )
  14. tdf#73499 FILEOPEN: Linked Textbox Grouping Cause partially Missing Text and Messed

by x1sc0 at April 08, 2022 09:17 AM

April 04, 2022

Miklos Vajna

Clearing breaks in Writer

Writer now supports what we call clearing breaks: a new property on line breaks which controls where to put the next line in case the line break is at the end of a line which intersects with an anchored object. This feature improves compatibility with the DOCX and HTML formats.

https://share.vmiklos.hu/blog/sw-clearing-break/all-new.png
Figure 1. Word-style "all" clearing in Writer, new result.

First, thanks to NGI DAPSI who made this work by Collabora possible.

https://share.vmiklos.hu/blog/sw-clearing-break/eu.png
Figure 2. This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 871498

Motivation

Word users expect to be able to import their documents to Writer and experience high fidelity rendering: this means Writer has to support clearing breaks, which instruct the layout to put the next line after a line break not necessarily at the next available vertical position, but perhaps the next line should "just down" to the next full line, or perhaps just do this partially. (Jump down to the next line, so no anchored object causes an additional indentation on the left or right side.)

Results

The easiest case is the "none" clearing break, i.e. when it’s not actually clearing. This looks like this:

https://share.vmiklos.hu/blog/sw-clearing-break/none-new.png
Figure 3. Word-style not clearing break, new result.

This is just a plain line break, and there are no changes here. It used to look like this in the past as well:

https://share.vmiklos.hu/blog/sw-clearing-break/none-old.png
Figure 4. Word-style not clearing break, old result.

And both match the reference rendering:

https://share.vmiklos.hu/blog/sw-clearing-break/none-ref.png
Figure 5. Word-style not clearing break, reference.

Now, what’s more interesting is the "all" clearing break, when the next line is placed in a way that it’s a full line. Figure 1 already shows how it now looks like in Writer. Here is how it used to look like:

https://share.vmiklos.hu/blog/sw-clearing-break/all-old.png
Figure 6. Word-style "all" clearing break, old result.

Finally you can compare that with the reference:

https://share.vmiklos.hu/blog/sw-clearing-break/all-ref.png
Figure 7. Word-style "all" clearing break, reference.

This is the most interesting case, and Word still provides UI to insert such breaks, so it frequently appears in documents out there. But there are two other cases, still. The "left" clearing break "jumps down", below anchored objects on the left. Here is how it looks now in Writer:

https://share.vmiklos.hu/blog/sw-clearing-break/left-new.png
Figure 8. Word-style "left" clearing break, new result

And this is how it used to look like:

https://share.vmiklos.hu/blog/sw-clearing-break/left-old.png
Figure 9. Word-style "left" clearing break, old result

Finally you can compare that with the reference:

https://share.vmiklos.hu/blog/sw-clearing-break/left-ref.png
Figure 10. Word-style "left" clearing break, reference

The last case is the mirror of this, when the "right" clearing break "jumps down", below anchored objects on the right. Here is how it looks now in Writer:

https://share.vmiklos.hu/blog/sw-clearing-break/right-new.png
Figure 11. Word-style "right" clearing break, new result

And this is how it used to look like:

https://share.vmiklos.hu/blog/sw-clearing-break/right-old.png
Figure 12. Word-style "right" clearing break, old result

Finally you can compare that with the reference:

https://share.vmiklos.hu/blog/sw-clearing-break/right-ref.png
Figure 13. Word-style "right" clearing break, reference

Other than the layout, there is also user interface for this in both LibreOffice and Collabora Online:

https://share.vmiklos.hu/blog/sw-clearing-break/ui.png
Figure 14. Insert break dialog in Collabora Online, with a new option for clearing breaks

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 incremental commits:

Want to start using this?

You can get a snapshot / demo of Collabora Office 2022 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 April 04, 2022 06:40 AM

April 01, 2022

Mike Kaganski

New LibreOffice GSOC project: resolve deadlocks using robust and efficient implementation of Ostrich algorithm

This year’s GSoC is coming; and this year, I suggest that we handle one big problem plaguing LibreOffice: deadlocks.

Users know that sometimes, program hangs. Often that is because of deadlocks. It is well known that one of industry’s most widely used ways to handle this problem is Ostrich algorithm [1].

This proposal is to audit the LibreOffice core code for possible deadlocks, and handle all the found places using the most robust and efficient implementation of Ostrich algorithm. The task includes study of available implementations; the chosen one should be efficient, robust, and available under a compatible open-source license.

Students that choose this task may assume that I would gladly mentor their work on this.

Happy hacking!

[1] https://en.wikipedia.org/wiki/Ostrich_algorithm

by mikekaganski at April 01, 2022 05:10 AM

March 31, 2022

Luboš Luňák

Clang 14 faster at building LibreOffice

 So I've updated my Clang to the newly released version 14, and while doing the LibreOffice rebuild afterwards I noticed that it seemed to build faster. I didn't measure it, but the build finished sooner than I expected. So of course I've measured it.

As a simple reference I used my year-old post about Clang 11 building faster with PCH, where Calc'c Library_sc built in 4 minutes and 39 seconds. And indeed now it's faster:

 1105.84user 88.35system 2:55.07elapsed 682%CPU (0avgtext+0avgdata 1666576maxresident)k
 180904inputs+2272520outputs (41390major+23529938minor)pagefaults 0swaps

Just to make sure it's not something else, I went back to Clang 13 to test it:

 1581.76user 93.84system 4:14.75elapsed 657%CPU (0avgtext+0avgdata 1916380maxresident)k
 153912inputs+2316696outputs (41891major+27245569minor)pagefaults 0swaps

So yes, it's real, and it's the compiler. It also suggests that there was an improvement also between Clang 11 and Clang 13, although not as noticeable as this.

I have no idea why that is, it seems too big of a difference to be just something random, but I see nothing relevant in the release notes (and it's not DWARF5, I tested that one). I also have no idea if it's a code change or if it's the compiler being faster because it generates faster code and is self-built. But hey, it's nice. I still vaguely remember the times when I was trying to avoid full Calc rebuilds like a plague, but that seems like a long time ago.


by llunak (noreply@blogger.com) at March 31, 2022 10:19 AM

Collabora Community

Recent Contributions from Collabora to LibreOffice

We’re continually contributing improvements to the LibreOffice code-base as a member of the community (Collabora Online Forum). Here are a few highlights of the last week’s work on behalf of our customers.

“Collabora is a commercial organisation; of course we serve the needs of our paying customers, but it is a real pleasure to be able to contribute alongside the development community to LibreOffice,” said Michael Meeks, General Manager of Collabora Productivity. “It, not only, helps us offer our customers business values and benefits other companies can’t, but it provides us with an incredibly robust development and support resource.”

There’s a lot going on in the community and here are few current projects that demonstrate what people are hacking.

Enabling Calc support for 16384 columns by default

Over the last couple of weeks Luboš Luňák (Llunak) has been working for Collabora on the 16k columns support in Calc. There’s been a lot of work on this already by Noel Grandin and others, but so far this has been hidden behind the experimental option, and normally documents open only with the “normal” 1024 columns support. The goal of this work is to finish the 16k support stable enough for it to be the default, so that people who need this many columns can finally get them without any complications.

If all goes well, and so far Luboš doesn’t see why it shouldn’t, LibreOffice 7.4 will ship with 16k columns being the default. Calc users will then be able to get a lot more columns to work with.

This work is funded/sponsored by DEVxDAO as part of its mission to support Open Source and transparent research and development of emerging technologies and frameworks. Interestingly finishing this work was also a project that was proposed by to be funded by TDF, and ranked as one of the top requested features, it is great that this budget can now be re-applied to another task.

If you have ever been bitten by the “too many columns” dialog box then, why not find out more about what Luboš is working on.

Word-style border fixes in Writer: pages, tables and paragraphs

Miklos Vajna (vmiklos) has been looking at Writer and how it can better render Word-style borders around pages, tables and paragraphs.

Word users expect to able to import their documents to Writer and experience high-fidelity rendering. This means Writer has to support the way page / table / paragraph borders are painted according to the OOXML model as well. This is all done conditionally, so existing ODF documents are left unchanged.

As a result of this work, Writer now has a set of improvements to better render Word-style borders around pages, tables and paragraphs.

Thanks must go to Docmosis and TUBITAK that have made this work by Collabora possible.

Find out more and take a look at some of the improvements that have been made.

Sparklines in Calc

Sparklines are mini charts available in OOXML (XLSX) documents that up to now were not supported by LibreOffice Calc.

Tomaz Vajngerl explained that to add support in LibreOffice for sparklines, they first needed to be read into the LibreOffice data model, but the data model for sparklines didn’t exist, so it first needed to be created. Once the data model was ready we could render the sparklines in the cell area.

Currently the code for this is in a feature branch (feature/sparklines), but it’s in the process of being up-streamed to master. The feature will be available in LibreOffice 7.4.

Thanks to the funding of NGI and the European Union, this missing feature is now being implemented. This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 871498.

Find out more about the work going into the development of sparklines in Calc.

These are just a sample of the good work going on to support and develop LibreOffice for the next release. If you’d like to find out more about what Collabora is doing or, perhaps, you’d like to get involved then please visit the Collabora Online User Forum.

The post Recent Contributions from Collabora to LibreOffice appeared first on Collabora Office and Collabora Online.

by William Gathoye at March 31, 2022 09:43 AM

March 25, 2022

Jean Hollis Weber

Two new user guides for v7.3: Getting Started and Writer

Cover of LibreOffice 7.3 Getting Started GuideCover of LibreOffice 7.3 Writer GuideThe latest user guides from the LibreOffice documentation team are LibreOffice 7.3 Getting Started and LibreOffice 7.3 Writer, 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 March 25, 2022 01:58 AM

March 24, 2022

Rizal Muttaqin

LibreOffice Dark Mode on Windows Together with Dark Colibre Icon Theme



One of the trending UX features right now is dark mode. According to one study, 58% of Americans experience digital eye strain from using computers. One of the factors causing it is blue light radiation from the screen. That's where the possible idea of ​​a screen that slows down your tired eyes more comes from.

Windows, as one of the biggest consumer desktop platforms, does not escape the dark mode feature. Since Windows 10, dark mode can be enjoyed by its users. Unfortunately, LibreOffice which is on the GNU/Linux platform has remarkable stand at following this trend thanks to its ability to blend in with system themes which has been a bitter pill to swallow over the past few years.

Let's say huge thanks to Caolán McNamara, one of the LibreOffice developers from Redhat who is usually on the UX/UI side of improving LibreOffice integration with GTK, for sending a patch so that LibreOffice for Windows can now enjoy dark mode.

Actually, this article wants to discuss the presence of the dark variant of the Colibre icon theme, but somehow after I sent the dark variant of the Colibre theme patch to the core, Caolán actually fulfilled the expectations of many years later.

Basically, apart from following the interface of the system in which it is installed, LibreOffice supports custom themes via Firefox personas, but unfortunately not all parts of the interface are changed with this Firefox persona. Only the standard toolbar can be themed, while the sidebar let alone the tabbed UI are completely untouched.

Half-hearted theme:

It getting worse with Tabbed UI:



Initially I wanted to make this Colibre variant dark icon theme as a trigger so that the dark mode in Windows is immediately materialized. It turned out that not long after that my wish was granted. To enable it, first thing first you must enable dark mode in OS level, then in LibreOffice, enable experimental features in Tools > Options > LibreOffice > Advanced. Check "Enable experimental feature (may be unstable)". LibreOffice will ask for restart and then automatically switch the UI to dark mode along with Colibre dark icon after restart.

Here is what dark mode looks like on my Windows 11.

The Start Center looks very promising, the title bar got dark also.