The Document Foundation Planet

 

March 21, 2023

Caolán McNamara

GTK 4.10 and LibreOffice accessibility

 

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

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

by caolan (noreply@blogger.com) at March 21, 2023 04:58 PM

March 20, 2023

Marius Popa Adrian

Firebird 5 compiling on Oracle Linux 8 Ampere V1 (arm64)

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

by Popa Adrian Marius (noreply@blogger.com) at March 20, 2023 11:01 PM

March 17, 2023

Marius Popa Adrian

Rust Firebird Client updated to v0.23.0 with a few features

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

by Popa Adrian Marius (noreply@blogger.com) at March 17, 2023 10:03 PM

Official TDF Blog

We were at the Chemnitzer Linux-Tage 2023!

LibreOffice booth

In the LibreOffice community, most of our activities take place online: development, design, QA, localisation, marketing and so forth. But we like to meet face-to-face too, at events and conferences – and last weekend we did just that, at the Chemnitzer Linux-Tage 2023 in Germany.

We had a booth with LibreOffice materials (flyers, stickers, pens and books):

Booth materials

As it was a Linux and free software-oriented event, almost all participants already knew about (and used) LibreOffice, but they had lots of interesting questions about our project.

Linux-Tage logo

Some visitors to our booth told us about deployments of LibreOffice in their businesses and organisations, while others talked to us about interesting use cases of LibreOffice in education and other areas.

Thanks to the Linux-Tage organisers for a great meetup! Now we’re looking forward to more events this year – and especially the LibreOffice Conference 2023 in September… 😊

Participants talking to each other

by Mike Saunders at March 17, 2023 12:20 PM

March 15, 2023

Official TDF Blog

Call for Papers for LibreOffice Conference 2023

Meet us in Bucharest, and tell us what you’re doing with LibreOffice! The event is now live: https://events.documentfoundation.org/libreoffice-conference-2023/

The Document Foundation invites all members and contributors to submit talks, lectures and workshops for this year’s LibreOffice Conference in Bucharest by filling the Call for Papers form with a short description/bio of yourself as well as your talk/workshop proposal at the following address: https://events.documentfoundation.org/libreoffice-conference-2023/cfp

The event will take place from Thursday, September 21, to Saturday, September 23, 2023. Whether you are a seasoned presenter or have never spoken in public before, if you have something interesting to share about LibreOffice or the Document Liberation Project, we want to hear from you!

Proposals should be filed by June 30, 2023 in order to guarantee that they will be considered for inclusion in the conference program.

The conference program will be based on the following community tracks:

a) Development, APIs, Extensions, Future Technology
b) Quality Assurance
c) Localization, Documentation and Native Language Projects
d) Appealing LibreOffice: Ease of Use, Design and Accessibility
e) Open Document Format, Document Liberation and Interoperability
f) Advocating, Promoting, Marketing LibreOffice

We will also have a “LibreOffice in Business” track:

  • Enterprise Deployments and Migrations
  • Certifications and Best Practices
  • Building a successful business around LibreOffice
  • Round table with company representatives
  • Small local businesses, governments and non profits

Presentations, case studies and technical talks will discuss a subject in depth, and will last 30 minutes (including Q&A). Workshops, with discussion on a specific subject or hands-on sessions, will last from 60 to 120 minutes (including Q&A). Lightning talks will cover a specific topic and will last 5 minutes (including Q&A). Sessions will be streamed live and recorded for download.

If you need a VISA, please get in touch with the organization team by sending an email at conference@libreoffice.org as soon as possible, to get an invitation letter.

If you cannot travel to Romania and prefer to present remotely, please add a note to your talk proposal, in order to allow organizers to schedule your talk on Friday (and organize a test session in advance).

If you do not agree to provide the data for the talk under the “Creative Commons Attribution-Share Alike 4.0 License”, please explicitly state your terms. In order to make your presentation available on TDF’s YouTube channel, please do not submit talks containing copyrighted material (music or pictures, etc.).

If you want to give multiple talks, please send a separate proposal for each one.

Thanks a lot for your participation!

You can enter proposals until 2023-07-01 02:55 (Europe/Bucharest), 3 months, 2 weeks from now.

by Italo Vignoli at March 15, 2023 02:29 PM

March 12, 2023

Official TDF Blog

Czech translation of LibreOffice Base Guide – and more news

Base Guide cover

Zdeněk Crhonek (aka “raal”) from the Czech LibreOffice community writes:

The Czech team translated the LibreOffice Base Guide 7.3 – and it’s now available on the documentation page. Our team consists of three translators: Petr Kuběj, Radomír Strnad and Zdeněk Crhonek, along with localized screenshot maker Roman Toman, and Miloš Šrámek, who prepared machine translations.

A second bit of news related to guides and documentation is that Stanislav Horáček created a Czech Bookshelf page. The Bookshelf is a project of LibreOffice’s Documentation team, where the guides are converted to HTML web pages. Stanislav created an automated script, and made the first conversion of the “Getting Started Guide” Czech translation. After polishing the script, he plans to convert all Czech guides.

Many thanks to everyone in the Czech community for their work! Learn more about LibreOffice’s documentation project here.

by Mike Saunders at March 12, 2023 10:20 AM

March 11, 2023

Michael Meeks

2023-03-11 Saturday

  • Up lateish, J. to AllSaints, provided on-hand debugging advice for N. much of the day.
  • Tried to get memory trimming patch pushed; fell over amusing CI fails due to day-of-week dependent code in unit test at the weekend issue up-stream. Makes a pleasant change from random breakage introduced by me. Always bad when you have no recollection of writing the code, but the style shows it must have been you.

March 11, 2023 08:19 PM

March 10, 2023

Michael Meeks

2023-03-10 Friday

  • 8am sales call, partner & customer calls through the day, calmed down a runaway logging problem in a corner-case. Implemented a memory / cache trimming feature for inactive documents.

March 10, 2023 09:00 PM

March 09, 2023

Michael Meeks

2023-03-09 Thursday

  • Up early; E. off to have her toe looked at. Mail chew, chat to Miklos & Quikee, some digging into memory management, lunch, sync with Paris, customer call until late.

March 09, 2023 09:00 PM

Official TDF Blog

Release of LibreOffice 7.4.6 Community

Berlin, March 9, 2023 – The Document Foundation announces the release of LibreOffice 7.4.6 Community, the sixth minor release of the LibreOffice 7.4 family. The new release is immediately available from https://www.libreoffice.org/download/ for Windows (Intel and Arm processors), macOS (Apple and Intel processors), and Linux.

LibreOffice offers the highest level of compatibility in the office suite market segment, with native support for the OpenDocument Format (ODF) – beating proprietary formats for security and robustness – to superior support for MS Office files, to filters for a large number of legacy document formats, to return ownership and control to users.

LibreOffice Technology Platform

Products based on the LibreOffice Technology platform – the transactional engine shared by all LibreOffice based products, which provides a rock solid solution with a high level of coherence and interoperability – are available for major desktop operating systems (Windows, macOS, Linux and Chrome OS), for mobile platforms (Android and iOS), and for the cloud.

For enterprise-class deployments, TDF strongly recommends the LibreOffice Enterprise family of applications from ecosystem partners – for desktop, mobile and cloud – with a large number of dedicated value-added features and other benefits such as SLA (Service Level Agreements): https://www.libreoffice.org/download/libreoffice-in-business/. All code developed by ecosystem companies for enterprise customers is shared with the community and improves the LibreOffice Technology platform.

Availability of LibreOffice 7.4.6 Community

LibreOffice 7.4.6 Community is available from: https://www.libreoffice.org/download/. Minimum requirements for proprietary operating systems are Microsoft Windows 7 SP1 and Apple macOS 10.12. LibreOffice Technology-based products for Android and iOS are listed here: https://www.libreoffice.org/download/android-and-ios/

The Document Foundation does not provide technical support for users, although they can get it from volunteers on user mailing lists and the Ask LibreOffice website: https://ask.libreoffice.org

LibreOffice users, free software advocates and community members can support The Document Foundation with a donation at https://www.libreoffice.org/donate

Change log pages: https://wiki.documentfoundation.org/Releases/7.4.6/RC1 and https://wiki.documentfoundation.org/Releases/7.4.6/RC2

by Italo Vignoli at March 09, 2023 12:13 PM

March 08, 2023

Michael Meeks

2023-03-08 Wednesday

  • Up too early, mail chew, breakfast with Eloy & met some happy users in passing. Checked out, off to CS3, tried to catch up with some work, talked more to people.
  • Enjoyed lunch with an enthusiastic Biochemist interested in visiting rather than sharing data. Off to the airport - Ryan Air ! - three plus hour wait for delayed flight; what a terrible service. Eventually got on a plane home.

March 08, 2023 09:00 PM

Official TDF Blog

Be a host for the LibreOffice Conference 2024!

Love LibreOffice and free software? Want to grow the FOSS community in your region? Help to organise the LibreOffice Conference 2024! Our “Call for Location” is now open – read on to learn more…

Background

Once a year, the LibreOffice Community gathers for a global community event: the LibreOffice Conference, or LibOCon. After a series of successful events – Paris, Berlin, Milan, Bern, Aarhus, Brno, Rome, Tirana, Almeria, two events online and Milan again, the 2023 venue will be in Bucharest, Romania.

To ease organization, The Document Foundation’s Board of Directors has decided to open the Call for Location for 2024 earlier this year, to give the 2024 event organizers the opportunity to attend the conference in Bucharest in September 2023. The LibreOffice Conference takes place between September and November, with a preference for September.

The deadline for sending in proposals is June 30, 2023.

After receiving the applications, we will evaluate if all pre-conditions have been met and the overall content of the proposal, and give all applicants a chance to answer questions and clarify details if needed.

What applicants need to know

Several team members are needed, and as we get closer to the event, it tends to become a time-consuming job, so each member of the team should be able to devote as much time as necessary. Also, dealing with finances and sponsors is a specific responsibility of conference organizers. Although TDF will provide a list of sponsors and ease the process, the team must be able to manage the budget according to the amount of sponsorships, and commit expenses based on the resulting amount of money.

In the past, we have received applications from several third parties, including casinos or professional event managers. Keep in mind that the LibreOffice Conference is a community event, by the community for the community. While we appreciate the interest of people with professional background, proposals not supported and driven by community members (not only TDF members) will not be considered as valid.

What must be covered by the proposal

IMPORTANT: Proposals missing the following information might be considered incomplete. While we try to give every applicant a chance to add or clarify missing information, there is no guarantee that the proposal will be accepted, since we have a rather short time frame. In order to enhance the chances for your proposal to be accepted, please answer as many of the following questions as possible.

The team

Only proposals with a fair amount of team members who are able to dedicate time and are part of the LibreOffice community will be considered as valid. Based on our experience, at least five team members are required, and those team members need to interact and communicate with the community. Please name all the team members, their role in the community, and their availability in term of time (especially during the month prior to the conference).

At least one team member should be working exclusively on sponsor relations, and on managing invitations for visas (as required for many countries). Both of these tasks require a fair amount of time, and are crucial to the organization. Based on our experience, at least a few dozen visa requests, if not more, need to be dealt with, and you need between €10,000 and €20,000 in sponsorship fees. Please let us know if you have at least one team member willing to work on these topics.

The organizing entity

The Document Foundation itself will not be legally or financially responsible for organizing the event. Although it will support the organization of the conference by any possible means, it is necessary to have a local entity, an enterprise or preferably a non-profit, to take care of financial and legal requirements such as insurances and signing contractual obligations.

Another important reason for a local entity is the fact that visa invitation letters can usually be issued only by a local entity from within the country. Please give details on the organization, its type and its leadership.

The main venue

The venue should be easily accessible from other countries, so ideally, an airport and a central train station are nearby. It should also have a good connection to the local public transportation. Please give details on the venue, its location, and its connection to public transportation.

Ideally, there is just one venue for all conference sessions. In case you distribute the conference among two venues, they should be reachable by public transportation or foot in no more than 10 minutes. Please let us know in case you plan for more than one venue (with the exception of parties and receptions).

The main venue should be partially wheelchair-accessible, with at least the opening/closing sessions and main track room fulfilling this requirement. Please let us know how accessible is the venue.

The conference itself is on 3 days, but their is an extra day before the conference dedicated to community meetings, which should be taken into account into the proposal.

Also let us know if there are defibrillators available at the venue and if your team has BLS notions.

Providing canvas, projectors and rooms for two to five parallel tracks, for a total of approximately 300 participants, is also required. Please let us know if your venue fulfils these requirements.

Along with the presentations, there is often the need to have private meetings. For sure, there are a TDF Board of Directors meeting, a Membership Committee meeting and a TDF Team meeting, so at least two additional rooms are required one day before and/or one day after the conference. These meeting rooms can also be in a different location from the main conference venue. Please let us know if you can provide these meeting rooms.

Next to or near conference rooms, there should also be an open space for community gatherings. There should be a place to have lunches which could be the same as the gathering place. Please let us know if you can provide such a space.

A publicly accessible, free wireless internet connection is required. If the venue itself does not provide WiFi, an alternative can be provided by broadband 3G/4G wireless routers.

We should also know in advance if there are firewall restrictions in place that limit or forbid the access to services like SSH, Gerrit, Git and other servicess (including e-mail), and whether we can provide a TDF VPN to overcome such limitations. Please let us know which kind of wireless internet connectivity will be provided to conference attendees.

Having video archives or video live streams is not a must-have, but a nice-to-have. Please let us know if you plan video archives or live streams of the presentations.

Also, if at least one of the social events will be in a wheelchair-accessible location, this will be highly appreciated and will be absolutely wonderful.

Accommodation

Since we expect around 200 visitors, the availability of three/four stars hotel rooms or equivalent accommodations (B&B, or similar) is required. Please elaborate on the hotel offerings near the venue.

Offering couch surfing, motels, youth hostels or other means of free to cheap accommodation is a nice-to-have. Please let us know if such accommodations are available at your venue.

One more thing…

Please describe in your own words why you want to host the next LibreOffice Conference, what motivates you, and what you expect from organizing the event.

Other information

Please write anything else that can support your application, like

  • Adoption of free open source software and open document standards in your country/region
  • FOSS support by national/local government bodies, or other organizations, enterprises, user groups
  • Cultural and/or IT related events close to the conference (parallel events are not a problem, if they do not distract participants from the LibreOffice Conference)
  • Potential conference sponsors, and the sponsorship size if it is already confirmed
  • Parties and receptions that are already planned, also in partnership with other local organizations
  • Anything else…

Providing child care would be a nice addition to the application, as there are participants with children who might be encouraged to participate if the service is available.

You may find useful information on the dedicated pad for conferences management https://pad.documentfoundation.org/p/conference

How to apply

Please send your proposal as plain text e-mail, or HTML e-mail, or OpenDocument file to info@documentfoundation.org. Please write only in English. We will send a confirmation of your application no later than one week after we have received your proposal. In case that you have not heard back from us by then, please let us know.

Again, the deadline is June, 30 2023 24:00 UTC.

THANK YOU FOR YOUR INTEREST IN HOSTING THE LIBREOFFICE CONFERENCE!

by Italo Vignoli at March 08, 2023 04:01 PM

March 07, 2023

Michael Meeks

2023-03-07 Tuesday

  • Up later; breakfast with Eloy, worked on slides somewhat, off to the conference. More talks with people variously. Gave mine at the end of the day:
    CS3 talk on Collabora Online and Digital Sovereignty (Hybrid PDF)
  • Dinner with Eloy, sleep.

March 07, 2023 09:00 PM

March 06, 2023

LibreOffice QA Blog

QA/Dev Report: February 2023

General Activities

  1. LibreOffice 7.5.0 was announced on February 2
  2. Roman Kuznetsov gave a talk about QA in russian
  3. Rafael Lima continued polishing dark mode support, made it so empty BASIC libraries are populated by an empty module for better user experience, made zooming smoother in Impress and Draw, implemented shortcut-assignable zoom commands as well as commands for toggling Watch/Stack windows for Basic IDE, made colour schemes translatable and fixed some broken links in Help
  4. Adolfo Jayme Barrientos improved the layout of some dialogs and updated some Help texts after UI changes
  5. Olivier Hallot (TDF) improved Help pages for Template Manager, command line conversion filter info and Draw layers. He also added links to Calc function wiki articles
  6. Seth Chaiklin made many text improvements both in the UI and in Help related to heading numbering and indexes
  7. Alain Romedenne corrected malformed keyword names in BASIC function signatures and added a Help page for FormatPercent Basic/VBA function
  8. Sophia Schröder made many smaller fixes and markup rework in Help files
  9. Miklós Vajna (Collabora) worked on multi-page floating tables in Writer
  10. Jean-Pierre Ledure worked on the ScriptForge library
  11. Szymon Kłos, Dennis Francis and Henry Castro (Collabora) worked on LOKit improvements. Szymon also made HTML export more robust regarding closing tags. Henry fixed an issue with master slide previews in Impress
  12. Andras Timar (Collabora) made some build-related improvements and fixes
  13. Eike Rathke (Red Hat) fixed an issue with dates showing as integers in XLSX files, added Saraiki to languages and made many code cleanups
  14. Tomaž Vajngerl (Collabora) made PDFs exported as hybrid conform to PDF validity requirements and continued polishing support for document themes
  15. Julien Nabet fixed an issue with setting search attributes via macros and implemented support for CSS color rules using alpha values when pasting HTML text from clipboard
  16. Andreas Heinisch added an expert option for sorting recent documents list according to the currently active LibreOffice module, made it so the UTF-8 byte order mark is preserved in saved CSV files, made line number alignment look better in Basic IDE and polished the look of highlighting of favourites in Special Characters dialog
  17. László Németh fixed an issue where saving to a WebDAV server too frequently caused the saving to fail
  18. Xisco Faulí (TDF) made over 40 additions and improvements to automated tests, made it possible to change the UI when viewing a read-only document and fixed many crashes
  19. Michael Stahl (allotropia) improved the image alternative text compatibility with different versions of the DOCX format, continued polishing DOCX table of contents style support, improved both the internal handling and the terminology related to the different ECMA-376 DOCX format editions, fixed an issue with bullets in an ODT originating from MS Word and fixed an issue causing text indent and margin in a paragraph style to not override the respective properties in a list style
  20. Mike Kaganski (Collabora) fixed an issue where changing anchoring in a Writer document via a macro would not set modified and undo states, fixed instability and performance issues related to conditional formatting in Calc, made searching by style in Calc more robust, made it possible to install Python-based extensions with spaces in their file names and run macros with non-ASCII characters in their names from the command line, fixed a DOCX compatibility issue affecting text colour and made the logic for adding spaces between the components of table of contents entries smarter. He also made many code cleanups and build fixes
  21. Caolán McNamara (Red Hat) continued polishing dark mode support (like, a lot) and made it so closing the license window does not close LibreOffice. He also made many other UI-related improvements and crash fixes
  22. Stephan Bergmann (Red Hat) made many code and build-related cleanups, for example updating the type reference for the API and making the Clang plugin for detecting mistakes in unit tests smarter. He also fixed crashes and improved and added automated tests
  23. Noel Grandin (Collabora) made many code cleanups, for example converting homegrown mutexes to standard library ones, simplifying allocations and flattening code by removing unnecessary uses of “Pointer to implementation” programming technique
  24. Justin Luth (Collabora) added UI access for Id and TabIndex of FormField controls and fixed DOCX import issues with extra empty paragraphs getting added to sections and incorrect page break positions
  25. Heiko Tietze (TDF) made View Layout status bar icons hidden in Print Preview and improved the layout of Calc’s Sort dialog
  26. Paris Oplopoios (Collabora) fixed an issue with comment replies in DOCX files not getting a paragraph ID
  27. Armin Le Grand (allotropia) worked on multi-color gradient support
  28. Tibor Nagy (NISZ) fixed a priority issue in conditional formatting rules with XLSX import, improved shape connector handling with PPTX files and made it so custom size is retained when saving a background style in PPTX files
  29. Tor Lillqvist (Collabora) worked on the WASM build
  30. Laurent Balland made it so unnecessary options are disabled when using spelled-out number format in Calc and made it so Delete Sheet command in Calc tells you the number of sheets that are to be deleted
  31. Michael Weghorn worked on the Android version, Qt/KDE and accessibility
  32. Regina Henschel improved Fontwork to WordArt compatibility
  33. Áron Budea (Collabora) fixed a couple of crashes
  34. Balázs Varga (allotropia) added VBA function ExportAsFixedFormat for Calc (PDF export)
  35. Colomban Wendling (Hypra) worked on accessibility tests
  36. Kohei Yoshida made it so Calc’s XML source includes the root element of the group
  37. Hossein Nourikhah (TDF) fixed a build configure issue caused by Visual Studio telemetry and made a couple of unit tests work with higher display scalings
  38. Samuel Mehrbrodt (allotropia) fixed issues with table of contents dialog
  39. Czeber László Ádám (NISZ) fixed an issue with extra cells appearing in nested tables with RTF export
  40. Khaled Hosny (Alif Type) made it so macOS’s own Arabic spelling dictionary is detected and corrected the position of the wavy lines indicating spelling errors in case of right-to-left text
  41. Hannah Meeks corrected colour conversions in VBA
  42. Christian Lohmaier (TDF) made some build fixes
  43. Jürgen Funk (CIB) made toolbar tooltips update immediately after shortcut changes
  44. Sebastian Andrzej Siewior made the bin/lo-pack-sources script for compressing sources use more efficient methods of compression
  45. Bartosz Kosiorek improved rendering of arcs in EMF graphics
  46. Björn Michaelsen made refactorings to Writer code
  47. Gábor Kelemen (allotropia) added extra labels to help recognize View menus items when searching in the Customize – Keyboard tab and made it so Rename Sheet only appears once in the Customize dialog
  48. Joel Dowdy fixed bad scoping of frac after MathML import
  49. Sarper Akdemir (Collabora) fixed an issue with extra line breaks in imported PPTX files
  50. Rizal Muttaqin updated Colibre and Sukapura icons in Start Center to match new branding and started working on dark mode support for Sukapura
  51. Vojtěch Doležal made it possible to edit bibliography mark content when right-clicking a bibliography table entry

Kudos to Ilmari Lauhakangas for helping to elaborate this list.

Reported Bugs

589 bugs, 78 of which are enhancements, have been reported by 382 people.

Top 10 Reporters

  1. sdc.blanco ( 41 )
  2. Rafael Lima ( 14 )
  3. Mike Kaganski ( 13 )
  4. Regina Henschel ( 12 )
  5. Gabor Kelemen (allotropia) ( 12 )
  6. Stéphane Guillou (stragu) ( 8 )
  7. Eyal Rozenberg ( 8 )
  8. peter josvai ( 8 )
  9. jul ( 7 )
  10. Telesto ( 6 )

Triaged Bugs

665 bugs have been triaged by 83 people.

Top 10 Triagers

  1. Buovjaga ( 137 )
  2. Stéphane Guillou (stragu) ( 111 )
  3. Heiko Tietze ( 51 )
  4. m.a.riosv ( 47 )
  5. Dieter ( 38 )
  6. Olivier Hallot ( 29 )
  7. Julien Nabet ( 28 )
  8. V Stuart Foote ( 26 )
  9. Xisco Faulí ( 19 )
  10. Mike Kaganski ( 17 )

Resolution of resolved bugs

483 bugs have been set to RESOLVED.

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

Fixed Bugs

164 bugs have been fixed by 37 people.

Top 10 Fixers

  1. Caolán McNamara ( 20 )
  2. Seth Chaiklin ( 15 )
  3. Mike Kaganski ( 7 )
  4. Michael Stahl ( 6 )
  5. László Németh ( 6 )
  6. Michael Weghorn ( 6 )
  7. Rafael Lima ( 6 )
  8. Justin Luth ( 6 )
  9. Noel Grandin ( 6 )
  10. Heiko Tietze ( 5 )

List of critical bugs fixed

List of high severity bugs fixed

  1. tdf#132714 Crash when icon deleting table-row used for diagram generation. ( Thanks to László Németh )
  2. tdf#152738 LO75RC1: Automatic spell-check not underlining misspelled words; dialog doesn’t use paragraph’s language ( Thanks to László Németh )
  3. tdf#153078 Whole section of Groupedbar Compact UI disappear ( Thanks to Xisco Fauli )
  4. tdf#153756 Unable to open form wizard (GTK3) ( Thanks to Noel Grandin )
  5. tdf#153855 Crash on opening Fontwork dialog with Insert > Fontwork (gtk3) ( Thanks to Xisco Fauli )
  6. tdf#153857 Writer hangs or crashes when right-clicking on form field ( Thanks to Noel Grandin )
  7. tdf#56696 No option to make recent documents list show items for just the currently active LibO module ( Thanks to Andreas Heinisch )

List of crashes fixed

  1. tdf#132714 Crash when icon deleting table-row used for diagram generation. ( Thanks to László Németh )
  2. tdf#153434 crash clicking on “tools -> macro -> manage macro -> basic -> new” ( Thanks to Caolán McNamara )
  3. tdf#153501 Crash when trying to do WollMux mail merge ( Thanks to Stephan Bergmann )
  4. tdf#153622 Crash in: SvListView::SelectListEntry(SvTreeListEntry *,bool) ( Thanks to Caolán McNamara )
  5. tdf#153855 Crash on opening Fontwork dialog with Insert > Fontwork (gtk3) ( Thanks to Xisco Fauli )
  6. tdf#153857 Writer hangs or crashes when right-clicking on form field ( Thanks to Noel Grandin )

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

  1. tdf#104804 Help on “Export Bookmarks” and help on “Export bookmarks as named destinations” is not clear enough ( Thanks to Seth Chaiklin )
  2. tdf#105628 Change “Evaluate” to “Show” in the Entries tab of Table of Contents/Index dialog, when Chapter Number is selected ( Thanks to Seth Chaiklin )
  3. tdf#114773 TOC: Remove additional space after chapter number in ToC ( Thanks to Mike Kaganski )
  4. tdf#30920 Closing License (WRITER-) document closes LibO [summary in comment 36] ( Thanks to Caolán McNamara )
  5. tdf#56696 No option to make recent documents list show items for just the currently active LibO module ( Thanks to Andreas Heinisch )
  6. tdf#63965 CONFIGURATION: two identical functions ( Thanks to Gabor Kelemen )
  7. tdf#78510 FILEOPEN: MSO ODT – Bullet points in wrong location ( Thanks to Michael Stahl )
  8. tdf#82254 FILESAVE: UTF-8 BOM removed from CSV when saving file ( Thanks to Andreas Heinisch )
  9. tdf#95936 Shortcut in tooltip not updated after changing the command’s shortcut ( Thanks to Juergen Funk )
  10. tdf#96039 Not possible to set shortcuts to view modes ( Thanks to Gabor Kelemen )

WORKSFORME bugs

73 bugs have been retested by 35 people.

Top 10 testers

  1. Buovjaga ( 15 )
  2. Stéphane Guillou (stragu) ( 6 )
  3. Dieter ( 5 )
  4. V Stuart Foote ( 4 )
  5. m.a.riosv ( 4 )
  6. Julien Nabet ( 4 )
  7. Olivier Hallot ( 3 )
  8. Robert Großkopf ( 3 )
  9. خالد حسني ( 3 )
  10. tagishsimon ( 2 )

DUPLICATED bugs

125 bugs have been duplicated by 29 people.

Top 10 testers

  1. Stéphane Guillou (stragu) ( 36 )
  2. Buovjaga ( 17 )
  3. V Stuart Foote ( 15 )
  4. Xisco Faulí ( 7 )
  5. m.a.riosv ( 6 )
  6. Heiko Tietze ( 5 )
  7. Telesto ( 5 )
  8. Gabor Kelemen (allotropia) ( 4 )
  9. Dieter ( 4 )
  10. Rafael Lima ( 3 )

Verified bug fixes

45 bugs have been verified by 17 people.

Top 10 Verifiers

  1. NISZ LibreOffice Team ( 6 )
  2. Xisco Faulí ( 6 )
  3. Stéphane Guillou (stragu) ( 5 )
  4. Buovjaga ( 4 )
  5. BogdanB ( 3 )
  6. Gabor Kelemen (allotropia) ( 3 )
  7. V Stuart Foote ( 3 )
  8. Julien Nabet ( 3 )
  9. lol ( 2 )
  10. Michael Weghorn ( 2 )

Categorized Bugs

426 bugs have been categorized with a metabug by 34 people.

Top 10 Categorizers

  1. Stéphane Guillou (stragu) ( 129 )
  2. sdc.blanco ( 48 )
  3. Buovjaga ( 37 )
  4. Heiko Tietze ( 35 )
  5. Dieter

by x1sc0 at March 06, 2023 12:32 PM

March 04, 2023

Jean Hollis Weber

Print editions of new user guides

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

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

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

by Jean at March 04, 2023 08:02 AM

March 03, 2023

LibreOffice Dev Blog

VCL application in its minimal form

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

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

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

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

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

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

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

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

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

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

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

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

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

namespace
{
class TheApplication : public Application
{
public:
    virtual int Main();

private:
    VclPtr<vcl::Window> mpWin;
};
}

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

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

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

The LanguageTag::setConfiguredSystemLanguage() function sets the language of the application to the system language. Finally, the framework::getDesktop() function terminates the framework and the DeInitVCL() function frees VCL resources.

SAL_IMPLEMENT_MAIN()
{
    try
    {
        TheApplication aApp;

        auto xContext = cppu::defaultBootstrap_InitialComponentContext();
        css::uno::Reference<css::lang::XMultiServiceFactory> xServiceManager(
        xContext->getServiceManager(), css::uno::UNO_QUERY);
        comphelper::setProcessServiceFactory(xServiceManager);
        LanguageTag::setConfiguredSystemLanguage(MsLangId::getSystemLanguage());
        InitVCL();

        aApp.Main();

        framework::getDesktop(::comphelper::getProcessComponentContext())->terminate();
        DeInitVCL();
        comphelper::setProcessServiceFactory(nullptr);
    }
    catch (...)
    {
        std::cout << "Exception has occurred\n";
        return 1;
    }

    return 0;
}

We should handle the exception in the main function. Here, we just print a simple text to make the user aware that some bad thing has happened.

That’s all! The application is complete now. You can run it via:

./bin/run minvcl

Keep in mind that you have to compile LibreOffice first. 🙂

minvcl

The minvcl window

Final Notes

There are many complex things that you can do with VCL, but this was the simplest example that you can possibly create! I will discuss creating more complex applications that create user interfaces with things like buttons, text and many other UI things. The nice thing about VCL is that you can even create UI from the widgets created from the .ui files designed with Glade. This makes creating GUIs much easier.

I will discuss more complex examples in the next blog posts.

by Hossein Nourikhah at March 03, 2023 07:20 AM

March 01, 2023

Miklos Vajna

Start of multi-page floating tables in Writer

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

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

Motivation

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

Table in a Writer text frame

And multi-page tables:

Multi-page table

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

Multi-page floating table

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

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

Results so far

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

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

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

Here are some screenshots from the journey so far:

Not splitting Writer text frame

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

Writer text frame kept inside the body frame

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

Incorrect split of a text frame

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

Last version with bad anchoring

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

Duplicated anchor text

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

Less duplicated anchor text on the first page

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

Last text frame without a table

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

Floating table with duplicated anchor text

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

Bad horizontal position

Next try, now the anchor text is correct, but the horizontal position of the table is still bad, it bleeds out towards the left margin area.

Fixed horizontal position

And with more work, now this looks correct.

Fixed vertical position

Let's add some vertical offset! That should be only applied on the first page, and now the follow fly doesn't have that unwanted offset.

Now we have 2 documents that lay out correctly on 2 pages. Let's try 3 pages:

Wanted 3 pages, have 2 pages

This falls apart, the 2nd and the 3rd row are both on page 2.

Correctly rendered 3 pages

After partitioning the fly frames to 3 categories (master, non-last follows, last follow), more than 2 pages also work.

Row split is not performed at all

This is a sample where the table has a single cell, so we need to split the (only) row, not just split the table's rows. The first is harder. Currently we don't even try to split it.

Row split is performed, but the 2nd page's object has a bad position

Next try, now we split it, but the position of the follow fly is wrong.

Row split with correct object positioning on all pages

Finally split of a single row inside multi-page floating tables also work. That's where we are. Don't try to do anything too custom (like inserting a header or footer), those cases are still known-broken.

How is this implemented?

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

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

The design of the layout representation is documented in the SwFormatFlySplit constructor.

Want to start using this?

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

by Miklos Vajna at March 01, 2023 07:11 AM

February 21, 2023

LibreOffice Dev Blog

Telemetry required? Ask users first!

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

Describing The Problem

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

Powershell Error

Powershell Error

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

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

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

Checking the Error Logs

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

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

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

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

export CYGWIN="disable_pcon"
https://cygwin.com/cygwin-ug-net/using-cygwinenv.html

Unfortunately, this was not the case for our mentee who has the same problem. I also knew that this approach may lead to performance degradation.

Looking Further Into the Details

I tried to look further into the details of configure.ac, and debug to understand the root cause of the problem. At first, I changed the version manually in configure.ac, and the configuration actually worked! If you take a look into find_ucrt() function, the relevant part is:

PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
UCRTSDKDIR=$formatted_path
UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)

Setting the PathFormat and UCRTVERSION to something from a good build fixed the problem: configuration and make went smooth, and finished successfully.

Then, I tried to look into win_get_env_from_vsdevcmdbat() function. As the name implies, it runs the VsDevCmd.bat, and uses the contents of the two environment variables: PathFormat and UCRTVERSION.

This function creates a batch file in the temporary folder, runs it and gets the output, and then removes it. So, removed the removal part, and saved the created batch files.

I was skeptical about the commands that were processing the outputs of the batch files, so I tried to change them a little, but that didn’t help. The nice thing was that each of them were working fine. I ran them several times, but there was no problem! Then I decided to run them exactly one after another, and then I saw that sometimes there was no output.

Finding the Root Cause

At the point, I was almost certain that the problem was from the VSDevCMD.bat itself, but I didn’t know why, and how to fix that. So, I took a look into the script, and guess what: the problem was from the telemetry! If the variable VSCMD_SKIP_SENDTELEMETRY is not set, the command line tries to open a PowerShell script, and send data to Microsoft! That was the source of problem. This is the relevant part of the code:

@REM Send Telemetry if user's VS is opted-in
if "%VSCMD_SKIP_SENDTELEMETRY%"=="" (
    if "%VSCMD_DEBUG%" NEQ "" (
        @echo [DEBUG:%~nx0] Sending telemetry
        powershell.exe -NoProfile -Command "& {Import-Module '%~dp0\Microsoft.VisualStudio.DevShell.dll'; Send-VsDevShellTelemetry -NewInstanceType Cmd;}"
    ) else (
        START "" /B powershell.exe -NoProfile -Command "& {if($PSVersionTable.PSVersion.Major -ge 3){Import-Module '%~dp0\Microsoft.VisualStudio.DevShell.dll'; Send-VsDevShellTelemetry -NewInstanceType Cmd; }}" > NUL
    )
)

To fix that, I used the value 1 for the variable to opt out of telemetry:

set VSCMD_SKIP_SENDTELEMETRY=1

This change is now merged into the LibreOffice code:

So, the problem should be fixed by now.

Best Practices for Doing Telemetry

It took a lot of time to debug and find the root cause of the problem. I think the best way to avoid causing problems for the users of the Visual Studio would be asking for the users’ consent before activating the telemetry.

I agree that there are legitimate or justifiable reasons to do telemetry, but getting the users’ consent is very important before sending data back to the corporate servers.

In LibreOffice, we consider users the top priority, and we are bound to the best practice of: “Telemetry required? Ask users first”, and we ask others to do the same.

by Hossein Nourikhah at February 21, 2023 03:03 PM

February 13, 2023

Roman Kuznetsov

Video about QA process in LibreOffice

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

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

by Roman Kuznetsov (noreply@blogger.com) at February 13, 2023 08:31 AM

February 10, 2023

LibreOffice QA Blog

QA/Dev Report: January 2023

General Activities

  1. LibreOffice 7.4.5 was announced on January 26
  2. Rafael Lima continued polishing dark mode support, made the BASIC code editor warn in case of read-only modules and dialogs and made it possible to toggle the display of section boundaries independent from text boundaries in Writer. He also added a help page for Calc’s STYLE function and improved and expanded ScriptForge help
  3. Adolfo Jayme Barrientos made many smaller string improvements both in help and in the UI
  4. Olivier Hallot (TDF) added a guide to help for Content Controls, updated menu item paths and added help pages for Translate command, page numbering wizard and reworked help pages about indexes
  5. Stéphane Guillou (TDF) improved the help for paragraph styles
  6. Miklós Vajna (Collabora) made XHTML export more robust, created plumbing for citation handling in Writer and expanded the XML layout dumping developer functionality. He also fixed crashes and several Writer regressions
  7. Jean-Pierre Ledure worked on the ScriptForge library
  8. Tünde Tóth (NISZ) fixed issues with oversized bounding boxes when editing embedded objects in PPTX or XLSX files and made it so linked OLE objects are retained upon PPTX export
  9. Szymon Kłos, Pranam Lashkari, Mert Tumer, Ashod Nakashian, Andras Timar and Henry Castro (Collabora) worked on LOKit improvements. Szymon also corrected the exporting of symbol characters to DOCX. Andras added support for importing colours with transparency from HTML
  10. Eike Rathke (Red Hat) fixed issues related to the Calc option “Use English function names” and Manage Changes dialog in Calc. He also corrected the help references for End and Shift+End keyboard shortcuts in Calc
  11. Tomaž Vajngerl (Collabora) polished support for document themes, for example adding a dialog for changing the theme used in the document
  12. Julien Nabet made many cleanups in autocorrect entries for different languages (together with Caolán), also adding a script to check for mistakes in the autocorrect definition files. He also fixed an issue with copying content in Base to a table without an auto value primary key and an issue with rendering text warp shapes in RTF files (together with Regina Henschel)
  13. Jim Raykowski added an indicator for linked images in Navigator and made it possible to navigate by field starting from the last field
  14. Andreas Heinisch made it so AutoText dialog proposes the name and shortcut for a new snippet based on currently selected text, made Calc sheet arrangement in the tab bar respect RTL settings and made CSV import dialog display RTL words in the expected order
  15. László Németh made DOCX import of tables more relaxed in case of missing definitions, made it so hidden bookmarks don’t display markers in the document, fixed a WebDAV upload issue and fixed some crashes and regressions
  16. Xisco Faulí (TDF) made over 20 additions and improvements to automated tests and fixed some crashes
  17. Michael Stahl (allotropia) improved the DOCX and RTF compatibility with hidden paragraph breaks, made it so URLs are not hyphenated by default, improved DOCX and RTF compatibility with table of content styles and fixed issues with XForms form submission and selecting all when a hidden paragraph is at the start or end of a Writer document
  18. Mike Kaganski (Collabora) fixed issues with list numbering and line height in DOCX files and a layout refresh issue after running certain macros. He also made many code cleanups and improvements to readability
  19. Caolán McNamara (Red Hat) improved the accessibility of the Envelope dialog, worked on initial accessibility support for gtk4, continued polishing dark mode support and removed the arbitrary limit of thirty thousand words in dictionaries. He also made many other UI-related improvements and crash fixes
  20. Stephan Bergmann (Red Hat) made many code and build-related cleanups, for example adding support for dynamic_cast on UNO proxy objects, simplifying accessibility code, refactoring many helper classes, removed some dead C++ UNO bridge implementations and fixed some deadlocks. He also made fixes to automated tests
  21. Noel Grandin (Collabora) updated Skia to the latest version. He also made many code cleanups, for example fixing issues found by ThreadSanitizer, working toward the goal of converting VCL to use alpha instead of transparency in colours, simplifying code by using dynamic_cast instead of XUnoTunnel and reducing complexity in Impress and Draw code that uses UNO
  22. Justin Luth (Collabora) added support for conditional text to DOC and RTF export, VBA macro buttons in XLSM files, Linked Cell property of checkboxes in XLSX files and FormField controls in BASIC and VBA. He also fixed issues with DOCX Merge Field Formatting, unnecessary highlighting of No List toolbar button, incorrect table cell heights in DOC and DOCX files and made big improvements to outline numbering
  23. Heiko Tietze (TDF) improved the accessibility of status icons for colour blind people, made the Paragraph Style toolbar dropdown less cluttered and made several other UI improvements
  24. Paris Oplopoios (Collabora) worked on Content Controls and DOCX compatibility with comment replies
  25. Armin Le Grand (allotropia) made refactorings in graphics handling code, for example changing how graphical primitives are rendered with Direct2D
  26. Taichi Haradaguchi updated some patches for external dependencies and updated curl
  27. Tibor Nagy (NISZ) fixed incorrect scaling in shape backgrounds with PPTX export
  28. Radhey Parekh fixed an issue with unwanted line breaks in imported text files and limited sheet insertion action in Calc to just the button instead of the whole tab bar
  29. Arnaud Versini made some code cleanups
  30. Tor Lillqvist (Collabora) worked on the WASM build
  31. Chenxiong Qi ported many Java SDK examples to Python
  32. Laurent Balland fixed issues in Calc number formats
  33. Patrick Luby (NeoOffice) fixed issues related to Skia and improved stability on macOS
  34. Attila Szűcs (Collabora) fixed PPTX import issues related to shape transparency, connectors and line breaks in Fontwork
  35. Dennis Francis (Collabora) made PDF exporting more robust
  36. Michael Weghorn worked on the Android build
  37. Ilhan Yesil made it possible to set a background colour for listbox form controls
  38. Vasily Melenchuk (CIB) fixed RTF import issues related to list numbering, indent in tables and table cell widths
  39. Regina Henschel implemented conversion of WordArt to Fontwork upon DOCX import, started working on Fontwork DOCX export support and improved compatibility with DOCX document themes
  40. Áron Budea (Collabora) fixed a regression affecting right-to-left UI
  41. Wu Jiahuan (Loongson) fixed a test failure affecting loongarch64 UNO bridge
  42. Winfried Donkers made MATCH, HLOOKUP and VLOOKUP Calc functions comply with the ODF specification
  43. Gülşah Köse (Collabora) fixed a pie chart MS Office compatibility issue and made the Sidebar area property panel more intuitive
  44. Fred Kruse made improvements that benefit the performance of the LanguageTool extension
  45. Balázs Varga (allotropia) added formula support to Calc’s data validation feature
  46. Colomban Wendling (Hypra) worked on accessibility tests
  47. Kohei Yoshida added support for wrap-text and shrink-to-fit flags in Excel 2003 XML import, fixed a character encoding issue in Calc’s XML source feature and upgraded mdds and orcus libraries
  48. Mark Hung worked on custom animation sound support for PPTX export
  49. Hossein Nourikhah (TDF) improved the VCL workbench examples
  50. Samuel Mehrbrodt (allotropia) converted dialogs warning about disabled macro functionality into infobars

Kudos to Ilmari Lauhakangas for helping to elaborate this list.

Reported Bugs

501 bugs, 44 of which are enhancements, have been reported by 302 people.

Top 10 Reporters

  1. Gabor Kelemen (allotropia) ( 26 )
  2. BogdanB ( 23 )
  3. Mike Kaganski ( 17 )
  4. Telesto ( 14 )
  5. Regina Henschel ( 13 )
  6. Stéphane Guillou (stragu) ( 13 )
  7. Xisco Faulí ( 13 )
  8. sdc.blanco ( 9 )
  9. Robert Großkopf ( 8 )
  10. NISZ LibreOffice Team ( 6 )

Triaged Bugs

717 bugs have been triaged by 77 people.

Top 10 Triagers

  1. Buovjaga ( 207 )
  2. Stéphane Guillou (stragu) ( 136 )
  3. Heiko Tietze ( 38 )
  4. m.a.riosv ( 33 )
  5. Julien Nabet ( 32 )
  6. Telesto ( 26 )
  7. Dieter ( 21 )
  8. V Stuart Foote ( 21 )
  9. Xisco Faulí ( 16 )
  10. Mike Kaganski ( 15 )

Resolution of resolved bugs

541 bugs have been set to RESOLVED.

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

Fixed Bugs

164 bugs have been fixed by 34 people.

Top 10 Fixers

  1. Caolán McNamara ( 21 )
  2. Michael Stahl ( 10 )
  3. Heiko Tietze ( 8 )
  4. Rafael Lima ( 8 )
  5. Justin Luth ( 7 )
  6. László Németh ( 6 )
  7. Mike Kaganski ( 6 )
  8. Andreas Heinisch ( 5 )
  9. Patrick Luby ( 5 )
  10. Noel Grandin ( 5 )

List of critical bugs fixed

  1. tdf#153059 CRASH: Clicking on the header/footer button after scrolling ( Thanks to Caolán McNamara )

List of high severity bugs fixed

  1. tdf#107625 Envelope dialog: Make dialog more a11y friendly ( Thanks to Caolán McNamara )
  2. tdf#146248 Crash at undo header swlo!sw::XTextRangeToSwPaM+0x5f9: ( Thanks to László Németh )
  3. tdf#147342 [macOS] UI Scale not working on non HighDPI external display when using Skia and a laptop with Retina display (HighDPI) ( Thanks to Patrick Luby )
  4. tdf#150380 Calc crash when clicking on the title of the Border Color toolbar popdown ( Thanks to Noel Grandin )
  5. tdf#152245 Crash with copy-paste from Calc to Writer table with tracked changes ( Thanks to László Németh )
  6. tdf#152710 CRASH: importing ooo84576-1.odt, crashtest; corrupt document structure ( Thanks to Michael Stahl )
  7. tdf#152950 Calc sort crashes after changing from default language to a different one ( Thanks to Caolán McNamara )
  8. tdf#152964 Crash on undo deletion of table with track changes enabled ( Thanks to László Németh )
  9. tdf#153003 Copying a query and pasting as table in same database impossible ( Thanks to Julien Nabet )
  10. tdf#153161 FILESAVE: Data cannot save successfully if I open an old presentation, add some text in it, save it and close it. ( Thanks to Mike Kaganski )
  11. tdf#42437 Enable the macOS press-and-hold functionality for special character input (é, ñ, etc.) ( Thanks to Patrick Luby )
  12. tdf#45147 right-to-left words appear in the wrong order in the CSV import dialog ( Thanks to Andreas Heinisch )

List of crashes fixed

  1. tdf#146248 Crash at undo header swlo!sw::XTextRangeToSwPaM+0x5f9: ( Thanks to László Németh )
  2. tdf#148453 LibreOffice crashes/hangs when macOS onscreen keyboard is enabled (Arm64) M1 ( Thanks to Patrick Luby )
  3. tdf#150380 Calc crash when clicking on the title of the Border Color toolbar popdown ( Thanks to Noel Grandin )
  4. tdf#150819 CRASH & assert after a few paste and undo (Assertion failed: (abs(rNode.GetIndex() – pMoveText->pDestNode->GetIndex()) == SwNodeOffset(1)), function SwClientNotify, file txtfrm.cxx, line 2135) ( Thanks to Noel Grandin )
  5. tdf#152245 Crash with copy-paste from Calc to Writer table with tracked changes ( Thanks to László Németh )
  6. tdf#152404 Crash in Writer when using Japanese Hiragana input method and shortcut Ctrl+Alt+C to insert a new comment while there is uncommitted text ( Thanks to Caolán McNamara )
  7. tdf#152710 CRASH: importing ooo84576-1.odt, crashtest; corrupt document structure ( Thanks to Michael Stahl )
  8. tdf#152950 Calc sort crashes after changing from default language to a different one ( Thanks to Caolán McNamara )
  9. tdf#152964 Crash on undo deletion of table with track changes enabled ( Thanks to László Németh )
  10. tdf#153059 CRASH: Clicking on the header/footer button after scrolling ( Thanks to Caolán McNamara )
  11. tdf#153116 CRASH when removing text box from drawing object (GTK3) ( Thanks to Caolán McNamara )
  12. tdf#153154 changing instance structure in XML Forms document causes crash ( Thanks to Xisco Fauli )
  13. tdf#153220 CRASH: Clicking on Border and background after undoing header insertion ( Thanks to Caolán McNamara )

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

  1. tdf#100584 With an RTL sheet, make added sheets RTL as well ( Thanks to Andreas Heinisch )
  2. tdf#101731 Rename gradient ‘border’ label to something more meaningful ( Thanks to Stéphane Guillou )
  3. tdf#106731 No indication macro is read-only ( Thanks to Rafael Lima )
  4. tdf#107625 Envelope dialog: Make dialog more a11y friendly ( Thanks to Caolán McNamara )
  5. tdf#112417 UI – Insert Sheet called when clicking anywhere on the footer ( Thanks to Radhey Parekh )
  6. tdf#113439 [UX] Add a Show/hide entry in context menu of layers tabs in Draw ( Thanks to Heiko Tietze )
  7. tdf#114537 Filesave: Export ConditionalText field to DOC ( Thanks to Justin Luth )
  8. tdf#114973 Ctrl+A and Select All don’t work

by x1sc0 at February 10, 2023 01:12 PM

February 06, 2023

Miklos Vajna

Citation handling: plumbing in Writer for e.g. Zotero

Writer now has a set of new automation commands and APIs that allow clients to build user interface for citation handling that's more advanced than the default in-Writer bibliography support.

This work is primarily for Collabora Online, see the CODE release notes for one possible way to use this.

Motivation

Citations and bibliography in Writer, using fieldmarks

Users frequently using scientific citations are probably familiar with the limits of Writer's built-in bibliography support, and solutions like Zotero appeared (with a LibreOffice extension included) to improve that situation.

This means that instead of storing all your scientific notes and data locally, you can store them on a Zotero server, then work with that from anywhere, once you provide your credentials.

The trouble comes when you want to combine this with collaborative editing, which is provided by Online, but you can't use the extension made for the desktop.

The above CODE release notes explains how an end user can use this feature, this post is meant to document what new UNO commands and LOK APIs I added that serve as a backend for this. Especially the UNO commands are also useful in other contexts, like in macros or other extensions.

Results so far

Zotero can store citations using 3 markups in documents: fields (DOCX only), bookmarks (DOCX and ODT) and finally reference marks / sections (ODT only). The added plumbing allows several operations for all 3 cases, to work with existing documents using any of these markups.

The citation and the bibliography is handled the same way for fields (Writer's fieldmarks) and bookmarks. The last case uses reference marks for citations, but sections for the bibliography.

The following operations are supported:

  • create the citation / bibliography

  • read the object under the cursor

  • read all objects of a given type in the document

  • update the object under the cursor

  • update all objects of a given type in the document

  • delete all objects of a given type in the document

Reading is only available to LOK clients, you need to call the getCommandValues() API. The rest is normal UNO commands that you can invoke from document macros or extensions as well.

The added plumbing is the following:

Operation Fieldmark Bookmark Refmark Section
Create .uno:TextFormField .uno:InsertBookmark .uno:InsertField .uno:InsertSection
Read getCommandValues(".uno:TextFormField") getCommandValues(".uno:Bookmark") getCommandValues(".uno:Field") None
Read all getCommandValues(".uno:TextFormFields") getCommandValues(".uno:Bookmarks") getCommandValues(".uno:Fields") getCommandValues(".uno:Sections")
Update .uno:UpdateTextFormField .uno:UpdateBookmark .uno:UpdateField None
Update all .uno:TextFormFields .uno:UpdateBookmarks .uno:UpdateFields .uno:UpdateSections
Delete all .uno:DeleteTextFormFields .uno:DeleteBookmarks .uno:DeleteFields .uno:DeleteSections

How is this implemented?

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

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

Want to start using this?

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

by Miklos Vajna at February 06, 2023 07:45 AM

February 05, 2023

LibreOffice Dev Blog

QR code improvement – LibreOffice EasyHack

A QR code is a type of 2D barcode that is useful for encoding data, such as a URL, contact information and many other data types. One can scan the code via applications on mobile phones to capture a URL or import contact information.

For example, the code below encodes the address of the LibreOffice website:

Encoding LibreOffice website URL with QR code

Encoding LibreOffice website’s URL in a QR code

Generating QR Codes in LibreOffice

In LibreOffice, it is possible to create different barcodes, either 1D or 2D, via extensions, or LibreOffice’s internal functionality.

QR code dialog

QR code dialog

For QR codes, it is possible to use the internal functionality via Insert > OLE Object > QR and Barcode:

The implementation in LibreOffice is using ZXing QR code library:

If you take a look at the source code in cui/source/dialogs/QrCodeGenDialog.cxx, there is ConvertToSVGFormat() function which creates the SVG output. In the recent versions of ZXing library (we use v1.4 right now), there is a function that does that, ZXing::ToSVG(). The task here is to replace the our function with the one from ZXing library.

Handling Different Library Versions

Unfortunately, only recent versions of ZXing provide ZXing::ToSVG() functions. It is not available in 1.3, but is added in 1.4. Looking into the packaging of the library in different distributions, it becomes obvious that this package version is not available yet in many distributions:

Therefore, a solution should check the ZXing library version, and use the new function if the library version is >= 1.4. In other words, limiting the change to where the new version of the library is present is necessary. This is possible using compiler conditionals. It is important where one configures the LibreOffice compilation to use system provided ZXing library, using --with-system-zxing while invoking autogen.sh.

Final Notes

EasyHacks are good starting points for someone who wants to get started in LibreOffice development. This specific issue for improving QR code is filed as tdf#153328 in TDF’s Bugzilla. To understand how to get started with LibreOffice development, you can refer to our getting involved page in the TDF Wiki, or our video tutorial for getting started with LibreOffice development.

by Hossein Nourikhah at February 05, 2023 03:35 PM

January 30, 2023

Collabora Community

Collabora Productivity at FOSDEM 2023

FOSDEM 2023 – Back in Brussels

FOSDEM 2023 is back home in Brussels. Meet the Collabora Productivity team at Europe’s largest gathering of open-source developers and have a chat, some fries or a beer with us (also: make sure to grab some stickers!). As usual, our engineers will be giving talks about the latest developments in Collabora Online, Collabora Office and LibreOffice at the LibreOffice Technology devroom. Here’s the schedule!

Saturday, February 4th 2023

Collabora at the LibreOffice Technology devroom

 

Noel Grandin

16:10 – LibreOffice Technology devroom See details

Turbocharging an Elephant – Making LibreOffice Faster

Most of the easy tasks are already done. This talk covers several improvements to LibreOffice, that required lots of preparational work and interesting challenges to introduce improvements into a massive (and messy) codebase.

 

Pranam Lashkari

16:20 – LibreOffice Technology devroom See details

Feature Locking and Feature Restriction – Integrator’s Way to Unlock Potential

In the talk, Pranam Lashkari will explain and demonstrate how feature locking and restrictions work in Collabora Online. Using such methods, integrators can control which features to deliver to which user or group.

 

Sarper Akdemir

16:30 – LibreOffice Technology devroom See details

An Interoperability Improvement in LibreOffice Impress Tables

Sarper Akdemir tells the story of an interoperability bug fixing adventure where the problem turned out to be deeper than it appeared at first glance, showcasing how there are multiple approaches to a single interoperability problem.

 

Miklos Vajna

16:40 – LibreOffice Technology devroom See details

Writer Content Controls – What Happened in the Past Half Year

LibreOffice was capable of handling form filling in Writer for a while already. In the meantime, the competition introduced Structured Document Tags. Writer Content Controls are meant to perform a great handling of this third type of form filling. See Miklos Vajna‘s talk about what we have done to bring themes to LibreOffice, hear what still needs doing and find out how you can help.

 

 

 

Szymon Kłos

 17:40 – LibreOffice Technology devroom See details

LibreOfficeKit – Bridge Between Your Application and LibreOffice

Szymon Klos gives a short introduction into integrating LibreOffice using LibreOfficeKit with external software. He will describe the most important code pieces and show, where to look for information. Furthermore, he’ll demonstrate how to add new features, which API we provide, and what can be done with tiled rendering.

 

Michael Meeks

 17:50 – LibreOffice Technology devroom See details

Collabora Online Over Lockdown – How LibreOffice Technology in the Browser Got Better

Come and hear how Collabora Online (COOL) has improved over the COVID-19 era, not only in core feature-function, but also in ease of access and deployment for everyone. See how we can deliver scalable, secure, on-premise editing of your documents with a simple, easy to deploy office for the free world.

 

Pedro Pinto Silva

 18:10 LibreOffice Technology devroom See details

Make Collabora Online Yours – Customize and Integrate it Everywhere

Collabora Online is quite flexible in the means that you can alter to your personal taste without the need to change other core components. Pedro Pinto Silva shows how to make Collabora Online yours. Discover all the shining new additions to the user interface and learn how to customize and integrate it everywhere.

 

Tor Lillqvist

18:30 – LibreOffice Technology devroom See details

Collabora Online and WASM – Assembling Off-line Collabora Online with the Web

Come hear Tor Lillqvist‘s talk about a new approach to enabling browser deployment of rich office functionality – built on top of allotropia’s investment in enabling the core LibreOffice technology to compile to Web Assembly (WASM) – combined with the Collabora Online front-end. Hear about how this can be used to provide a fall-back (non-collaborative) editing mode for when you lose network connectivity for a while, and about the plans to re-synchronize documents on the return from such a tunnel.

 

 

About Collabora Online

Collabora Online 22.05 is our latest enterprise release. It’s suitable for large-scale deployment, and comes with SLA, enterprise support with signed security updates as well as interaction with product management, helping to direct our development priorities. Collabora Online integrates flawlessly into Nextcloud, ownCloud, Seafile, and many of the major file sync & share, groupware and hosting solutions. It’s ideal for organizations that want to collaborate on documents, without losing control over them or compromising on privacy. With the ability to host it on your own hardware or to integrate it into a trusted environment, Collabora Online is the ideal online office suite for digital sovereignty. Enterprises interested in using Collabora Online can check out our home page for more information on partner integrations and online demos. Hosting and Cloud businesses that wish to add Collabora Online to their product portfolio can become a partner. For any questions or tailored solutions, do not hesitate to contact hello@collaboraoffice.com.

 

The post Collabora Productivity at FOSDEM 2023 appeared first on Collabora Office and Collabora Online.

by Marc Rodrigues at January 30, 2023 10:12 AM

January 28, 2023

LibreOffice Dev Blog

VCL example applications and tools

You may already know that LibreOffice uses its internal GUI toolkit, named VCL (Visual Class Library). This library is responsible for creating the GUI widgets for LibreOffice, providing abstraction from the operating system including the basic rendering. To see more details, you can read its documentation page:

VCL has the nice feature of being able to work with different GUI libraries on different platforms. For example, if you are on Linux, you can use X11, Gtk3/4, Qt, or KDE back-ends for the VCL applications like LibreOffice. You can easily switch between them by using the environment variable SAL_USE_VCLPLUGIN. For example, you can use the old style X11 GUI in this way:

SAL_USE_VCLPLUGIN=gen instdir/program/soffice

Or, by passing it to the LibreOffice program itself:

instdir/program/soffice -env:SAL_USE_VCLPLUGIN=gen

In addition, there are other GUI backends, or plugins which are as follows:

UI Plugin UI Backend
qt5 Qt 5
qt6 Qt 6
kf5 KDE KF5
gtk3 GTK 3
gtk4 GTK 4
gtk3_kde5 GTK 3 KDE 5
win Windows UI (Windows only)
osx macOS X UI (macOS only)

You can read more about the related environment variables here:

The code for the library is available in the vcl/ folder inside core source code. Also, beside the main source code and tests, there is a folder named workbench. Inside this folder, you can find several standalone VCL applications:

VCL Applications and Workbenches

vcldemo: This is a showcase of some of the VCL rendering abilities including the lines, shapes, internationalized text, pictures and more! You can see run this demo by invoking this command, after you could be able to build LibreOffice:

./bin/run vcldemo
vcldemo vcl application

vcldemo

minvcl: This is possibly one of the smallest example application that can be created with VCL. Basically, It creates a window and draws a simple text inside it. Likewise, you can run it by invoking:

./bin/run minvcl
minvcl vcl application

minvcl

Image Tools

icontest: This bitmap image testing is used by some of the developers to test VCL bitmap rendering capabilities. It can be invoked this way:

./bin/run icontest <image>

mtfdemo: This is a small application for displaying and dumping the structure of EMF/EMF+/WMF files, which is a vector image format from Microsoft. This is previously discussed in another blog post here:

Similarly, it can be run in this way:

./bin/run mtfdemo <emf|wmf image>

Font Tools

listfonts: This utility lists the current list of fonts installed in the system, and the features of each font. To display the information on the screen, you can invoke it this way:

./bin/run listfonts --

listglyphs: This utility lists the current glyphs in a font that is already installed on the system. You should provide the font name to it, in this way:

./bin/run listglyphs FreeMono --

VCL Fuzzers and Platform Specific Tools

Beyond the above applications and tools, there are many other platform specific tools that are not available on each and every platform. Also, there are many fuzzers ans testing tools that are helpful for fuzz-testing the library. You can find the complete list of executables using this command:

ls vcl/Executable_*.mk

As can be seen in the output, many of them are fuzzers. To use the fuzzers, first you have to setup the oss-fuzz via ./bin/oss-fuzz-setup.sh script. Then, you may be able to build the fuzzers using ./bin/oss-fuzz-build.sh script. Make sure that you have $OUT, $SRC and $WORK environment variables to set the fuzzer build environment. Be ready for several tarballs and archives downloads at first. You will need curl and svn to continue.

Final Notes

These tools and small applications and their source code are good for testing and getting to understand the VCL library better. As a suggestion, you can start from the minvcl.cxx to understand how to create a GUI application that can work across various platforms with different GUI toolkits. Hopefully, I will discuss the source code of some of these examples in the later blog posts.

by Hossein Nourikhah at January 28, 2023 01:56 PM

January 20, 2023

January 17, 2023

LibreOffice QA Blog

LibreOffice 7.5 RC2 is available for testing

LibreOffice 7.5 will be released as final at the beginning of February, 2023 ( Check the Release Plan ) being LibreOffice 7.5 Release Candidate 2 (RC2) the forth and final pre-release since the development of version 7.5 started in mid June, 2022. Since the previous release, LibreOffice 7.5 RC1, 89 commits have been submitted to the code repository and 39 issues got fixed. Check the Release Notes to find the new features included in this version of LibreOffice.

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

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

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

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

Happy testing!!

Download it now!

by x1sc0 at January 17, 2023 01:10 PM

January 13, 2023

LibreOffice Dev Blog

String types in LibreOffice C/C++ code – part 1

Strings are very important types of data that are using in LibreOffice. Firstly, they are useful for storing textual data, and is essentially a sequence of characters. As LibreOffice has many modules that depend on various libraries and languages, there are different string types in LibreOffice. Here, we discuss some of them.

Character and String Data Types in C++

In C++, the standard std::string is available alongside the internal LibreOffice data types.

std::string std_str = "ت";
std::cout << "std::string: " << std_str << std::endl;

The standard std::string is not the data type of choice for storing textual values, and passing them between classes and methods, because LibreOffice has its own set of data types for this purpose. See the next sections for more information.

Please note that the usual functions to work with C strings may give unexpected results when user does not account for multi-byte encodings (like utf-8). For example, the length of the utf-8 strings as reported by std::string::length() shows the correct count of bytes (code units), but not the count of Unicode codepoints or “characters”.

Characters and Strings in LibreOffice C++ Source Code

In addition to the above C string type, in C++ OString is the 8-bit-string data type in LibreOffice that does not keep information about its encoding. On the other hand, OUString uses UTF-16 encoding, and is more widely used.

Code sample

Here is a sample code snippet for working with these LibreOffice string classes in C++:

// The text is: "واحِدْ إثٍنين ثلاثةٌ" which means "one two three"
OUString aOneTwoThree(reinterpret_cast
   (u"\u0648\u0627\u062d\u0650\u062f\u0652 \u0625\u062b\u064d\u0646\u064a\u0646"
    " \u062b\u0644\u0627\u062b\u0629\u064c" ));
std::cout << "" << aOneTwoThree << std::endl;

OUString ouStr = (sal_Unicode*)u"فارسی";
std::cout << ouStr.getLength() << std::endl;

OUString sTestString = (sal_Unicode*)u"The quick brown fox\n jumped over the lazy dog العاشر";
std::cout << sTestString <buffer);

OString oStr2("پ");
std::cout << "Unicode OString: " << oStr2 << std::endl;

Character and String Data Types in C

Some small (but important) parts of LibreOffice are in C programming language. In this case, the main type is the char[] (which is of type char * with slight difference). Essentially, it is an array of 8-bit (1 byte) characters that end with the NULL byte: '\0' or the character with the code zero. The char data type itself is used to store individual 8-bit characters. It is also possible to store UTF-8 Unicode strings in C strings.

Code sample

Here is a sample code snippet for working with these data types in C:

// storing ASCII
char c='a';
printf("Non-Unicode C Character: %c\n", c);

char s[] = "عربي";
printf("Unicode UTF-8 String: %s\n", s);

setlocale(LC_ALL, "");
wchar_t w_char = L'ب';
printf("Unicode UTF-16 String: %lc\n", w_char);

Characters and Strings in LibreOffice C Source Code

The underlying Unicode character data types for LibreOffice is sal_Unicode, and the string types rtl_String / rtl_uString. They are suitable for C source codes.

Code sample

Here is a sample code snippet for working with these data types in C:

sal_Unicode ouChar = u'ب';
printf("Unicode Character: %lc\n", ouChar);

rtl_String *rtl_str = nullptr;
rtl_string_newFromStr(&rtl_str, "پ");
printf("rtl_String: %s\n", rtl_str->buffer);
rtl_string_release(rtl_str);

rtl_uString *rtl_ustr = nullptr;
rtl_uString_newFromStr(&rtl_ustr, (sal_Unicode*)u"الف");
printf("%s", "rtl_uString: ");

Characters and Strings in Windows

For handling Unicode characters, we use wide characters in Windows. The wide character type wchar_t and wchar_t[] strings are based on it. The C++ versions of this string types is std::wstring.

This code is Windows-specific:

//Windows specific
#ifdef _WIN32
std::wstring w_string = L"الف";
wprintf("std::wstring: %ls\n", w_string.c_str());
printf("%ls\n", rtl_ustr->buffer);
#else
for(int i=0; ibuffer); ++i)
  printf("%lc", rtl_ustr->buffer[i]);
#endif
rtl_uString_release(rtl_ustr);

Please note that this code snippet is the continuation of the above code.

Characters and Strings in Qt

As LibreOffice provides Qt UI, there is a need to work with Qt data types. Specifically, QString is the string data type provided by the Qt library. The QString class provides a rich set of functions that are very useful to store and manipulate textual data in C++ applications that use Qt library.

For more information, refer to the QString page in the Qt 6 documentation:

https://doc.qt.io/qt-6/qstring.html

Code Sample

QString q_str = "ABC ا ب پ ت";
qDebug() << "QString: " << q_str;
qDebug() << q_str.length();

Additionally, LibreOffice provides GTK UI, thus there is also a need to work with GTK data type in the relevant source files. Specifically, the character data type used in the LibreOffice is the gchar, and the string data type gchar *.

Also, GString (GLib) is the struct suitable for storing and manipulating textual data. You can see its structure and utility functions in the glib manual:

https://docs.gtk.org/glib/struct.String.html

Code Sample

Here is a sample code, gchar.c:

#include 

int main(int argc, char *argv[])
{
    gchar *string1 = "Test";
    g_print("%s\n", string1);

    GString *string2 = g_string_new ("Hello");
    g_print("%lu\n", string2->len);
    g_print("%lu\n", strlen (string2->str));
    g_string_free(string2, TRUE);

    return 0;
}

You can compile it with:

gcc gchar.c -o gchar `pkg-config --cflags --libs glib-2.0`

Refactoring String Types

Not all the possible string data types are desirable. These are some of the refactoring done:

// This can be replaced with std::string
// https://gerrit.libreoffice.org/c/core/+/112980
std::unique_ptr<char[]> m_pFileName;

It is now converted to the std::string:

std::string m_sFileName;

There are situations where you have to pass a C string to a function in order to get some textual data from a C function. In such cases that changing the data is needed, you can use std::vector instead. For example:

std::vector vectorChar(10);
strncpy(vectorChar.data(), "ABCDEFGHIJ", 11);
printf("%s\n", vectorChar.data());

String Literals, Streams, Buffers and String View Types

These are the classes for the literals used in LibreOffice:

OStringLiteral
OUStringLiteral
QStringLiteral

These are the streams and buffers classes useful for creating temporary object for string manipulation:

std::stringstream
OStringBuffer
OUStringBuffer
QStringBuilder

At last, these are some of the stringview types used in the LibreOffice:

std::string_view
std::u16string_view

We will discuss about these types in the next blog posts.

by Hossein Nourikhah at January 13, 2023 11:00 AM

January 10, 2023

LibreOffice QA Blog

QA/Dev Report: December 2022

General Activities

  1. Rafael Lima continued polishing dark mode features and improved scrolling and zooming in the Basic code editor. He also improved help for ScriptForge
  2. Adolfo Jayme Barrientos updated the icons and colours in Help to match the new application icons
  3. Alain Romedenne improved help pages on built-in file dialogs
  4. Olivier Hallot (TDF) improved several extended tooltips and improved the help on cell references and cell addressing in Calc
  5. Bogdan Buzea improved the quality of the applause audio clip found in the gallery and made many string fixes and improvements in help and in the UI code
  6. Ilmari Lauhakangas (TDF) dropped the unnecessary name attribute from link elements in help with support from Christian Lohmaier
  7. Miklós Vajna (Collabora) added new commands .uno:GotoMark for jumping to a bookmark and .uno:UpdateBookmarks to update the content of a bookmark (helps especially with Zotero citations) and enhanced .uno:InsertBookmark and .uno:InsertField to allow specifying bookmark/refmark text. He also improved the Writer layout XML dump developer feature, improved the DOCX compatibility of paragraph marker formatting, fixed a layout issue related to bookmarks and fixed some Writer crashes.
  8. Jean-Pierre Ledure worked on the ScriptForge library
  9. Szymon Kłos, Andras Timar and Michael Meeks (Collabora) worked on LOKit improvements. Michael also fixed a macOS deadlock related to user input events
  10. Henry Castro (Collabora) added a mail merge unit test and made some code cleanups
  11. Eike Rathke (Red Hat) fixed an issue with date handling in Base, made it so line breaks are preserved in multi-line text when applying Formula to Value in Calc and fixed some crashes. He also improved the help for STYLE and INDEX Calc functions
  12. Tomaž Vajngerl (Collabora) polished support for document themes, for example adding the ability for reading theme colours from OOXML
  13. Julien Nabet fixed an issue with Base table UI, made Calc’s Paste Special dialog fully translatable, added an Nvidia GPU to Skia Vulkan denylist and fixed some crashes
  14. Jim Raykowski implemented a feature that highlights elements in a Writer document when selecting or hovering over their counterparts in the Navigator. He also made several other improvements to the Navigator, such as making it possible to delete references through it
  15. Andreas Heinisch made it so AutoText no longer inserts an additional empty paragraph, made bibliography entries appear sorted by identifier in Insert Bibliography dialog and improved the behaviour of input fields with a length restriction
  16. László Németh improved LibreLogo rendering speed and made it support more character formatting features. He also made it possible to check the spelling of hyperlinks, fixed an issue with comments disappearing from corrected misspelled words, added two options to spell checking dealing with compound words and fixed some regressions
  17. Xisco Faulí (TDF) continued refactoring automated tests, getting rid of much code duplication and created several new tests. He also improved the script used for downloading documents from online forums and fixed several crashes
  18. Michael Stahl (allotropia) continued improving the compliance of exported PDFs with Universal Accessibility standard, made DOCX export of bold attributes more robust and fixed some regressions
  19. Mike Kaganski (Collabora) made the code for setting property values safer, improved the new Math Sidebar panel, improved Visual Studio debugging experience, added support for hyphen-minus in style IDs. He also made many code cleanups and improvements to readability
  20. Caolán McNamara (Red Hat) continued polishing dark mode support, improved the opening performance of Application Colors option view, made it so localised font names match UI language instead of system locale, made text layouting more robust, added a button to remove all document events and made it possible to discover the causes of event-bound macro warnings through an infobar, made Statusbar in Writer show tooltips for sections and tables, made Calc’s sheet navigation and insertion buttons show tooltips and improved the Romanian AutoCorrect file. He also made many other UI-related improvements and crash fixes
  21. Stephan Bergmann (Red Hat) improved the debugging experience of unit tests. He also adapted the code to compiler changes and made many code and build-related cleanups as well as test fixes
  22. Noel Grandin (Collabora) improved the performance of SUMPRODUCT(IF..) in Calc and fixed an API usage issue with some chart UNO objects not advertising their types properly. He also made many code cleanups and general optimisations
  23. Justin Luth (Collabora) worked on VBA ContentControls support, improved the DOCX roundtripping of content controls, improved the indentation of list styles and made font and highlight colour toolbar buttons work in comments
  24. Paris Oplopoios (Collabora) added support for hidden status of range filter buttons in XLSX files, improved XLSX compatibility of charts and DOCX compatibility of content controls and made saving Writer documents with macros to Microsoft format conform to the DOCM file type requirement. He also improved Writer’s Accessibility checker
  25. Chris Sherlock made some code cleanups in vcl
  26. Maxim Monastirsky improved the handling of Draw table styles, for example making pasting action behave more intuitively
  27. Khaled Hosny (Alif Type) removed the bundled Source Serif/Sans/Code Pro, Kacst Book/Office fonts due to various issues, separated stylistics sets and character variants in the Font Features dialog, fixed the calculation of ascenders and descenders of some fonts upon PDF export, worked around an issue with strike out formatting of text using Liberation Serif font, improved the handling of different script types in various text previews and fixed an issue with gaps appearing after Kashida. He also made many renovations in font-related code
  28. Armin Le Grand (allotropia) improved the appearance of the blur effect with shadows and made refactorings in graphics handling code
  29. Taichi Haradaguchi upgraded some dependencies
  30. Daniel Lohmann made it so the presenter screen displayed as a normal window can also be shown on a single monitor
  31. Tibor Nagy (NISZ) fixed issues with tiled image sizes being reset in the Area tab, incorrect 3D shape properties in PPTX export and tiled background images in PPTX import
  32. Christian Lohmaier (TDF) made huge optimisations to the build performance of help and made many other build-related optimisations such as avoiding needless rebuilding of icon and gallery themes
  33. Kevin Suo fixed PDF import issues with Asian font settings not being loaded correctly and ligatures in RTL text being reversed incorrectly
  34. Thorsten Behrens (allotropia) made some build-related improvements and fixed a Writer unit test
  35. Arnaud Versini made some code cleanups
  36. Nick Wingate (Collabora) worked on the JavaScript dialog code used by Collabora Online
  37. Tor Lillqvist (Collabora) worked on the WASM build
  38. Chenxiong Qi ported many Java SDK examples to Python
  39. Tünde Tóth (NISZ) fixed an issue with charts getting lost upon DOCX export
  40. Galdam Jitsu replaced application and mime type icons with newly designed ones
  41. Patrick Luby (NeoOffice) fixed many macOS issues, including a printing issue with the Skia graphics engine and crashes and hangs. He also implemented support for the macOS press-and-hold functionality for special character input and made the macOS installation process faster by switching from bzip2 to lzfse compression in the .dmg file
  42. Tarcísio Ladeia de Oliveira fixed some unit test issues
  43. Aurimas Fišeras made some cleanups in configure.ac
  44. Povilas Kanapickas implemented support for touchpad zoom gestures
  45. Đoàn Trần Công Danh made a Boost 1.81.0 compatibility fix
  46. Attila Szűcs (Collabora) fixed conditional border colour not being exported to XLSX
  47. Dennis Francis (Collabora) made PDFium-based import of PDF files more robust
  48. Roman Kuznetsov added Duplicate Page command to Draw’s page pane context menu
  49. Michael Weghorn fixed a KDE UI issue in the BASIC Dialog Editor and worked the Android build
  50. Ilhan Yesil fixed an issue with the size of wizard pages created using the UNO API
  51. Vasily Melenchuk (CIB) made handling of invalid styles in RTF files more robust and implemented checking of Windows Security Zones to determine macro security level
  52. Brett T. Warden (Intel) made the SVG conversion method of QR codes compatible with the latest library version

Kudos to Ilmari Lauhakangas for helping to elaborate this list.

Reported Bugs

437 bugs, 53 of which are enhancements, have been reported by 260 people.

Top 10 Reporters

  1. BogdanB ( 35 )
  2. Eyal Rozenberg ( 22 )
  3. Mike Kaganski ( 16 )
  4. Stéphane Guillou (stragu) ( 15 )
  5. Rafael Lima ( 8 )
  6. rferraro ( 8 )
  7. steve ( 7 )
  8. Robert Großkopf ( 6 )
  9. خالد حسني ( 6 )
  10. Telesto ( 6 )

Triaged Bugs

583 bugs have been triaged by 65 people.

Top 10 Triagers

  1. Buovjaga ( 147 )
  2. Stéphane Guillou (stragu) ( 89 )
  3. Dieter ( 42 )
  4. m.a.riosv ( 37 )
  5. Heiko Tietze ( 26 )
  6. Alex Thurgood ( 22 )
  7. V Stuart Foote ( 22 )
  8. خالد حسني ( 19 )
  9. Mike Kaganski ( 17 )
  10. Julien Nabet ( 17 )

Resolution of resolved bugs

534 bugs have been set to RESOLVED.

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

Fixed Bugs

146 bugs have been fixed by 31 people.

Top 10 Fixers

  1. Caolán McNamara ( 27 )
  2. Khaled Hosny ( 9 )
  3. Bogdan B ( 8 )
  4. Patrick Luby ( 8 )
  5. László Németh ( 7 )
  6. Rafael Lima ( 6 )
  7. Tünde Tóth ( 5 )
  8. Julien Nabet ( 5 )
  9. Michael Stahl ( 5 )
  10. Tibor Nagy ( 5 )

List of high severity bugs fixed

  1. tdf#142147 File->Save As: “Save with password” is deselected by default for password-protected documents ( Thanks to Justin Luth )
  2. tdf#146842 All pages are empty/white when printing (skia, macOS only) ( Thanks to Patrick Luby )
  3. tdf#146875 Writer: ToC Index updating hangs ( Thanks to Michael Stahl )
  4. tdf#151842 Font “Base size” reverts to sm config default of 12pt after reloading any formula (OLE object and standalone document) ( Thanks to Xisco Fauli )
  5. tdf#151894 FILEOPEN a Base Document with customized event for open a startform by “open document” LO stuck ( Thanks to Stephan Bergmann )
  6. tdf#152434 FILEOPEN:PPTX: Images not displayed ( Thanks to Tibor Nagy )
  7. tdf#152520 Crash: if macro uses module TITLE_CASE or SENTENCE_CASE in Transliteration module ( Thanks to Julien Nabet )
  8. tdf#152606 Crash if I open the specified pptx file ( Thanks to Julien Nabet )
  9. tdf#152717 DDE linking in calc is broken since 7.4.3 RC1 ( Thanks to Mike Kaganski )
  10. tdf#42437 Enable the macOS press-and-hold functionality for special character input (é, ñ, etc.) ( Thanks to Patrick Luby )

List of crashes fixed

  1. tdf#145843 Incidental Crash on macOS with skia raster (STR comment 8) ( Thanks to Patrick Luby )
  2. tdf#146765 Base Form – crash when scrolling in dual form & “data as table” display (macOS Arm) ( Thanks to Patrick Luby )
  3. tdf#152495 crash when closing ruby (phonetic guide) dialog with escape (gtk3) ( Thanks to Caolán McNamara )
  4. tdf#152520 Crash: if macro uses module TITLE_CASE or SENTENCE_CASE in Transliteration module ( Thanks to Julien Nabet )
  5. tdf#152606 Crash if I open the specified pptx file ( Thanks to Julien Nabet )
  6. tdf#82115 Repeatable crash/hang entering Japanese into a Writer comment on OSX ( see comment 4 ) ( Thanks to Patrick Luby )

List of performance issues fixed

  1. tdf#105575 Slow rendering when using a Logo command ( Thanks to László Németh )
  2. tdf#152301 slow opening of Options > Application Colors ( Thanks to Caolán McNamara )

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

  1. tdf#105575 Slow rendering when using a Logo command ( Thanks to László Németh )
  2. tdf#120190 Data “Formula to Value” don’t preserve line break with multi-line text value ( Thanks to Eike Rathke )
  3. tdf#121297 LO Impress: “JPG Quality” overlapping with “Reduce image resolution” in Presentation Minimizer Wizard in some GTK3 ( Thanks to Caolán McNamara )
  4. tdf#42437 Enable the macOS press-and-hold functionality for special character input (é, ñ, etc.) ( Thanks to Patrick Luby )
  5. tdf#45949 SPELL check does not work for words with hyperlink ( Thanks to László Németh )
  6. tdf#53023 AutoText (text only) embeds extra carriage return ( Thanks to Andreas Heinisch )
  7. tdf#65535 Correcting a misspelled word with a comment in the middle erases the comment (see comment 38) ( Thanks to László Németh )
  8. tdf#82115 Repeatable crash/hang entering Japanese into a Writer comment on OSX ( see comment 4 ) ( Thanks to

by x1sc0 at January 10, 2023 10:53 AM

January 04, 2023

allotropia

Improving LibreOffice’s list numbering feature

Numbering and bullet list are a core feature of every word processing application, and naturally LibreOffice Writer has gazillion options in that area. Of course, Writer can also handle multilevel lists:

  1. First line, first level
    1. Second line, second level
    2. Third line, second level
      1. Fourth line, third level
      2. etc etc

Now, how are these lists stored in ODF? Each level defines a num-prefix (what will be written before numbering), a num-suffix (same as prefix, but appended after the number), and display-levels – determining how many previous levels will be in list:

<text:list-level-style-number
text:level="3"
style:num-prefix="&gt;&gt;"
style:num-suffix="&lt;&lt;"
style:num-format="1"
text:display-levels="3">

In this example, we define a format for the third list level (in a numeric format), with displaying of all 3 levels and >> & << as a prefix/suffix. The output in Writer then looks like this: “>>1.2.3<<”

This is a nice and concise representation for many Western use-cases. But what can we do in this example:

arabic numbered list

Or in this case (https://bugs.documentfoundation.org/show_bug.cgi?id=116883):

One possible simple solution: we add a configurable number delimiter. In most cases, we would separate level numbers by “.” (and this was hard-coded in LO previously). For other cases, we should use “-” or “/”.

But before getting ahead of ourselves, lets first take a look what Word and DOCX does here:

Hmm, so Word does something completely different here: instead of a prefix/suffix, it uses an elaborate formatting string for numbers, where we can define any random prefix and suffix, plus arbitrary delimiters between different level numbers! We can even omit some numbers or worse, change their order of appearance (it is unclear how much sense that makes, but surely someone is now (mis)using that feature out there in documents).

And this is stored in DOCX in a rather simple xml attribute:

<w:lvlText w:val="%1-%2-%3-%4-"/>

Instead of prefix, suffix, display-levels and some additional separators, this has just one property, which at the same time provides much more flexibility.

Since LibreOffice 7.0, we are now using this lvlText (list format string) as an internal representation for documents (https://git.libreoffice.org/core/+/7459b9ecb54a298f02d19089620149718f8d8d48). This is enough to correctly load and save DOCX/DOC/RTF files, like the one from the screenshot above.

But we need to go further. If we save such DOCX files to ODT, more complex list level formattings will be lost.

Starting with LibreOffice 7.2, and with commit https://gerrit.libreoffice.org/c/core/+/117156/16, LibreOffice now features something quite similar to the DOCX properties: a new loext:num-list-format, which is obsoleting the older, less expressive num-prefix, num-suffix and text:display-levels attributes.

Unlike in DOCX instead of placeholders like “%1”, “%2”, this new ODF property is using “%1%”, “%2%”, etc. So why is that? Well in Word you can define up to 9 levels of list numberings, and %1 – %9 are enough for this representation. In LibreOffice, there are at least 10 levels, but even more ODF strives to be implementation-independent – so any hard limits here are anathema. Since format strings like “%10” are ambiguous (is it the “%1” placeholder with a “0” suffix, or is it the “%10” placeholder?) – the ODF specification uses the “%” delimiter on both sides of the placeholder.

Further improvements here include incorporating also style:num-format, to define numbering types for each level independently, in a way similar to the classical printf() format strings, in use with many programming languages.

The new num-list-format property is proposed for inclusion in ODF 1.4, but while this standard update slowly proceeds towards ratification, LibreOffice is meanwhile using its own namespace for it.

Work in this area is ongoing. Further efforts are needed:

  • LibreOffice’s UI need an update, to at least optionally allow list format string editing. Right now it is still using the old prefix/suffx edit boxes, where values are extracted from the list format string.
  • more refactoring of the Writer model – list format strings are still an optional element in list level definitions, and there are scenarios that need fallbacks if it is missing
  • more bugfixing of course – although the newest LibreOffice 7.4 / 7.5 beta are in fairly good shape, also thanks to the work of many other contributors
  • for reference, there’s a wiki page now to collect ToDo items around improving numbering support

by allotropiasoft at January 04, 2023 06:05 PM

January 03, 2023

Miklos Vajna

Improved number portion formatting in Writer

Number portions generated when using lists/numberings/bullets in Writer now can have formatting which is preserved in ODT files as well.

First, thanks Docmosis for funding this work by Collabora.

Motivation

Word and DOCX files support explicit character properties for the paragraph marker, and these are also used for the formatting of a number portion if the paragraph has one. This was already loaded from / saved to DOCX, but it was lost when saving to ODT.

Results so far

First, we got a bug document, where the reference rendering and our rendering differed:

Reference (on the left) and our old (on the right) rendering, due to bookmarks

In this case, what happened was that part of the heading text was covered by a bookmark, so we first created multiple character ranges (outside the bookmark, inside the bookmark), then as an optimization we even unified them to be a single formatted character range, covering the entire paragraph. This was a document model that is different from the bookmark-free version, where the character formatting was set on the paragraph itself.

This was fixed at render time and at DOCX export time to consider both full-paragraph character ranges and in-paragraph character properties. For a while, this looked like the entire story, since this now looks good in Writer:

Our new rendering, handling bookmarks

A bit later another, related bug was discovered. Given a reference document:

Reference rendering of a second document

Just opening this DOCX file in Writer, it looked like this:

Old rendering in Writer

Note how the first number portion turned into bold! This was expected after the above layout change to consider full-paragraph formatted character ranges, but it also meant that Word can have one set of character formatting for the entire character range of a paragraph, and another for the paragraph marker.

To make the problem worse, this second document was showing that even the ODT export/export feature had problems, still:

Old rendering in Writer after ODT save + load

The fix to solve all of the above was to undo the previous render / DOCX export change, then teach the ODT export to explicitly save the paragraph marker formatting (as an empty span at the end of the text node) to ODT, and also to load it back.

This means that now Writer can render the second document correctly, without breaking the first document:

New rendering in Writer

How is this implemented?

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

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

Want to start using this?

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

by Miklos Vajna at January 03, 2023 07:30 AM

December 27, 2022

LibreOffice QA Blog

LibreOffice 7.5 RC1 is available for testing

LibreOffice 7.5 will be released as final at the beginning of February, 2023 ( Check the Release Plan ) being LibreOffice 7.5 Release Candidate 1 (RC1) the third pre-release since the development of version 7.5 started in mid June, 2022. Since the previous release, LibreOffice 7.5 Beta1, 213 commits have been submitted to the code repository and 70 issues got fixed. Check the Release Notes to find the new features included in this version of LibreOffice.

LibreOffice 7.5 RC1 can be downloaded for Linux, macOS and Windows, and it will replace the standard version.

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

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

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

Happy testing!!

Download it now!

by x1sc0 at December 27, 2022 10:32 AM

December 08, 2022

Marius Popa Adrian

Firebird high-level native client for Node.js / TypeScript status status for Firebird Advent 2022

Firebird high-level native client for Node.js / TypeScript status status for Firebird / Typescript Advent 2022https://qiita.com/advent-calendar/2022/firebirdTo use the driver you can start with the readme from npm/githubhttps://www.npmjs.com/package/node-firebird-driver-nativeA few more examples are in the packages/node-firebird-driver/src/test directoryWe have seen several releases with a few

by Popa Adrian Marius (noreply@blogger.com) at December 08, 2022 12:15 PM

December 05, 2022

Miklos Vajna

Improved watermark in the PDF export

The PDF export now supports various additional properties for the optional PDF watermark.

First, thanks Docmosis for funding this work by Collabora.

Motivation

Rendering of a PDF watermark with custom rotation and color

When you hear the word "watermark", you probably have something like the above picture in mind.

Instead, what the PDF export had is more like a proof of concept:

Rendering of a PDF watermark with default settings

The request was to add new options to control the font size, font name, rotation angle and color of the watermark, so in case an organization already has a given style of watermarks they prefer, our PDF export can be adapted accordingly.

Results so far

First, now you can specify a custom color, e.g. gray (#7f7f7f), using:

soffice --convert-to pdf:writer_pdf_Export:'{"Watermark":{"type":"string","value":"draft"}, "WatermarkColor":{"type":"long","value":"8355711"}}' test.odt

Rendering of a PDF watermark with custom color

Then you can also customize the font size, in case the automatic size would not fit your needs, using:

soffice --convert-to pdf:writer_pdf_Export:'{"Watermark":{"type":"string","value":"draft"}, "WatermarkFontHeight":{"type":"long","value":"100"}}' test.odt

Rendering of a PDF watermark with custom font size

Or perhaps you want a serif font, not a sans one:

soffice --convert-to pdf:writer_pdf_Export:'{"Watermark":{"type":"string","value":"draft"}, "WatermarkFontName":{"type":"string","value":"Times"}}' test.odt

Rendering of a PDF watermark with custom font name

Finally you can have a custom rotate angle:

soffice --convert-to pdf:writer_pdf_Export:'{"Watermark":{"type":"string","value":"draft"}, "WatermarkRotateAngle":{"type":"long","value":"450"}}' test.odt

Rendering of a PDF watermark with custom rotation

Using these building blocks, you can also build combinations, the first screenshot above was created using:

soffice --convert-to pdf:writer_pdf_Export:'{"Watermark":{"type":"string","value":"draft"}, "WatermarkRotateAngle":{"type":"long","value":"450"}, "WatermarkColor":{"type":"long","value":"8355711"}}' test.odt

i.e. the configuration JSON is:

{
    "Watermark": {
        "type": "string",
        "value": "draft"
    },
    "WatermarkRotateAngle": {
        "type": "long",
        "value": "450"
    },
    "WatermarkColor": {
        "type": "long",
        "value": "8355711"
    }
}

How is this implemented?

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

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

Want to start using this?

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

by Miklos Vajna at December 05, 2022 04:07 PM

December 03, 2022

Marius Popa Adrian

node-firebird driver status for Firebird Advent 2022

node-firebird status for Firebird Advent 2022 https://qiita.com/advent-calendar/2022/firebird also for  Javascript Advent https://qiita.com/advent-calendar/2022/javascriptThis year we have seen several releases with a few features and changes :Version 1.1.0 Changes : Srp implementation by @maratth in #242Add optional callback for pool destroy by @Tomas2D in #244Set protocolVersion as optional in

by Popa Adrian Marius (noreply@blogger.com) at December 03, 2022 05:12 PM

November 29, 2022

LibreOffice Design Blog

Results from the survey about LibreOffice Impress

Similar to the questionnaires about LibreOffice Draw (see first and second blog post) and LibreOffice Calc (see this post) we now run a survey on LibreOffice Impress to learn how the program is utilized, what features are used most frequently, and what users see as positive and negative and what they expect of the future.…

by Heiko Tietze at November 29, 2022 03:18 PM

November 25, 2022

Marius Popa Adrian

LibreOffice Base can connect to an external Firebird server

LibreOffice Base can connect to an external Firebird server , here is an example with employee.fdb from Firebird 3 examples folder copied to c:\tmpTested with LibreOffice 7.4.x and Firebird 3 default install on Windows 11 (all 64 bits versions)and here is the Relation Design in LibreOffice Base

by Popa Adrian Marius (noreply@blogger.com) at November 25, 2022 02:52 PM

November 24, 2022

Caolán McNamara

macOS Dark Mode


For LibreOffice 7.5 I've reworked the theming on macOS to get some support for Dark Mode, as seen above. As a side effect "accent colors" work in Light Mode too.

by caolan (noreply@blogger.com) at November 24, 2022 03:39 PM

November 15, 2022

Jean Hollis Weber

Second edition of Designing with LibreOffice available for free download

Designing with LibreOffice coverBruce Byfield and Jean Hollis Weber announce the second edition of Designing with LibreOffice. The book is available as an .ODT or .PDF file under the Creative Commons Attribution/Sharealike License version 4.0 or later from https://designingwithlibreoffice.com/

The first edition was published in 2016, and was downloaded over thirty-five thousand times. Michael Meeks, one of the co-founders of LibreOffice, described the first edition as “an outstanding contribution to help people bring the full power of LibreOffice into their document.” Similarly, free software author and journalist Carla Schroder wrote, “Designing With LibreOffice teaches everything you need to know about document production…. suitable for beginners to wizened old pros, who will probably discover things about LibreOffice that they didn’t know.”

The second edition updates the original, removing outdated information and adding updated screenshots and new information about topics such as Harfbuzz font shaping codes, export to EPUB formats for ereaders, the Zotero extension for bibliographies, and Angry Reviewer, a Grammarly-like extension for editing diction. In the future, the writers plan to release other editions as necessary to keep Designing with LibreOffice current.

For more information or interviews, contact Bruce Byfield at bbyfield@axion.net.

by Jean at November 15, 2022 04:54 AM

November 04, 2022

Collabora Community

Collabora’s Contributions to the LibreOffice Conference 2022 in Milan

The Talks and Slides by Collaboran’s at the LibreOffice Conference 2022

The LibreOffice Conference 2022 (LibOCon) took place from September 28 to October 1 in Milan. It was the first LibreOffice Conference since the outbreak of the COVID-19 Pandemic that took place as an in-person event. Collabora was one of the sponsors, and a significant number of our developers contributed talks on various aspects of LibreOffice technology. Did you miss any of those? Don’t worry! All our talks are available for you on YouTube inside our LibOCon playlist. Please also feel free to download the slides we included in this blog post.

Keynotes and Advocating

Michael Meeks: Sponsor Keynote Collabora

Michael Meeks, Managing Director of Collabora Productivity, takes a look at the latest developments in LibreOffice from an organisational and ecosystem perspective. See details

Watch the talk
Download the slides

Michael Meeks: The ongoing story of Online

Hear Michael Meeks tell the history of LibreOffice in the browser. From it’s pre-historic past as StarPortal, through gtk-broadway prototypes, to Collabora Online as we know it today. See details

Watch the talk
Download the slides

Technical Talks

Sarper Akdemir: Chasing an Interoperability Bug in Impress

During the Quality Assurance track, Sarper Akdemir explained how to fix an interoperability bug by showcasing the whole process of understanding, fixing, and implementing tests. See details

Watch the talk
Download the slides

Tomaž Vajngerl: Sparklines and Chart Data Tables – New Features in Calc

Sparklines are mini charts, that are drawn into a cell. In his talk, senior software engineer Tomaž Vajngerl presented the features and the challenges during the development. See details

Watch the talk
Download the slides

Miklos Vajna : Content Controls in Writer

While LibreOffice and Collabora Office were already capable of filling forms via form controls or form fields, they can now also fully represent content controls. In this talk by Senior Software Engineer Miklos Vajna, see how this work was implemented! See details

Watch the talk
Download the slides

Follow Collabora


Collabora Productivity created Collabora Online, a powerful online office suite, which you can integrate into your own infrastructure. It prioritises your digital sovereignty and provides you with all the tools to keep your data secure, without compromising on features. Collabora provides a wide range of products, as well as consulting services for enterprises and governments. Powered by the largest team of certified LibreOffice engineers in the world, Collabora is a leading contributor to the LibreOffice Technology codebase and community. Collabora Office for Desktop and Collabora Online provide a business-hardened office suite with long-term support. Collabora’s multi-platform policy is completed with Collabora Office for iOS, Android, and Chrome OS. Collabora Productivity is a division of Collabora, the global software consultancy dedicated to providing the benefits Open Source to the commercial world, specializing in mobile, automotive and consumer electronics industries. For more information, follow us  on Twitter, LinkedIn and YouTube.

 

 

The post Collabora’s Contributions to the LibreOffice Conference 2022 in Milan appeared first on Collabora Office and Collabora Online.

by Marc Rodrigues at November 04, 2022 11:46 AM

November 03, 2022

Miklos Vajna

Content controls in Writer: titles and tags

Writer now supports titles and tags for content controls, which helps providing context for the filled in text even if the placeholder text is replaced already.

This work is primarily for Collabora Online, see the previous post for background.

Motivation

Rendering of a title for a content control

Once several content controls are added to a document, it's easy to forget what was the exact purpose of what content control. Think of a press release for example – those regularly start with a location and a date, but once this information is provided, one no longer knows which content control was for which content.

Titles solve this problem for the user: similar to Writer's header/footer buttons, this button appears when you enter the content control and reminds you what content is expected there, even if the placeholder is already replaced.

Tags serve a similar purpose, but they are unique, machine-readable keys or identifiers, so once the form is filled in, an external consumer can easily extract the information from the document, given a specific tag.

Results so far

Titles (also known as aliases) and tags are now not only preserved, but also we have a UI to create, show, edit and delete them. This is available in the desktop rendering and also in the LOK API.

Somewhat related, in case a content control breaks into multiple lines or has formatting to break into multiple text portions, we now only emit one PDF widget for it, taking the description of the widget from the content control's title.

The last related improvement is that now we handle data binding for date content controls, which means that you can specify a timestamp, a language and a date format, and we'll format that timestamp and update the content control's string value at import time from 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 small changes:

Want to start using this?

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

by Miklos Vajna at November 03, 2022 12:37 PM