The Document Foundation Planet

 

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

Official TDF Blog

Release of LibreOffice 7.4.3 Community

Berlin, November 24, 2022 – LibreOffice 7.4.3 Community, the third maintenance release of LibreOffice 7.4, the volunteer-supported office suite for personal productivity on the desktop, is immediately available from https://www.libreoffice.org/download for Windows (Intel and Arm processors), macOS (Apple M1 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.

A description of all new features of the LibreOffice 7.4.x releases is available in the Release Notes: https://wiki.documentfoundation.org/ReleaseNotes/7.4

A video summarizing the top new features in LibreOffice 7.4 Community is available on YouTube: https://www.youtube.com/watch?v=PC8M4UzqpqE and PeerTube: https://peertube.opencloud.lu/w/myZUTCytN28kuxDa5VXNgh.

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.

LibreOffice – thanks to its mature codebase, rich feature set, strong support for open standards, excellent compatibility and LTS options from certified partners – is the ideal solution for businesses that want to regain control of their data and free themselves from vendor lock-in.

Availability of LibreOffice 7.4.3 Community

LibreOffice 7.4.3 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/

Users still deploying the LibreOffice 7.3 family because of the additional testing and bug fixing, should switch immediately to LibreOffice 7.4.3, which has been extensively tested by millions of users worldwide, as the older version will reach the end of life and will not be maintained after November 30, 2022.

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

by Italo Vignoli at November 24, 2022 12:28 PM

November 23, 2022

Official TDF Blog

Sign the open letter about the universal right to install any software on any device

Earlier in 2022, together with more than 100 European organisations and companies, The Document Foundation has signed the #OpenLetter about the universal right to install any software on any device. Join us and sign the letter today.

To: Legislators in the European Union

In copy: Citizens of the European Union

The universal right to freely choose operating systems, software and services

Software design is crucial for the ecodesign and sustainability of products and hardware. Free Software systems and services enable reuse, repurposing and interoperability of devices. The universal right to freely choose operating systems, software and services is crucial for a more sustainable digital society.

The ongoing digitization of infrastructures and services comes along with a continuously growing number of electronic devices that are connected to the Internet – be it in private, public or business environments. Many of these devices need more energy and natural resources to be produced than the energy they consume during their entire lifespan. And way too many of these devices are being wasted and not reparable simply because the software stops working or is not being updated anymore.

Once the pre-installed software stops users from continuing to use their hardware, restrictive ownership models prevent users from helping themselves to enjoy longer use of their devices. Restrictions span from physically locking down hardware, to technical obscurity by using proprietary software, to legal restrictions via software licenses and end user license agreements. This way, manufacturers often prohibit repairability, access and reuse of their devices. Even after purchase, customers often do not really own their devices. They are not able to do what they want with their very own devices. If you cannot install the software you want on your own device – you don’t own it.

We, the signees of this open letter,

  • recognize that free access to the hardware and software determines how long or how often a device can be used or reused.
  • declare the increased longevity and reusability of our devices to be inevitable for a more sustainable digital society.

That is why we ask legislators around Europe to make use of the historic chance and enable a more sustainable use of electronic products and devices with a universal right to install and run any software on any device. To this end, we demand that:

Users have the right to freely choose operating systems and software running on their devices

Our tablets, phones and other connected devices are general purpose computers. Replacing software and operating systems on these devices enables us to extend the initial lifespan of a device and to make full use of our hardware. For the ability to reuse and repurpose our resources in a creative and sustainable way we need the universal right to install and develop any operating system and software we want on any of our devices. Any legal, technical or other obstacles to reuse these devices for any purpose must not be allowed.

Users have the right to freely choose between service providers to connect their devices with

Users must have the free choice of providers offering software related services, meaning they can use the device from one manufacturer with the service provided by another. Many connected clients today go to waste simply because their online services go offline. Free choice of services allows these clients to be reused by connecting to another service.

Operating systems and embedded software determine possible interactions between generic sensors, modules and systems with their connected online services. For users to exercise free choice of services, they must be able to use the device from one manufacturer with any online service, which could be supplied by any other third party or by themselves. Connected services as well as the software on connected devices and applications must offer interoperability and full functionality of a device’s initial purpose with the use of Open Standards.

Devices are interoperable and compatible with open standards

Software designs and architectures determine accessibility and compatibility of hardware via standards, drivers, tools, and interfaces. Proprietary software and protocols hinder competition among manufacturers, undermine repairability of devices and create an artificial incompatibility of different devices within the same infrastructure. Interoperability of single devices however is crucial for the creation of sufficient, sustainable and long-lasting IT infrastructures. To enable interoperability, manufacturers must ensure that any data necessary to run a device’s primary function is compatible with and possible to import/export in open standards.

Source code of drivers, tools, and interfaces are published under a free license

Smaller components of a device often require specific drivers, tools, and interfaces to operate. Users need full access and free reusability of the source code of those drivers, tools, and interfaces to analyse and integrate a device within a set of interconnected devices from different manufacturers. Source code reusability is also key to exercise the full right to repair for any third-parties from professional repair shops to repair cafés to end users.

A free license is any license that gives everyone the four freedoms to use, study, share and improve the software, including Free Software and Open Source Software licenses. The obligation to publish drivers, tools, and interfaces under such a free license after market entry is key for full access to our devices and exercising the universal right to repair.

To sign the open letter, you can click on the following link: Open Letter about the universal right to install any software on any device

 

by Italo Vignoli at November 23, 2022 10:33 AM

November 22, 2022

Official TDF Blog

Welcome Stéphane Guillou, new QA Analyst for LibreOffice

Photo portrait of Stéphane Guillou

We have a new team member at The Document Foundation, the non-profit entity behind LibreOffice! (That means we’re now 13 people.) Stéphane Guillou joins us as a Quality Assurance Analyst – so let’s get to know him better:

Tell us a bit about yourself!

I am from France, with roots also in Peru, but lived for the last 10 years in Australia with my awesome little family before coming back to France. We now live in Alsace, close to the forest in the Vosges mountains.

I studied plants, ecology and sustainability before working in agricultural research. I am still very passionate about plants and the environment, but my focus has moved towards supporting researchers in their data analysis, promoting Open Science principles and offering training about FLOSS research software, which I was able to do for the last 4 years at the University of Queensland’s Library, and before that as a certified instructor of the Carpentries organisation.

I am passionate about sharing information about Open Science, and contributing data to the Commons. You can for example find me on other wonderful projects like OpenStreetMap, iNaturalist and MusicBrainz.

When I am not parenting or working, I like spending time on electronic music, amateur radio and cycling.

What’s your new role at The Document Foundation?

I am the new Quality Assurance (QA) Analyst, and a lot of my time will be spent on triaging the issues users report on Bugzilla – our bug-reporting platform. There is a lot of activity on Bugzilla, and classifying and testing the reports is fundamental for us to focus on the most pressing issues, help the work developers are doing, and keep improving the software for everyone! Part of the work will also be to analyse and summarise the wealth of data available to help us see the bigger picture and make better decisions when allocating resources.

Pie chart showing the split between resolved bug statuses on Bugzilla. Four main categories are fixed (40.7%), duplicate (18.8%), insufficient data (13.1%) and works for me (12.5%).

Pie chart showing the split between resolved bug statuses on Bugzilla. Four main categories are “fixed” (40.7%), “duplicate” (18.8%), “insufficient data” (13.1%) and “works for me” (12.5%).

How did you get involved in LibreOffice, before you joined TDF?

I have used LibreOffice since it was first released in 2011, and have always liked reporting problems and helping out with the QA process in little bursts, just like I like doing with any FLOSS tool I use. I feel it’s a great way to give back to the community.

How can regular users of LibreOffice help out with the QA project?

Everyone can help our QA project by first using the software, and reporting problems when you encounter them. Have a look if the issue has been reported before, and if not, you might have found a new one! It’s important to not assume that someone has reported the issue before you. LibreOffice is a very customisable and rich office suite, so people use it in vastly different ways.

If you want to help some more, feel free to install development versions to test them, look at reports on Bugzilla to confirm issues and classify them, identify exactly when an issue arose (it’s called “bibisecting“), and share your learnings and processes with others! There is a wealth of tasks you can start on on our Wiki.

Thank you for your help building an office suite for all!

We’re really happy to have Stéphane on board! Donations from LibreOffice users help us to grow our team, maintain our infrastructure and support the communities working on LibreOffice. Support us here!

by Mike Saunders at November 22, 2022 08:35 AM

November 21, 2022

Michael Meeks

2022-11-21 Monday

  • Mail chew, catch up with Mike, planning call. Poked at some bugs and did a bit of hacking in passing. B&A out for a nice lunch in Cambridge with H,N,M. Caught up with them in the evening.

November 21, 2022 09:00 PM

Official TDF Blog

Quick tutorial – Docking Colour Palettes in LibreOffice Draw

Did you know? You can dock colour palettes in many places in LibreOffice Draw. Here’s a quick video from Harald Berger, from the German LibreOffice community:

Please confirm that you want to play a YouTube video. By accepting, you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

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

by Mike Saunders at November 21, 2022 02:21 PM

November 20, 2022

Michael Meeks

2022-11-20 Sunday

  • All Saints in the morning, played with Cedric, Robert spoke, back for lunch with Bruce & Anne over to stay, chatted with them in the afternoon. Watched an SAS video later.

November 20, 2022 09:00 PM

November 19, 2022

Michael Meeks

2022-11-19 Saturday

  • Up, mowed verge, filled the bin - topping it with lots of mud from cast-iron soak-away drain that's been filled for years.
  • Lunch, David over; replaced dead Xpelair ceiling fan in babes bathroom with an improved Vent-Axia version. Dunged out U-bends with plungers and soda crystals to get house into some order.
  • Wraps for dinner & chatted.

November 19, 2022 09:00 PM

November 18, 2022

Michael Meeks

2022-11-18 Friday

  • Mail chew, poked at Wireshark and discovered zstd delta non-compression, fixed that. Sync with Rashesh around K8s.

November 18, 2022 09:00 PM

Official TDF Blog

LibreOffice Conference 2022 videos: Events, GSoC, CJK issues, graphics subsystems…

Here’s a new batch of talks from the recent LibreOffice Conference 2022! Watch the individual videos below, or click here to view the playlist.

 

LibreOffice Conference Latin America, Second Edition, with Gustavo Pacheco

Please confirm that you want to play a YouTube video. By accepting, you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

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

 

Google Summer of Code 2022 panel, with Hannah Meeks, Tomaž Vajngerl and Miklos Vajna

Please confirm that you want to play a YouTube video. By accepting, you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

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

 

A year of LibreOffice at Collabora, with Jan Holešovský

Please confirm that you want to play a YouTube video. By accepting, you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

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

 

LibreOffice graphics subsystems, with Armin Le Grand

Please confirm that you want to play a YouTube video. By accepting, you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

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

 

State of CJK issues of LibreOffice, 2022 edition, with Shinji Enoki

Please confirm that you want to play a YouTube video. By accepting, you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

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

by Mike Saunders at November 18, 2022 12:39 PM

November 17, 2022

Michael Meeks

2022-11-17 Thursday

  • Caught up with Miklos, poked at project manager hiring with Kendy.

November 17, 2022 09:00 PM

LibreOffice Dev Blog

Formatting the code in your patch for LibreOffice

Do you want to submit a patch to LibreOffice Gerrit, and you’re wondering if your code will be accepted or not? Other than providing a good solution to resolve a problem (fix a bug, implement a feature or enhancement), you should care about the code conventions, and in particular, code formatting. Suitable code formatting for LibreOffice is what we discuss here.

Code Formatting Conventions

LibreOffice is based on the old code base of OpenOffice. Because of that, LibreOffice uses the coding conventions of OpenOffice in most places. There is a list of rules that you can refer to when needed, in the OpenOffice Wiki:

Here is a comprehensive list of C++ coding rules:

You can see many rules and standards there – beyond code formatting – from design to the way you should declare and implement classes, and their functions and variables. You will also find topics about how to create header files, how to document code and how to achieve type safety.

But, focusing only on C++ code formatting, you should make sure that:

  1. Each source file should have a suitable header. For the existing files, please keep the header as is.
  2. The source file should have a newline character in the end.
  3. It is suggested that you limit the code to only ASCII characters, and avoid using utf-8 string literals directly.
  4. Indent your code with 4 spaces
  5. You should avoid tabs.

These rules have their own name in the OpenOffice code formatting conventions.

Let’s look at this code snippet from a C++ file: chart2/qa/extras/charttest.hxx.

uno::Sequence < OUString > ChartTest::getImpressChartColumnDescriptions( std::u16string_view pDir, const char* pName )
{
    uno::Reference< chart::XChartDocument > xChartDoc = getChartDocFromImpress( pDir, pName );
    uno::Reference< chart::XChartDataArray > xChartData ( xChartDoc->getData(), uno::UNO_QUERY_THROW);
    uno::Sequence < OUString > seriesList = xChartData->getColumnDescriptions();
    return seriesList;
}

As you can see, in the old OpenOffice style, there is a space after the starting parenthesis (, and also before the ending parenthesis ). Also,  before and after <>. This might look old fashioned, but this is the way old code is written, and you are supposed to avoid changing the old code only for making it look better! I am going to describe why.

Why Keep Old Style Formatting?

There is a very good reason to keep the old style code formatting. To understand the code, and possible problems, developers usually refer to the code, and its history. Thus, it is important to keep the history of the code clean.

To achieve this, experienced developers suggest that you should avoid changing the formatting of the code, even if you are tempted to do so! Changing spacing, curly braces and other things in order to look nicer will pollute the git history.

The nice tool git blame can show who to blame for each line of code! If you change the code format randomly, you may prevent other developers to understand the root cause of the change, and thus fixing the problems more difficult.

What to Do With the New Files?

For the newer files, the story is different! You are not only encouraged to use the nice looking new coding style, but  git hooks also prevents you from submitting a code that does not conform with the new code formatting conventions! If your code does not conform to the new code conventions, you will see this error message:

ERROR: The above differences were found between the code to commit 
and the clang-format rules. Tips:

- You may run '/opt/lo/bin/clang-format -i <problematic file>' to fix up style automatically.
- See solenv/clang-format/README on where to get the required version of clang-format binaries.
- If you renamed an excluded file, update solenv/clang-format/excludelist accordingly to keep it excluded.
solenv/clang-format/check-last-commit: KO
Makefile:485: recipe for target 'clang-format-check' failed
make: *** [clang-format-check] Error 1

As the tip suggests, there is a tool named clang-format that does the formatting automatically for you. You only need to invoke:

/opt/lo/bin/clang-format -i <your-new-source-file.cxx>

You can read more about how to set up and use clang-format here:

One nice thing about thing about clang-format binary is that you can instruct your IDE to use this binary to do the formatting for you with a simple shortcut.

Visual Studio Code

LibreOffice source code in Visual Studio Code

Each new file should have appropriate header and footer. You can look at TEMPLATE.SOURCECODE.HEADER and find an appropriate header and footer for you source code.

Final Notes

If you had problems with code formatting, try to read the above instructions and clean up your code. If you have tried but you couldn’t, that’s not a problem! Just ask me for help. I will try to help you format your code according to the LibreOffice coding conventions. Be bold and try to have your code merged in the LibreOffice code! You can learn more about how to get started with LibreOffice development here:

by Hossein Nourikhah at November 17, 2022 01:50 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 10, 2022

LibreOffice QA Blog

QA/Dev Report: October 2022

General Activities

  1. LibreOffice 7.4.2 was released on October 13
  2. Rafael Lima made many improvements to how LibreOffice looks like in dark mode under Linux and Windows, cleaned up template categories that show up in Template Manager, fixed an issue with InsertText example Python macro, improved the layout of Calc’s Functions sidebar panel and improved some strings appearing in the UI. He also added a help page for chart data tables and improved the help for ImageMaps and Writer table formulas
  3. Adolfo Jayme Barrientos made some string fixes in help and in the UI code
  4. Alain Romedenne made improvements and additions to macro help pages
  5. Olivier Hallot (TDF) made large-scale cleanups regarding screenshots in help, improved help related to file properties, conditional formatting in Calc and layers in Draw
  6. Laurent Balland converted all wizard templates to XML, making them easier to maintain. He also simplified the makefiles of Writer, Impress and Draw templates
  7. Miklós Vajna (Collabora) added support for titles and tags in Writer content controls, made SVG export preserve tab characters, fixed losing preview images of embedded PDF objects, improved handling of bookmarks and images in Writer header/footer, fixed losing CDATA markup in Writer html import and improved handling of numbering portion formatting in Writer
  8. Jean-Pierre Ledure worked on the ScriptForge library
  9. Tünde Tóth (NISZ) fixed an issue with embedded PPTX files displayed with incorrect zoom
  10. Szymon Kłos, Ashod Nakashian, Mike Kaganski and Henry Castro (Collabora) worked on LOKit improvements
  11. Eike Rathke (Red Hat) improved how language scripts are mapped to language tags, made CSV/TSV clipboard import into Calc more robust, fixed rounding issues with time differences and dates in Calc and made Calc’s date acceptance pattern handling more robust. He also improved the help page for Find and Replace
  12. Tomaž Vajngerl (Collabora) did a lot of refactoring in Writer code
  13. Julien Nabet fixed a crash in Report Designer
  14. Jim Raykowski made many improvements to Writer’s Outline folding feature and the Navigator, including allowing multiple selections in Draw’s Navigator
  15. Andreas Heinisch made it possible to edit a Writer index entry by double-clicking on it, made it so form components requiring input no longer add an empty item, fixed an issue with row height changes causing loss of Calc autofilter results (with Eike Rathke’s help), fixed a UI update issue in Writer’s cross-reference dialog, made autofilter more robust regarding Unicode strings and made it so missing optional parameters in Basic return an error code instead of a boolean
  16. László Németh fixed superscript footnote numbering in non-English locales in DOCX files, fixed several issues with nested tables and made Writer spellchecking updates trigger more intuitively
  17. Xisco Faulí (TDF) made massive refactorings to automated tests, greatly simplifying test code. He also fixed many crashes, improved the crash reporter and added some automated tests
  18. Heiko Tietze (TDF) removed the option “Use printer metrics”
  19. Michael Stahl (allotropia) improved the compliance of exported PDFs with Universal Accessibility standard and fixed several Writer regressions
  20. Mike Kaganski (Collabora) made the Windows installer script more robust, fixed an issue with DDE links dropping Unicode characters that are not representable in Windows system encoding and made Impress slideshows prevent screensaver/sleep mode on Windows. He also made many code cleanups
  21. Caolán McNamara (Red Hat) made numerous improvements to support for dark and high contrast operating system themes (Linux, macOS and Windows). He also made many other UI-related improvements and crash fixes
  22. Stephan Bergmann (Red Hat) fixed an issue with macro dialog’s Assign button not leading to the expected place in the UI, made the Python script provider reload modified embedded scripts and improved support for alternative JDKs on macOS. He also adapted the code to compiler changes and made many code and build-related cleanups as well as test fixes
  23. Rizal Muttaqin continued revising the Sifr icon them and also updated the other icon themes
  24. Noel Grandin (Collabora) improved the performance of EPUB export on Windows, selecting all and cutting in certain large Writer documents with numbered lists, changing the formatting of large selections in Calc, creating pie charts for big data sets, PDF export of Writer documents with big tables and scrolling in a spreadsheet with many comments. He also made many code cleanups and general optimisations
  25. Justin Luth (Collabora) fixed issues with event-driven VBA macros in DOC/X and XLS/X files, made it so unfreezing Calc rows/columns or (de)activating change tracking mark the spreadsheet as unsaved, made it possible to access FormField controls in StarBasic/VBA, fixed Calc’s validity dialog showing empty value when empty cells were not allowed and made conditional formatting with text matching be case insensitive like in Excel
  26. Paris Oplopoios (Collabora) added many accessibility checks
  27. Chris Sherlock added several automated tests and made code cleanups and improvements to readability
  28. Maxim Monastirsky made internal improvements to Impress/Draw table style handling
  29. Khaled Hosny (Alif Type) added support font embedding on macOS, improved handling of complex text scripts and fixed PDF exporting with certain problematic fonts. He also made many renovations in font-related code
  30. Regina Henschel made many improvements to OOXML SmartArt support
  31. Samuel Mehrbrodt (allotropia) fixed a Windows issue with mnemonics being triggered without Alt being pressed
  32. Sarper Akdemir (Collabora) fixed PPTX import issues with transparent text and list item indentation
  33. Armin Le Grand (allotropia) fixed some graphics-related regressions and made refactorings in graphics handling code
  34. Andrea Gelmini cleaned up unused include files and fixed many typos in code
  35. Chenxiong Qi ported DocumentHandling SDK examples to Python
  36. Taichi Haradaguchi updated zlib and Python
  37. Daniel Lohmann fixed an Impress Remote crash
  38. Tibor Nagy (NISZ) fixed incorrectly imported table border width in certain PPTX files
  39. Balázs Varga (allotropia) improved the loading time of ODS files with optimal row height settings in cells and made Calc work in the WebAssembly build
  40. Dennis Francis (Collabora) fixed re-exporting broken PDFs imported using Pdfium
  41. Mert Tumer (Collabora) added a new UNO command for machine translation, for now only using DeepL API
  42. Hossein Nourikhah (TDF) fixed a crash on inserting a chart in Writer for tables with merged cells
  43. Christian Lohmaier (TDF) worked on macOS app store packaging, including making Firebird database engine non-experimental in app store builds
  44. Áron Budea (Collabora) fixed an issue with No List option in Styles Sidebar not removing list in non-English UI and changed a keyboard shortcut for better compatibility with French keyboards
  45. Vasily Melenchuk (CIB) fixed incorrect RTF import of document variables with accented characters
  46. Kevin Suo fixed a longstanding issue of RTL script runs getting reversed on PDF import and made the Loading and Saving strings in status bar localisable

Kudos to Ilmari Lauhakangas for helping to elaborate this list.

Reported Bugs

528 bugs, 61 of which are enhancements, have been reported by 322 people.

Top 10 Reporters

  1. Eyal Rozenberg ( 46 )
  2. Telesto ( 15 )
  3. Regina Henschel ( 13 )
  4. peter josvai ( 11 )
  5. Mike Kaganski ( 11 )
  6. Rizal Muttaqin ( 9 )
  7. Hossein ( 8 )
  8. Rafael Lima ( 7 )
  9. NISZ LibreOffice Team ( 7 )
  10. Robert Großkopf ( 6 )

Triaged Bugs

437 bugs have been triaged by 85 people.

Top 10 Triagers

  1. Buovjaga ( 43 )
  2. m.a.riosv ( 41 )
  3. raal ( 34 )
  4. Dieter ( 29 )
  5. Julien Nabet ( 25 )
  6. Rafael Lima ( 24 )
  7. Roman Kuznetsov ( 23 )
  8. Heiko Tietze ( 15 )
  9. V Stuart Foote ( 15 )
  10. V Stuart Foote ( 13 )

Resolution of resolved bugs

464 bugs have been set to RESOLVED.

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

Fixed Bugs

190 bugs have been fixed by 35 people.

Top 10 Fixers

  1. Caolán McNamara ( 23 )
  2. Rafael Lima ( 12 )
  3. Rizal Muttaqin ( 11 )
  4. Khaled Hosny ( 9 )
  5. Andreas Heinisch ( 9 )
  6. Noel Grandin ( 8 )
  7. László Németh ( 7 )
  8. Regina Henschel ( 6 )
  9. Eike Rathke ( 6 )
  10. Michael Stahl ( 6 )

List of critical bugs fixed

  1. tdf#104597 RTL script text runs are reversed on PDF import, PDFIProcessor::mirrorString misbehaving ( Thanks to Kevin Suo )

List of high severity bugs fixed

  1. tdf#124098 FILEOPEN: Calc sheet showing multiple “adapt Row Height” responses, slow loading ( Thanks to Balazs Varga )
  2. tdf#124672 Hi-Contrast mode should use Sifr dark icons, not Sifr ( Thanks to Caolán McNamara )
  3. tdf#136617 FILEOPEN: DOCX: table is larger from LO 7.1 ( Thanks to László Németh )
  4. tdf#146500 Writer crash when entering a paragraph break or carriage return ( Thanks to Michael Stahl )
  5. tdf#150664 Calc Input Line in Formula Bar is moved down and cropped ( Thanks to Samuel Mehrbrodt )
  6. tdf#151283 LO Calc hangs when try to open XLS file ( Thanks to Noel Grandin )
  7. tdf#151441 Queries don’t show any content when executed directly through GUI ( Thanks to Caolán McNamara )
  8. tdf#151503 logical operator semantics on missing (optional) arguments has changed between 7.2 and 7.4 ( Thanks to Andreas Heinisch )
  9. tdf#98067 Menu bar and right tool bar are invisible, but functional in high-contrast-mode/theme ( Thanks to Caolán McNamara )

List of crashes fixed

  1. tdf#146500 Writer crash when entering a paragraph break or carriage return ( Thanks to Michael Stahl )
  2. tdf#149718 Writer Crashes on inserting a Chart based on a Table with merged cells ( Thanks to Hossein )
  3. tdf#151094 FILESAVE: Writer crashes on save after deleting a paragraph style ( Thanks to Miklos Vajna )
  4. tdf#151260 Crash in: SfxItemPool::SetDefaults(std::vector<SfxPoolItem *,std::allocator > *) ( Thanks to Xisco Fauli )
  5. tdf#151316 CRASH in SwTextGridPage::CharorLineChangedHdl (gen) ( Thanks to Caolán McNamara )
  6. tdf#151375 Crash when running insertDocumentFromURL with certain document ( Thanks to Michael Stahl )
  7. tdf#151417 Editing with Draw, activating Form controls, selecting one, LO crash without code number. ( Thanks to Noel Grandin )
  8. tdf#151736 Opening Writer document with direct formatting crashes whole LO ( Thanks to Noel Grandin )

List of performance issues fixed

  1. tdf#124098 FILEOPEN: Calc sheet showing multiple “adapt Row Height” responses, slow loading ( Thanks to Balazs Varga )
  2. tdf#129101 CTRL+A & Cut very slow (see comment 38) ( Thanks to Noel Grandin )
  3. tdf#133768 Export to EPUB is slow on Windows and causes massive disk activity ( Thanks to Noel Grandin )
  4. tdf#147842 Changing text to bold continuously slower so seems to Hang now ( Thanks to Noel Grandin )

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

  1. tdf#104278 UI: The text in the Type frame in the DocInformation tab in the Fields dialog isn’t aligned to the left ( Thanks to Caolán McNamara )
  2. tdf#104597 RTL script text runs are reversed on PDF import, PDFIProcessor::mirrorString misbehaving ( Thanks to Kevin Suo )
  3. tdf#105609 Python script provider does not reload modified embedded scripts ( Thanks to Stephan Bergmann )
  4. tdf#112152 Narrow No-Break Space (U+202F) causes PDF Error by using bundled Liberation fonts ( Thanks to Khaled Hosny )
  5. tdf#113187 FILEOPEN: PPTX: SmartArt: Block cycle’s connectors not imported ( Thanks to Regina Henschel )
  6. tdf#115634 in special characters dialog buttons for recent and favorite characters are not being scaled larger on high resolution screens ( Thanks to Caolán McNamara )
  7. tdf#120326 Running slideshow must disable screensaver/sleep mode on Windows ( Thanks to Mike Kaganski )
  8. tdf#36383 EDITING auto row height or change row height removes AutoFilter result ( Thanks to Andreas Heinisch )
  9. tdf#47979 Writer TABLES: impossible to select table ( Thanks to László Németh )
  10. tdf#54095 FILEOPEN: Font color is wrong (white instead of black on white background) in DOCX SmartArt Horizontal Hierarchy (that cannot be edited in LO) ( Thanks to Regina Henschel )
  11. tdf#72456 Font Embedding does not work on MacOS ( Thanks to Khaled Hosny )
  12. tdf#83671 Fileopen XLSX: SmartArt is not displayed ( Thanks to Regina Henschel )
  13. tdf#98067 Menu bar and right tool bar are invisible, but functional in high-contrast-mode/theme ( Thanks to Caolán McNamara )

WORKSFORME bugs

58 bugs have been retested by 31 people.

Top 10 testers

  1. Roman Kuznetsov ( 9 )
  2. Buovjaga ( 6 )
  3. Julien Nabet ( 4 )
  4. BogdanB ( 3 )
  5. raal ( 3 )
  6. Rafael Lima ( 3 )
  7. خالد حسني ( 2 )
  8. Timur (

by x1sc0 at November 10, 2022 09:02 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

LibreOffice Dev Blog

Crash fixes, part 2: abort

One category of the bugs that we see in computer programs including LibreOffice is the unexpected crashes. You’re working with the application, and it is suddenly closed! In the previous part, I have discussed crashes that are caused by segmentation fault. In this article, I discuss the crashes from invoking abort() function. Please note that not an abort is not always a bad thing, or a bug.

Abort

In C/C++ sometimes we have to check the validity of certain conditions, and avoid certain bad situations. We do that to avoid data corruption or other problems that leads us to terminate the application instead of trying to continue.

This is different from normal error handling routines, because in error handling, we usually try to find errors, find ways out of the problem automatically, or ask user to fix the problem by changing the input and things like that. But, this is not always the case.

Better to Be Safe Than Sorry!

If you search for abort in the .cxx files, you will find a lot abort() usages:

git grep "abort(" *.cxx

Let’s look at some example. When writing tests, one of the problems that may occur while testing font rendering is the font fallback because of using fonts that are not available via LibreOffice. In this situation, it is better to stop the test application, so that the developers understand that they should use fonts that are available via LibreOffice. You can look vcl/unx/generic/fontmanager/fontconfig.cxx for more information.

Another example is the problem with the GPU. If you look at vcl/skia/gdiimpl.cxx, you can see this code. The comments explain the situation. When we run out of memory, the error is “unrecoverable without possible data loss”. So, the best thing that we can do, is to abort the program.

// If there's a problem with the GPU context, abort.
if (GrDirectContext* context = GrAsDirectContext(mSurface->getCanvas()->recordingContext()))
{
    // Running out of memory on the GPU technically could be possibly recoverable,
    // but we don't know the exact status of the surface (and what has or has not been drawn to it),
    // so in practice this is unrecoverable without possible data loss.
    if (context->oomed())
    {
        SAL_WARN("vcl.skia", "GPU context has run out of memory, aborting.");
        abort();
    }
    // Unrecoverable problem.
    if (context->abandoned())
    {
        SAL_WARN("vcl.skia", "GPU context has been abandoned, aborting.");
        abort();
    }
}

Generally speaking, the developer should try to recover from the errors, but in the end, some unrecoverable errors may remain, and the developer might decide to do an abort().

Fixing Bugs Related to abort

On the other hand, sometimes it is possible to avoid doing an abort(), and recover from an error. In such a case, fixing the crash would involve finding a way out of the problem, and continuing the normal execution of the program.

For example, take a look at tdf#138022 – LibreOffice exits/crashes when minimizing start center after closing a document (SKIA).  This issue is fixed in this patch:

commit 42e30c24615402c49351f80cc8a47d61d47267c6

Author: Jan-Marek Glogowski
Date: Mon Nov 16 22:43:51 2020 +0100
tdf#138022 Skia don't recreate empty surfaces
Skia can't create empty surfaces, so the recreation will hit the
std::abort() in SkiaSalGraphicsImpl::createWindowSurface. Origin
of the backtrace is some queued Resize event, which will hit
this a few times via SkiaSalGraphicsImpl::checkSurface.
This feels a bit like tdf#130831, where VCL tried to track damange
for an empty Qt image...

The idea of the fix is that Skia can not re-create empty surfaces, so when resizing events are queued, recreation of the surface will lead to an std::abort. To avoid this, Jan-Marek changed the code. Now LibreOffice does not re-create the surface in the case that both width and height of the surface are zero. Other than that, instead of using recreateSurface(), it uses two commands destroySurface() and then createSurface().

Final Words on Fixing a Crash

We have a meta tag dedicated to the crash bugs in Bugzilla. All the bugs related to the crashes are listed there:

tdf#133092 (Crash) – [META] Crash bugs

Other than that, we have EasyHacks related to the crashes. Some of them are discussed in our previous post, “Crashes that you can fix! – EasyHack“. You can try fixing them!

by Hossein Nourikhah at November 03, 2022 04:12 PM

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

November 01, 2022

LibreOffice Design Blog

Community support needed: We want to use our users personal data

What comes to your mind, when you ask yourself why people use LibreOffice? A “stunning user experience” is likely not in the top list. And unfortunately we share this problem with a lot of user facing Free Software.

And there is a common reason: We value the privacy of our users.

by Heiko Tietze at November 01, 2022 03:16 PM

October 31, 2022

Collabora Community

Meet Abi – Collabora Software Engineering Intern

Collabora recruits interns to work over the summer alongside our team, and to build experience to help them assess whether they want to pursue a career in Software Engineering, but how does that work out? Meet Abi, mentored by Mert and Pedro, and intern behind the new SDK example in .NET¹. Lets hear from her:

Tell me about yourself!

I’m Abi, I’m studying Maths, Physics, Computer Studies and Media Studies at sixth form. I’ve been involved with the Army Cadets since 2017 and hope to join the Army Cyber Warfare Division after university.

When did you first become interested in coding?

I’ve grown up in a household that’s centralised around technology and found a passion for coding when studying Maths – I found I was quite good at it! I really enjoy the theory side of Computer Science, learning algorithms and how things are put together. I realised this more through the work I did at Collabora.

What’s your favourite project you’ve worked on?

I love to start new projects but often find I don’t quite finish them! I either get stuck or I just don’t have time to finish them before I’ve started a new one. Working at Collabora, I actually managed to finish my projects which is a big achievement I hope to continue with.

What have you been doing over the Summer?

It’s been a mixture of school work, camping holidays along the Norfolk coast and doing the Collabora Internship.

What have you been working on?

I’ve been creating an SDK example with .NET.

What is SDK? How can that be useful?

It’s a basic version of the Collabora Online space using a different framework. If someone wanted to start building on COOL in a certain language, they can start to understand how the communication happens between the server and the computer it’s run on. Then they can build what they need on top of it in a multitude of languages.

Why did you want to spend your Summer at Collabora?

I mainly wanted to gain experience so I could make sure I was going into the right career path. I also wanted to do it because it would look good on my university application and personal statement.

What did you learn from your time at Collabora?

How to learn by myself but also when to ask for help when needed. I really learnt a lot about what I need to work on as both a Software Engineer and as a person so I can grow in both areas. It’s also the first time I’ve felt I’ve fully understood a (programming) language, which has given me more confidence.

Would you recommend an internship at Collabora to others interested in a career in technology?

Definitely! I think it was a good learning experience – it taught me personally what I want, and gave me a good insight into what a professional setting is like compared to an academic environment.

 

It’s great to see Abi’s work merged as a fresh new SDK example and to see how she has grown over the Summer.

Why not get involved? We love to work alongside the next generation to help them discover what a career in Software Engineering might look like. If you’ve ever considered it for yourself, get in touch today!

The post Meet Abi – Collabora Software Engineering Intern appeared first on Collabora Office and Collabora Online.

by Naomi Obbard at October 31, 2022 12:55 PM

October 28, 2022

Jean Hollis Weber

LibreOffice on the Microsoft Store

LibreOffice is now available for download from the Microsoft Store, for those users who choose or are required to get their desktop software from that channel. A small fee is charged. Here is the link.

This follows the recent release of LibreOffice through Apple’s App Store.

LibreOffice for Windows, macOS, and Linux continues to be free of charge from the LibreOffice website.

Blog post is here.

by Jean at October 28, 2022 05:37 AM

October 24, 2022

LibreOffice Dev Blog

Crashes that you can fix! – EasyHack

As discussed in the “crash fixes for LibreOffice, part 1: segfaults“, bugs that lead to crash in LibreOffice or other native applications can have different causes, and therefore need completely different fixes. Some of these bugs are hard to fix: you have to change the behavior of the application in order to avoid crashes.

On the other hand, there are some cases that a fix can be simple checking for a pointer to make sure that it is not NULL/nullptr before actually using it. Or, making sure that a variable has properly initialization before its use. In these cases, fixing the bug is not too hard, and a fix can be provided very quickly.

Example EasyHacks Related to Crashes

Thanks to Mike, this week we have 2 new EasyHacks of this kind:

When accessing uninitialized a TextInputStream, an exception should be thrown, in which leads to Basic run-time error. Instead, because of lack of appropriate checks, it leads to a crash.

You can debug and see the crash point by executing this LibreOffice BASIC code snippet:

Sub crash
  stream = CreateUnoService("com.sun.star.io.TextInputStream")
  stream.available()
End Sub

To fix this bug, one should take a look at OTextInputStream code inside core/io/source/TextInputStream/TextInputStream.cxx:53 and make sure to check and throw runtime exception where appropriate.

This second issue is a crash that happens when parsing an XML with undeclared namespace. To catch and debug such a crash, you should create a tiny xml file as described in the bug report:

<?xml version="1.0" encoding="UTF-8"?>
<a:xml/>

Then, try to parse it with this LibreOffice BASIC script:

Sub Parse
  source = CreateUnoStruct("com.sun.star.xml.sax.InputSource")
  source.aInputStream = CreateUnoService("com.sun.star.ucb.SimpleFileAccess").openFileRead(ConvertToURL("path/to/file.xml"))
  parser = CreateUnoService("com.sun.star.xml.sax.FastParser")
  parser.ParseStream(source)
End Sub

Then, you will see that the crash happens in this part of the code in core/sax/source/fastparser/fastparser.cxx:1281:

if ( !m_bIgnoreMissingNSDecl || URI != nullptr   )
    sNamespace = OUString( XML_CAST( URI ), strlen( XML_CAST( URI )), RTL_TEXTENCODING_UTF8 );

If you look closely, you will understand that if m_bIgnoreMissingNSDecl is false, then the URI check to make sure that it not nullptr is not happening. And dereferencing nullptr leads to crash.

The above two EasyHacks are good for the newcomers. So, if you have some knowledge on C++ and you are able to build LibreOffice, you can work on these issues. If so, first try to gain a basic understanding of the problem. Then assign the bug to yourself and try to fix it.

Writing Tests for Crash Fixes

Writing tests for the crash is also not a very hard task. Either a CppUnitTest, or a UITest can do the exact things that leads to crash without a fix. Then, the test will fail if a crash occurs preventing the same problem in the future.

If you search for “crash” in the LibreOffice commit titles, you can find many good examples of fixing the crashes. As an example that uses CppUnitTest, you can look at this patch:

And for a crash fix with a UITest, you can look at this patch:

Final Notes

EasyHacks are good starting points for the newcomers. If you want to contribute to LibreOffice code by working on this improvement, but you need to know how to get started with LibreOffice development, you can see our video tutorial:

Getting Started (Video Tutorial)

by Hossein Nourikhah at October 24, 2022 10:24 AM

October 17, 2022

Collabora Community

It’s a Wrap! COOL Days 2022 was a Sky High Success!

 

Thank you to all who attended our COOL Days meet up in Berlin on 3rd-5th October. We had a great time organising this for our Partners, Collabora team and open source community. It was a great success and we can’t wait to do it again!

If you didn’t manage to make it this time, check out our first YouTube short which shows a 2 minute overview of our amazing time in Berlin.


Community Day

On the Monday 3rd October we had our Collabora Productivity Community Team Building Day. This was a great chance to meet some of our Partners, and for the Collabora team to meet up after 3 years of travel restrictions. Many met in person for the first time and bonded over their love for retro computer games, competitive table football and the thrill of indoor skydiving!

Partner Day

Tuesday 4th October was our Partner Day, hosted at the Alexander Plaza Hotel. What a privilege it was to have Peter Ganten from Univention talk with us about his work to promote Digital Sovereignty, as well as hearing from members of the Collabora team about what we have been working on over the last year to build Collabora Online. We discussed the development road map for 2023 and had open discussions with our Partners about how we can support them and build closer relationships so we can work together even more successfully.

Meanwhile, the development community were taking part in a Hackfest at the bUm thanks to Nextcloud.

Technical Day

We all met at the bUm for our Technical Day on Wednesday 5th October. Some of our engineers, Partners and contributors presented lightning talks to show the latest developments happening at Collabora Online. It was a key chance for the community to speak directly with the engineers behind CODE and COOL, ask questions and input into the roadmap.

If you interested in seeing the slides from our lightning talks we’ve made them available on github:

COOL Days Slides

UX and Community Manager, Pedro, also blogged about our time there:

Pedro’s Blog

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

 

We hope to see you at our next COOLDays event…

 

Keep an eye out for where we’ll be next:

Open Source Experience

November 8 - 9, 2022 – Paris, France

SFSCon

November 11 - 12, 2022 – Bolzano, Italy

Univention Summit

January 17 - 18, 2023 – Bremen, Germany

The post It’s a Wrap! COOL Days 2022 was a Sky High Success! appeared first on Collabora Office and Collabora Online.

by Naomi Obbard at October 17, 2022 12:32 PM

October 14, 2022

Collabora Community

Meet Christopher – Collabora Software Engineering Intern

 

Collabora recruits interns to work over the summer alongside our team, and to build experience to help them assess whether they want to pursue a career in Software Engineering, but how does that work out? Let’s hear from Christopher:

Tell me about yourself!

My name is Christopher and I am currently studying Physics, Maths and Computer Science. I’ve been doing a fair amount of programming for around 4 or 5 years at home, mainly self-taught. I’ve also learnt a lot from my Dad who works as a Software and Hardware Engineer and my Grandad who is a Physicist. Outside of coding, I’ve been teaching myself to play guitar for the last year.

When did you first become interested in coding?

It was Christmas 2018 – I’d been given a coding task from my Computer Science teacher at school to make a simple game (Battleships) and I found it really interesting. As I was working on it, I got thinking how I could make it better, so I added databasing and networking functionality to it.

What’s your favourite project you’ve worked on?

The most enjoyable things for me are the functionality improvements I’ve been working on over the Summer with Collabora. I’ve made small UI changes that have made a meaningful difference to the end users.

What else have you been working on over the Summer?

I solved an existing bug with toggling elements in the notebook bar and also worked on the ability to toggle Dark Mode. I started the template for the Admin Console, creating a foundation for clustered diagnosis.

Why did you want to spend your Summer at Collabora?

I was told it would be valuable to get work experience in technology to help with my University application, and in the future it would look good on my CV. I originally heard about the Internship from the Computer Science department at my school – Michael Meeks came in to do a talk and I was inspired by his charisma. It made me excited to spend the Summer working on my skills through working at Collabora.

What did you learn from your time at Collabora?

The most valuable thing for me was learning how to work as part of a team. It’s hard to get this experience at GCSE and A Level as you’re only really given small personal projects.

What do you want to be working on in the future?

I don’t really know exactly what I want to work on yet! There’s so many different things you can do which is what attracted me to the industry. Having the skills is a real door opener and transferable across many industries.

Would you recommend an internship at Collabora to others interested in a career in technology?

Absolutely! It was challenging but stimulating – I’m very thankful for a great opportunity and to Pedro and Pranam for the skills they’ve taught me.

 

Christopher has been continuing to work on some projects for Collabora during his final year of college. We are excited to see what other UI improvements will be made over the coming months.

Why not get involved? We love to work alongside the next generation to help them discover what a career in Software Engineering might look like. If you’ve ever considered it for yourself, get in touch today!

The post Meet Christopher – Collabora Software Engineering Intern appeared first on Collabora Office and Collabora Online.

by Naomi Obbard at October 14, 2022 07:09 AM

October 11, 2022

LibreOffice QA Blog

QA/Dev Report: September 2022

General Activities

  1. LibreOffice 7.3.6 was released on September 8
  2. LibreOffice 7.4.1 was released on September 15
  3. Rafael Lima added help for “Math baseline” option in Writer and improved the layout of Template Manager
  4. Adolfo Jayme Barrientos improved the layout of the Page Style dialog and made some cleanups both in UI strings and Help
  5. Alain Romedenne made Help updates on macro-related menus and dialogs
  6. Olivier Hallot (TDF) reworked and enriched the Help pages for conditional formatting and made many Help cleanups
  7. Laurent Balland fixed a formatting issue with the templates shipped with Impress, made documents created via Windows explorer be 0 bytes so they use the default template and created a UI test for Go to Sheet command
  8. Miklós Vajna (Collabora) added PDF export support for content controls in Writer and implemented combo box control type. He also added support for video looping in PPTX files, fixed several HTML import and export issues and started adding Help pages for content controls
  9. Jean-Pierre Ledure worked on the ScriptForge library
  10. Tünde Tóth (NISZ) fixed a z-ordering issue with embedded OLE objects in PPTX files
  11. Szymon Kłos, Ashod Nakashian and Henry Castro (Collabora) worked on LOKit improvements
  12. Tor Lillqvist (Collabora) replaced outdated uses of symbol fonts with OpenSymbol, made iOS-related code cleanups and build fixes and made font substitution more robust
  13. Szymon Kłos (Collabora) made Clone Formatting brush override old direct formatting instead of just appending new formatting. He also made it so the number format dialog always appears where expected
  14. Eike Rathke (Red Hat) improved internationalisation support for constructed languages, fixed an issue with spreadsheet functions implemented as Add-In sometimes getting saved with their programmatic name in XLSX files, implemented better error checking for Calc’s conditional formatting expressions, made Calc’s Name Box dropdown immediately reflect changes to named ranges, fixed an issue with named ranges breaking when the original base-cell-address got deleted, fixed Add-In functions comparing matrix/array elements incorrectly, made it so Calc’s CELL() function is compatible with INDIRECT(), made INDIRECT() work with 16 thousand columns, fixed an issue with recalculating in Calc after sorting and made copying autofilters more robust. He also made some cleanups in Help
  15. Tomaž Vajngerl (Collabora) continued polishing the chart data table feature and made some code cleanups
  16. Julien Nabet made many optimisations by simplifying internal text replacement operations, fixed importing SVGZ files, added support for Kamenický and Mazovia encodings, fixed a crash with artistic image filtering, made the context menu entry for Conditional Formatting work intuitively and made cleanups
  17. Jim Raykowski made search results available to screen readers again (together with Michael Weghorn), made search display the number of found matches, enriched the Customize dialog with tooltips for Assigned Commands and made many improvements to Navigator
  18. Andreas Heinisch made it so the optional parameters of MsgBox are initialised with their default values, changed Calc’s optimal row/column height so it doesn’t change hidden status of targets and added support for VBA’s xlCellTypeConstants
  19. László Németh added accessibility support for enabled bookmarks in Writer and improved the visual representation of bookmarks. He also continued improving change tracking
  20. Xisco Faulí (TDF) made over 20 additions and improvements to automated tests, made the handling of SVG spacing more robust and fixed some crashes
  21. Heiko Tietze (TDF) added a feature to filter recent documents in Start Center by module
  22. Michael Stahl (allotropia) made Writer’s input field elements smarter regarding the insertion of further fields
  23. Michael Weghorn improved Linux dark theme support and made many improvements to Windows and Linux accessibility
  24. Mike Kaganski (Collabora) fixed many automated tests so they don’t fail on non-default DPI, made it so LibreOffice does not jump to the front after loading, if user had focused elsewhere, fixed regressions with command line PDF conversion and mailmerge docs starting with tables, added a workaround to a bug in Windows related to OLE objects, fixed an issue causing uneditable elements in non-default Writer templates, made it so installing Python extensions with spaces in their file names is possible, fixed a data loss issue concerning tables in shapes in headers and made handling long Windows paths more robust. He also fixed some Calc function examples in Help
  25. Caolán McNamara (Red Hat) continued improving how fonts are used in automated tests, added final polish on text rendering changes in Linux, improved Windows and Linux dark theme support, made SVG icons render crisply with HiDPI, made page orientation consistent when navigating the preview in Print dialog and fixed an old issue with the Reset button in Customize Keyboard dialog not working. He also continued working on gtk3/4 UIs and fixed many crashes and issues found by Coverity and fuzzers
  26. Stephan Bergmann (Red Hat) adapted the code to compiler changes and made many code and build-related cleanups as well as test fixes
  27. Rizal Muttaqin revised the Sifr icon theme to follow GNOME’s Adwaita, which shares the same ancestral roots
  28. Noel Grandin (Collabora) made Calc’s Conditional Formatting dialog able to handle large amounts of data without choking, improved the rendering performance of very large filled shapes and made Find and Replace able to handle very large Calc sheets. He also made many code cleanups, general optimisations and fixes for issues found by Coverity
  29. Luboš Luňák (Collabora) made many cleanups and improvements in OpenCL code
  30. Justin Luth fixed regressions in font size roundtrips with DOC files and lost tab characters in Calc cells, made handling of numbering character styles cleaner and fixed an issue with line breaks being ignored in Calc cell content
  31. Paris Oplopoios submitted his final GSoC report and made cleanups to the graphics handling code
  32. Chris Sherlock made code cleanups and improvements to readability
  33. Maxim Monastirsky fixed a Notebookbar crash
  34. Khaled Hosny (Alif Type) implemented PDF export support for the most common colour font technologies, fixed an issue with PDF export producing incorrect glyph outlines with CFF fonts, corrected the PDF export of certain OTF font names, fixed an issue with the rendering of coloured Arabic text in Writer with formatting marks enabled, removed redundant macOS dock icon menu for Recent Documents and removed the EmojiOne font and emoji controls as superseded by operating system level functionality. He also made many renovations in font-related code
  35. Regina Henschel fixed an OOXML rotation issue and incorrect anchoring with top-to-bottom, right-to-left text in shapes in PPTX files
  36. Samuel Mehrbrodt (allotropia) fixed importing document variables from RTF files and added file associations for iWork and PDF files to the Windows installer
  37. Arnaud Versini made code cleanups
  38. Povilas Kanapickas made cleanups in code related to gestures
  39. Sarper Akdemir (Collabora) fixed multiple issues with image and object colours in PPTX files
  40. Armin Le Grand (allotropia) fixed missing gradient rotation in rotated metafiles in Impress presentation mode and export, corrupted PDF export of circular gradients and fixed several graphics-related regressions
  41. Chenxiong Qi fixed Calc Pivot Table filters restored incorrectly
  42. Dante Doménech worked on MathML import and export code
  43. Taichi Haradaguchi updated many dependencies and made code cleanups
  44. Satya Kompella (OpenText) fixed incorrect automatic numbering in DOCX tables
  45. René Engelhard (Debian) made build-related fixes and improvements
  46. Tibor Nagy (NISZ) fixed lost underline in hyperlinks in PPTX import
  47. Gábor Kelemen (allotropia) improved user profile migration details
  48. Ilhan Yesil made it possible to change highlight background colour in certain form controls
  49. Galdam Jitsu removed unused icon variants
  50. Sam James (Gentoo) fixed building with Poppler 22.09.0
  51. Björn Michaelsen did some refactoring in Writer code
  52. Balázs Varga (allotropia) improved user profile migration details
  53. Thorsten Behrens (allotropia) added an initial set of ODF feature test files for automated coverage testing

Kudos to Ilmari Lauhakangas for helping to elaborate this list.

Reported Bugs

491 bugs, 83 of which are enhancements, have been reported by 279 people.

Top 10 Reporters

  1. Eyal Rozenberg ( 22 )
  2. Roman Kuznetsov ( 18 )
  3. Telesto ( 15 )
  4. Mike Kaganski ( 14 )
  5. Regina Henschel ( 13 )
  6. Tuomas Hietala ( 13 )
  7. Rafael Lima ( 10 )
  8. Kevin Suo ( 9 )
  9. Xisco Faulí ( 9 )
  10. Alex Thurgood ( 8 )

Triaged Bugs

533 bugs have been triaged by 73 people.

Top 10 Triagers

  1. Timur ( 80 )
  2. Rafael Lima ( 61 )
  3. Heiko Tietze ( 35 )
  4. raal ( 34 )
  5. Julien Nabet ( 24 )
  6. V Stuart Foote ( 23 )
  7. Roman Kuznetsov ( 22 )
  8. Mike Kaganski ( 22 )
  9. Xisco Faulí ( 22 )
  10. Dieter ( 21 )

Resolution of resolved bugs

571 bugs have been set to RESOLVED.

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

Fixed Bugs

169 bugs have been fixed by 31 people.

Top 10 Fixers

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

List of high severity bugs fixed

  1. tdf#106959 MAILMERGE wrong if document starts with table when output saved as individual documents using MM toolbar ( Thanks to Mike Kaganski )
  2. tdf#119039 Writer crash when I try to open 4-pages DOCX ( Thanks to Mike Kaganski )
  3. tdf#129163 Memory leak in createEnumeration ( Thanks to Bjoern Michaelsen )
  4. tdf#137341 UI font is not visible in Contextual Groups and Groupedbar Compact UIs when system dark mode is enabled ( Thanks to Michael Weghorn )
  5. tdf#139511 Impress: Shrinking table by dragging bottom border up or top down not working anymore ( Thanks to Sarper Akdemir )
  6. tdf#142631 Poor contrast on spellcheck in Linux dark mode ( Thanks to Caolán McNamara )
  7. tdf#147507 Crash swlo!SwRedlineExtraData_FormatColl::Reject+0x1b6 (STR: comment 7) ( Thanks to László Németh )
  8. tdf#150642 FILEOPEN DOCX Table structure destroyed if cell with vertical text direction exists ( Thanks to Mark Hung )
  9. tdf#150647 Autofilter result is wrong when filtering (empty) records ( Thanks to Luboš Luňák )
  10. tdf#150766 Incomplete recalculate ( Thanks to Eike Rathke )
  11. tdf#150770 FILEOPEN: PPtX: Read error – Error reading file ( Thanks to Caolán McNamara )
  12. tdf#150797 Can’t scroll with mouse in Print Preview from 7.5+ ( Thanks to Caolán McNamara )
  13. tdf#150832 FILEOPEN: charts cannot be seen (only white boxes) ( Thanks to Xisco Fauli )
  14. tdf#150845 CRASH: inserting a form ( Thanks to Noel Grandin )
  15. tdf#150882 Toolbar icons are half-seen in Macro dialog in 7.5 with KF5 ( Thanks to Michael Weghorn )
  16. tdf#151046 INDIRECT() with a loaded range name argument matching a (now 16k column) cell address uses cell reference instead. ( Thanks to Eike Rathke )
  17. tdf#151182 Calc crash when cut-paste and drag cell ( Thanks to Luboš Luňák )
  18. tdf#46733 Deleting columns in a table can delete several columns if any cells in that column are merged with other cells ( Thanks to Justin Luth )

List of crashes fixed

  1. tdf#119039 Writer crash when I try to open 4-pages DOCX ( Thanks to Mike Kaganski )
  2. tdf#147507 Crash swlo!SwRedlineExtraData_FormatColl::Reject+0x1b6 (STR: comment 7) ( Thanks to László Németh )
  3. tdf#150845 CRASH: inserting a form ( Thanks to Noel Grandin )
  4. tdf#150974 Writer crashes when starting with WollMux installed ( Thanks to Noel Grandin )
  5. tdf#150987 CRASH: pasting content ( Thanks to Noel Grandin )
  6. tdf#150992 CRASH: applying popart filter to an SVG image ( Thanks to Julien Nabet )
  7. tdf#151039 Crash when exporting to PDF ( Thanks to Mike Kaganski )
  8. tdf#151172 LibODev crashed if Grammalect extension activated ( Thanks to Maxim Monastirsky )
  9. tdf#151182 Calc crash when cut-paste and drag cell ( Thanks to Luboš Luňák )
  10. tdf#151187 Crash when exporting ODS file with Persian text to PDF ( Thanks to Caolán McNamara )

List of performance issues fixed

  1. tdf#150749 Find and replace – replace all – 100% CPU ( Thanks to Noel Grandin )

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

  1. tdf#103829 FILESAVE: Tab characters lost in cell ( Thanks to Justin Luth )
  2. tdf#103888 SVG: tspan element gets an additional horizontal spacing before and after ( Thanks to Xisco Fauli )
  3. tdf#104403 Support multi-colored fonts using COLR/CPAL tables ( Thanks to Khaled Hosny )
  4. tdf#106959

by x1sc0 at October 11, 2022 04:12 PM

October 08, 2022

Caolán McNamara

Windows High Contrast Improvements

 

Spent a little time this week to explore our Windows accessibility High Contrast support because I was working on a GTK High Contrast issue by coincidence when xisco mentioned the Windows one in the regular ESC.

Left is the sad original case of unreadable menubar and missing sidebar icons. Right is the newly fixed case with legible menubar and restored sidebar icons. Additionally the "default" buttons of dialogs ("insert" in this case) are now using the correct text color, preview is visible, and EditBoxes render with the correct border color for focus and mouse over. Normal themes also gain a more subtle border color in Edits to indicate focus.

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

October 03, 2022

Miklos Vajna

Content controls in Writer: PDF export and combo box type

Writer now supports exporting content controls to PDF and a 7th content control type: it is possible to differentiate between drop-downs and combo boxes.

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

Motivation

PDF export of Writer content controls into PDF

Writer users can create fillable forms using content controls, but the PDF export only contained the plain text representation of them. PDF can also have fillable widgets for form filling, so it's logical to map content controls to PDF widgets.

A perfect mapping is not possible, since PDF widgets are always a single rectangle and Writer content controls is a list of rectangles (text portions), but this doesn't cause a problem in most cases. The size of the PDF rectangle is determined based on the placeholder's size from Writer.

Benefits includes not having to insert a control shape, manually positioned to look like it's in line with the surrounding text. An other benefit is that this way the widget's style (font name, size, etc) can be specified using Writer styles, not with shape properties. It's also interesting that Word itself doesn't seem to support content controls in its PDF export at the time of writing.

Results so far

PDF export now automatically turns Writer content controls into fillable widgets for the rich text, plain text, checkbox, drop-down, combo box and date types.

Combo box itself is a new type: now combo box content can be either free-form or one of its list items, while drop-down can only be one of its list items.

How is this implemented?

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

As usual, the high-level problem was addressed by a series of 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 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 October 03, 2022 06:25 AM

September 29, 2022

Marius Popa Adrian

Linux 0.0.1 compiling on Ubuntu 64

You might need some packages first$ sudo apt-get install bin86 kvm qemu gcc build-essential qemu-system-x86 gcc-multilibclone the github repo with 64 build fixes https://github.com/mariuz/linux-0.01$ gh repo clone mariuz/linux-0.01$ unzip hd_oldlinux.img.zip$ make$ make run or $ make run-curses  SeaBIOS (version 1.13.0-1ubuntu1.1) iPXE (http://ipxe.org) 00:03.0 CA00 PCI2.10 PnP PMM+0078EBD0+

by Popa Adrian Marius (noreply@blogger.com) at September 29, 2022 07:48 AM

September 26, 2022

Collabora Community

Meet Skyler – Collabora Software Engineering Intern

 

Collabora recruits interns to work over the summer alongside our team, and to build experience to help them assess whether they want to pursue a career in Software Engineering, but how does that work out? Lets hear from Skyler:

Tell me about yourself!

My name is Skyler and I’m currently studying Maths, Further Maths, Computer Science and Business Studies at college. I spent the summer holidays doing an internship at Collabora Productivity. I’m into software development and video games, especially Minecraft and Celeste. I have a huge Steam library!

When did you first become interested in technology/coding?

When I was 11, my parents got me Raspberry Pi and I became fascinated with learning how to programme. Then in Secondary school I had an awesome Computer Science teacher who let us use old laptops to create a server where we built a small internal website. Since then I’ve been doing software development as a hobby.

What’s your favourite project you’ve worked on?

Oh, there’s quite a few to choose from! I’ve made several Discord bots which are automated game bots, including one to play Cards Against Humanity which was installed on over 2000 servers. I also made a version of Ultimate Tic Tac Toe – you can access it at https://uttt.crawling.us. I particularly enjoy creating smaller things that feed into one another to create something larger.

What have you been doing over the summer?

I’ve mostly been working on JSDialog, such as ‘repair document’, ‘number format’ or ‘split table’. I think the most common (and arguably most important) one I’ve worked on is ‘insert captions’ which is ~90% done: there’s 3 dialogs that work together to make our captioning work and I’ve converted 2 of them fully and figured out but not fully fixed an issue for the third.

Why did you want to spend your Summer interning at Collabora?

I went to a talk by Michael at my school where he told us about the benefits we’d get from doing an internship. He mentioned developing scalable techniques for big projects which I thought would be interesting and useful to learn.

I would have spent all Summer doing software programming anyway so I thought instead of letting the summer slip away, I would spend it learning. Plus it looks good on a university application!

What did you learn from your time at Collabora?

The main thing I learnt was the importance of taking notes efficiently so you can see what you were thinking and see if there were any assumptions you made that were wrong. I also learned how to implement scalable techniques (as Michael was talking about) which has really helped me.

What do you want to be working on in the future?

I’ve thought of various things I’d like to work on but I really enjoy back end development, much more than front end. I enjoy DevOps, scripts and testing – it’s satisfying to test and deploy.

I’m applying for university to do a Computer Science course focused on theory and software development and hopefully I’ll be able to get involved with some more projects at Collabora around my studies.

Would you recommend an internship at Collabora to others interested in a career in technology?

Yes absolutely, I’ve encouraged a few of my friends at school to apply!

 

It has been great to have Skyler work with us, and to see the impact on the codebase for all our users. Making our user-interface more visually consistent helps users to have a more easy to use and seamless experience. The underlying code improvements will also help to reduce complexity, making life easy for the next contributors to Collabora Online.

Why not get involved? We love to work alongside the next generation to help them discover what a career in Software Engineering might look like. If you’ve ever considered it for yourself, get in touch today!

The post Meet Skyler – Collabora Software Engineering Intern appeared first on Collabora Office and Collabora Online.

by Naomi Obbard at September 26, 2022 01:03 PM

Jean Hollis Weber

LibreOffice Community on Mac app store

On September 19, The Document Foundation (TDF) announced the release of LibreOffice on Apple’s Mac App Store, to support end users who want to get all of their desktop software from Apple’s sales channel. TDF will continue to provide LibreOffice for macOS free from the LibreOffice website, which is the recommended source for all users.

LibreOffice packaged for the Mac App Store is based on the same source code, but does not include Java – because external dependencies are not allowed on the store – and therefore limits the functionalities of LibreOffice Base.

The full TDF blog post is here.

by Jean at September 26, 2022 05:26 AM

September 15, 2022

Luboš Luňák

16384 columns in Collabora Online

 After the work to support 16384 columns in LibreOffice Calc I have also made sure that the feature works also in Collabora Online, thanks to the funding of NGI.

This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 871498.

 

 

 

 

Since the Calc core is the same, the underlying functionality works just like in LibreOffice. But the online functionality presented some additional challenges that needed handling, as having more cells in a spreadsheet may mean more data sent over the network, slowing things down. There definitely used to be problems with large spreadsheets, as the tiled rendering used by Online in fact was already limited to 500000 rows compared to 1048576 rows of the desktop version (in fact, git history shows that this started at only 1000 rows initially and then was continually raised over the time as things improved). So together with raising column count to 16384 I have raised this to the normal 1048576 rows as well.

While working on this, one of the problems I needed to handle was a rather unusual one - some automated tests were failing because of timing out. Only with debug builds, because they of course do more checks compared to optimized release builds. And the problem turned out to be how some tests checked resulting spreadsheets after some operations. Since testing Calc running in a browser is more complicated than testing the desktop version, what the tests did was to select a large number of cells (e.g. one entire row), paste that to the clipboard and then the clipboard data was present in browsers HTML data, so the testing framework could test it and verify it is as expected. And this failed with unoptimized debug builds because even though the spreadsheet was almost empty, the unoptimized code checked every cell involved and together it added up enough to exceed the test timeout. Ironically enough, a significant portion was spent in code that was trying to optimize the size of the clipboard data. So I needed to improve the tests and optimize handling of unoptimized code, as strange as it may sound.

Now with hopefully all performance problems solved, Collabora Online 22.05 should support these spreadsheet sizes just as fine as the desktop version.






by llunak (noreply@blogger.com) at September 15, 2022 02:51 PM

Tomaž Vajngerl

Chart Data Tables

Chart data table is a feature of charts, that presents in the chart area a data table with the values that are visualised by the chart. The data table is positioned automatically at the bottom of the chart, and can for certain chart types replace the X-axis labels. Until now this feature has been missing in LibreOffice, but thanks to the funding of NGI, it is now implemented.


This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 871498




Figure 1: Charts with a data table

Chart data table usage and description

Figure 2: Insert data table dialog


The chart data table can be added to the chart from the menu (Insert -> Data Table...), where it is possible to select to show the data table and set the data table specific properties (see Figure 2). The data table specific properties are:

  • Show Horizontal Border
  • Show Vertical Border
  • Show Outline
  • Show Keys
The properties "Show Horizontal Border" and "Show Vertical Border" control if the inner horizontal or vertical borders of the data table are shown or not. The "Show Outline" controls if the outline - borders around the data table are shown or not. "Show Key" controls if the legend keys for the data series are shown in the data table in addition to the data series (row) names.

Figure 3: Data Table Dialog


In addition to those data table specific properties it is also possible to change the line, fill and font properties of the data table (see Figure 3). For example the line properties define how the borders (lines) will be shown, so it is possible to change the line style (continuous line, dashes, dots), the colour of the line, transparency, line thickness. The fill properties defines the colour of the cell background and the font properties what font and size the is used for the text in the data tables.

Implementation

The data table implementation is located in the chart2 component, like all the other chart related code. A data table is represented in the model by a new DataTable (chart2/source/inc/DataTable.hxx) class (extending the XDataTable interface) and lives on the "Diagram" object. If there is no DataTable object, it means the data table is turned off. The DataTable holds the data table specific properties as well as line, fill and font properties.

The automatic positioning of the data table is done similar like the x-axis labels, as the data table is also meant to replace the x-axis labels, unless it is not able to do so, because of the chart type (for example the "bar chart", which has the main x and y axis swapped). 

Rendering is done on the DataTableView class (chart2/source/view/inc/DataTableView.hxx), which creates a table shape and positions that into the chart. The row headers (data series names) and column headers (x-axis names) and values (from the data series) are filled into the table cell by cell, where also the cell properties are mapped from the model (DataTable class), so the data table looks correctly.

Document format support

Data table is supported by OOXML (c:dTable element). There was already present reading and writing of the basic data table properties ("horizontal border", "vertical border" and "outline" but not "keys") to preserve the document formatting even when LibreOffice couldn't render the data table itself. The properties however were not present at a convenient place (directly on the Dialog object in the model) so this had to be refactored to use a DataTable class instead. Now the OOXML support can not only preserve the complete properties (including line, fill, font) and of course also render the data table properly. 

Support for the ODF format had to be added into the LibreOffice extended namespace. This was done with a "data-table" element that was added to the "chart:chart" element. The "data-table" element only has a link to a certain style instance (linked with "style-name" attribute to a style:style element with the same "name" attribute). The data table specific properties are attributes of the "chart-properties" element ("loext:show-horizontal-border", "loext:show-vertical-border", loext:show-outline", "loext:show-keys" attributes), that can be added to a style. The style can also have "graphic-properties" and "text-properties", which are mapped to line, fill and text properties of the data table on import (and vice-versa on the export).

The support for the data tables is currently available in LibreOffice master and will be present as a feature of LibreOffice 7.5 when released. 
 

by Tomaž Vajngerl (noreply@blogger.com) at September 15, 2022 01:19 PM

September 06, 2022

LibreOffice Dev Blog

Crash fixes, part 1: segfaults

One of the bugs that we see in computer programs including LibreOffice is the crash. You’re working with the application, and the program is suddenly closed! Here we discuss the usual causes for these crashes, and how to fix some of them.

Crash Report

Crash Report

There can be many reasons for a crash in C/C++, including segmentation faults (segfaults), assertion failures, aborts, and exceptions that lead to abort. Here we discuss the segmentation faults.

Usual Causes for the Segmentation Fault Crashes

There can be many reasons for a segfault in C/C++, and most of them are are related to the incorrect use of memory. For example:

1. Accessing memory that the program does now own
2. Using memory outside the allocated parts
3. Using uninitialized variables

If you use a variable without properly initializing it, that may lead to a segfault. For example:

int main() {
    int *p;
    *p = 1;
    return 0;
}

Trying to de-reference a null pointer also leads to crash.

int main() {
    int *p = nullptr;
    *p = 1;'
    return 0;
}

$ g++ main.cpp -o main; ./main
Segmentation fault (core dumped)

In C/C++, most compilers do not check the array bounds automatically. When working with arrays, you have to take care that you are accessing inside the array bounds, and not beyond them. Look at this example:

int main() {
    int a[10];
    a[1000000] = 1;
    return 0;
}

When working with pointers, it is important to make sure that the pointer is not null before working with it. For example, look at this file:

sc/source/ui/view/tabview.cxx

Inside it, look at this method:

bool lcl_HasRowOutline( const ScViewData& rViewData )
{
    const ScOutlineTable* pTable = rViewData.GetDocument().GetOutlineTable(rViewData.GetTabNo());
    if (pTable)
    {
    const ScOutlineArray& rArray = pTable->GetRowArray();
    if ( rArray.GetDepth() > 0 )
        return true;
    }
    return false;
}

Here, before working with pTable, with the condition “if (pTable)“, we make sure that the pTable pointer is not null.

That is also the case when working with arguments. Look at this function inside the same file:

IMPL_LINK_NOARG(ScTabView, TimerHdl, Timer *, void)
{
    if (pTimerWindow)
        pTimerWindow->MouseMove( aTimerMEvt );
}

The condition makes sure that pTimerWindow is not null.

How to Fix the segfaults?

To describe how to fix some of the segfaults, I discuss to fixes that are merged recently by Caolan and me.

First, please take a look at this recently fixed crash by Caolan:

The crash was happening when you created a page break, and then tried to edit it. The backtrace showed that the problem is happening in this file:

sw/source/uibase/docvw/PageBreakWin.cxx

inside this method:

IMPL_LINK_NOARG(SwPageBreakWin, FadeHandler, Timer *, void)

just in this line, when invoking IsVisible().

if (IsVisible( ) && m_nFadeRate > 0 && m_nFadeRate < 100)
    m_aFadeTimer.Start();

In a debug session for LibreOffice, one can see that the window object is actually destroyed, but the code wants to check if the window is visible or not. In this way, it leads to a segfault. Looking carefully, it becomes visible that the problem comes from some lines below that. We see that m_pLine->DestroyWin() is invoked, but the control sequence is working in a way that IsVisible() is called right after that. To fix this, Caolan simply added a return after destroying the window, and it fixed the problem.

    if ( m_bIsAppearing && m_nFadeRate > 0 )
        m_nFadeRate -= 25;
    else if ( !m_bIsAppearing && m_nFadeRate < 100 ) m_nFadeRate += 25; if ( m_nFadeRate != 100 && !IsVisible() ) Show(); else if ( m_nFadeRate == 100 && IsVisible( ) ) {
        Hide();
        m_pLine->DestroyWin();
    }
    else
    {
        m_pLine->UpdatePosition();
        PaintButton();
    }

    if (IsVisible( ) && m_nFadeRate > 0 && m_nFadeRate < 100)
        m_aFadeTimer.Start();</pre

    if (IsVisible( ) && m_nFadeRate > 0 && m_nFadeRate < 100)
        m_aFadeTimer.Start();

Different Fixes for the Crashes

Not all the crashes can be fixed this way. Sometimes, you have to work on the logic of the application in a higher abstraction level, to be able to fix the crash. For example, see one of the crashes that I have fixed recently.

You could select many footnotes by pressing up/down keys and holding shift, then delete all the footnotes at once. Then, hovering on a reference of such a footnote, lead to crash.

To fix the crash, I bibisected the problem to find the responsible commit. In that specific change, the commit author changed the behavior of the arrow keys to be able to to go to the beginning of the first line just by pressing up in the first line. Also, the same behavior for the last line was also part of the goal.

To fix the problem, I reduced the behavior change to anywhere other than the footnotes, and set the previous behavior for the footnotes. With this change, the crash no longer happened.

diff --git a/sw/source/core/crsr/swcrsr.cxx b/sw/source/core/crsr/swcrsr.cxx
index b379fe6..06c73af 100644
--- a/sw/source/core/crsr/swcrsr.cxx
+++ b/sw/source/core/crsr/swcrsr.cxx
@@ -2088,7 +2088,9 @@ bool SwCursor::UpDown( bool bUp, sal_uInt16 nCnt,
            }
            bRet = !IsSelOvr( SwCursorSelOverFlags::Toggle | SwCursorSelOverFlags::ChangePos );
        }
        else
        else if (!pFrame->IsInFootnote()) // tdf#150457 Jump to the begin/end
                                          // of the first/last line only if the
                                          // cursor is not inside a footenote
        {
            sal_Int32 nOffset = 0;

@@ -2114,6 +2116,8 @@ bool SwCursor::UpDown( bool bUp, sal_uInt16 nCnt,
            }

        }
        else
            *GetPoint() = aOldPos;

        DoSetBidiLevelUpDown(); // calculate cursor bidi level
    }

Last line, *GetPoint() = aOldPos; comes from the previous behavior, as it was before the commit that introduced the regression.

More Information

There are many other types of crashes, and many other tricks for fixing those crashes. If you look for the crash fixes, you will find many of them, and take a look into them.

git log --oneline|grep -i crash|grep -i fix

You can also refer to a list of recently fixed crashes in the LibreOffice QA report of the August 2022 which is published recently:

QA/Dev Report: August 2022

One can learn a lot from the code itself!

I will continue this tutorial, and talk about other sources of crashes including assert failures, aborts, and exceptions that lead to abort.

Links Related to Program Crashes

In the end, these are some related links:

by Hossein Nourikhah at September 06, 2022 01:42 PM

LibreOffice QA Blog

QA/Dev Report: August 2022

General Activities

  1. LibreOffice 7.4.0 was released on August 18
  2. Rafael Lima added documentation in Help for the new method Normalize in ScriptForge FileSystem and made the Templates dialog work better with HiDPI displays
  3. Olivier Hallot (TDF) made some smaller fixes and cleanups in Help
  4. Laurent Balland fixed an issue with Impress’s Inspiration template
  5. Christian Lohmaier (TDF) did preparatory work for publishing LibreOffice in Microsoft Store under TDF
  6. Miklós Vajna (Collabora) added support for cropped video for media shapes in Impress, made shift-clicking/double-clicking graphics in Writer work and fixed problems with exporting to XHTML with graphics as OLE objects and with vertical text and clearing breaks in Writer. He also made some crash fixes.
  7. Jean-Pierre Ledure worked on the ScriptForge library
  8. Tünde Tóth (NISZ) fixed a problem with decimal tabulators in DOCX files and made it so long legend texts in charts are truncated
  9. Szymon Kłos, Tor Lillqvist, Mert Tumer and Henry Castro (Collabora) worked on LOKit improvements
  10. Eike Rathke (Red Hat) fixed an issue with calling Calc’s add-in functions via macros while having a non-English UI, made it so switching to English function names in Calc does not require a restart, made Calc’s date pattern evaluation more robust and made it possible to create a new language list entry by simply dropping an autocorrect .dat file into a relevant autocorr directory inside the user profile
  11. Tomaž Vajngerl (Collabora) continued working on data tables for charts
  12. Julien Nabet fixed hyphenation issues with Greek language, made it possible to align date fields in macro dialog boxes, fixed preview issues with horizontal alignment of objects in frames and page dimension in Print Preview. He also made some crash fixes.
  13. Jim Raykowski made it so object selections in Impress or Draw are reflected in the Navigator, made page number display in status bar more intuitive and fixed an issue with Navigator’s Navigate By Page Next functionality
  14. Andreas Heinisch made cursor navigation with Ctrl key in Writer treat narrow no-break spaces the same way as other space characters, made narrow no-break spaces visible by drawing a gray background, fixed Calc’s Formula to Value not taking immediate effect, improved Basic macro error messages and fixed Calc’s Formula bar suggestion tooltips misbehaving with non-ASCII characters
  15. László Németh improved the layout of drop cap characters, made several improvements to change tracking and fixed regressions
  16. Xisco Faulí (TDF) added over a dozen automated tests, made SVG marker-mid and marker-end handling more robust and fixed a crash
  17. Heiko Tietze (TDF) made several UI improvements and made the recovery dialog easier to understand (thanks to earlier work by Danie Truter)
  18. Michael Stahl (allotropia) fixed issues with dropdowns and paragraph borders in RTF files, made WebDAV TLS work with self-signed Certification Authorities and improved bookmark handling in the Navigator
  19. Michael Weghorn fixed a qt/kf5 double-click issue (only in unreleased code) and made nearly sixty improvements and cleanup changes to Windows and Linux accessibility code
  20. Mike Kaganski (Collabora) dropped the Elements docking window from Math and made it a Sidebar panel instead. He also fixed some crashes and regressions and an issue with importing XML files from paths with non-ASCII characters on Windows
  21. Caolán McNamara (Red Hat) implemented fully native scrollbars for gtk3 and gtk4 UIs, made it possible to align currency fields in macro dialog boxes, made automated tests more reliable by correct use of fonts and fixed an issue with active object selection not being indicated in Impress sometimes. He also continued working on gtk4 UI and fixed many crashes and issues found by Coverity and fuzzers, including even Hunspell Coverity issues
  22. Stephan Bergmann (Red Hat) made many code and build-related cleanups as well as test fixes
  23. Rizal Muttaqin updated the icons for Field and Field by Type
  24. Noel Grandin (Collabora) improved the loading time for documents with charts having ridiculously long legends. He also made many code cleanups and general optimisations
  25. Luboš Luňák (Collabora) made many cleanups in OpenCL code
  26. Justin Luth fixed several issues related to numbered paragraphs and fixed incorrect anchoring in certain imported DOC files
  27. Mark Hung fixed an issue causing unwanted hiding of RTL sections in Writer
  28. Paris Oplopoios made cleanups to the graphics handling code as part of GSoC
  29. Chris Sherlock made many code cleanups and improvements to readability
  30. Áron Budea (Collabora) added Persian (fa-IR) dictionary to installset
  31. Hannah Meeks worked on the VBA macro compatibility GSoC project
  32. Maxim Monastirsky continued polishing icon flipping in the context of RTL, fixed a menu regression and made code cleanups
  33. Khaled Hosny (Alif Type) fixed many issues affecting the layouting of Kashida characters in Arabic scripts, issues with letter spacing, made the preview in Styles dropdown use CJK/CTL fonts, improved how the text cursor moves in relation to ligatures in Writer and made it possible to disable default features in Font Features dialog. He also made it possible to search for combining marks in text containing complex scripts
  34. Colomban Wendling (Hypra) worked on accessibility tests
  35. Matt K made it so errors with PDF export only show one dialog instead of three
  36. Hossein Nourikhah (TDF) improved the bin/run build script and its documentation and fixed a footnote crash
  37. Regina Henschel fixed an issue with saving Writer documents containing vertical text
  38. Vasily Melenchuk (CIB) made handling of frames more robust in Writer and fixed a couple of regressions
  39. Pranam Lashkari (Collabora) made it so Writer’s paragraph dialog will show Tabs tab also when multiple paragraphs are selected and fixed a crash
  40. Pedro Silva (Collabora) fixed some button image size inconsistencies
  41. Samuel Mehrbrodt (allotropia) made dialog positioning more robust, made it possible to specify names for printer jobs via the API and made it so unused document variables are preserved with RTF import and export
  42. Niko Fink fixed a crash in PyUNO
  43. Wu Jiahuan (Loongson) added support for building with loongarch64 CPU architecture
  44. Arnaud Versini made some code cleanups
  45. Thierry Emery changed pasted images to be anchored to cell by default in Calc
  46. Povilas Kanapickas implemented touchpad gesture support for rotating and zooming in Linux
  47. Thorsten Wagner made some cosmetic improvements to button text colours and font height on macOS
  48. Sarper Akdemir (Collabora) fixed a regression affecting PPTX tables
  49. Roman Kuznetsov made it so the About dialog can show both OpenCL and threaded for Calc’s calculation mode
  50. Łukasz Leszko fixed saving external links as relative in XLS files
  51. Oguz Balkaya added an option to clear unavailable files from the Recent Documents menu and Start Center
  52. Armin Le Grand (allotropia) reworked the code for rendering glow effects

Kudos to Ilmari Lauhakangas for helping to elaborate this list.

Reported Bugs

480 bugs, 44 of which are enhancements, have been reported by 289 people.

Top 10 Reporters

  1. Telesto ( 28 )
  2. Mike Kaganski ( 16 )
  3. Tuomas Hietala ( 15 )
  4. Rafael Lima ( 14 )
  5. BogdanB ( 11 )
  6. Gabor Kelemen (allotropia) ( 10 )
  7. Hossein ( 9 )
  8. Robert Großkopf ( 8 )
  9. Regina Henschel ( 8 )
  10. Eyal Rozenberg ( 7 )

Triaged Bugs

470 bugs have been triaged by 69 people.

Top 10 Triagers

  1. Dieter ( 55 )
  2. Julien Nabet ( 39 )
  3. Heiko Tietze ( 38 )
  4. Timur ( 35 )
  5. Mike Kaganski ( 25 )
  6. V Stuart Foote ( 23 )
  7. Roman Kuznetsov ( 21 )
  8. m.a.riosv ( 21 )
  9. Rafael Lima ( 20 )
  10. Xisco Faulí ( 18 )

Resolution of resolved bugs

478 bugs have been set to RESOLVED.

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

Fixed Bugs

168 bugs have been fixed by 38 people.

Top 10 Fixers

  1. Khaled Hosny ( 11 )
  2. Caolán McNamara ( 11 )
  3. Julien Nabet ( 8 )
  4. Justin Luth ( 7 )
  5. Michael Stahl ( 7 )
  6. László Németh ( 7 )
  7. Mike Kaganski ( 7 )
  8. Andreas Heinisch ( 6 )
  9. Eike Rathke ( 6 )
  10. Heiko Tietze ( 5 )

List of critical bugs fixed

  1. tdf#149966 Crash on Windows and freeze on Linux when customizing Menu ( Thanks to Noel Grandin )

List of high severity bugs fixed

  1. tdf#149467 Follow URL link in Writer text when navigator displayed: Crash in: _chkstk ( Thanks to Jim Raykowski )
  2. tdf#150034 LibreOffice Calc hangs on opening the particular file with pathological chart ( Thanks to Noel Grandin )
  3. tdf#150170 Crash in: mdds::flat_segment_tree::insert_to_pos(boost::intrusive_ptr<mdds::__st::node<mdds::flat_segment_tree > > &,long,long,bool) ( only LibreOffice 7.3 ) ( Thanks to Xisco Fauli )
  4. tdf#150197 number lost (after assigning numbering to style) when exporting to DOCX ( Thanks to Justin Luth )
  5. tdf#150236 Does not open full screen, ooSetupFactoryWindowAttributes not being filled ( steps in comment 21 ) ( LibreOffice 7.4 only ) ( Thanks to Xisco Fauli )
  6. tdf#150331 EDITING: AutoCorrect without “Show as tip” always fills in rest of word regardless of next key stroke ( Thanks to Xisco Fauli )
  7. tdf#150336 Shift + Up/Left no longer works to select cells in LO 7.4 beta 2 (using the Tabbed UI) ( Thanks to Caolán McNamara )
  8. tdf#150443 Track changes: Crash rejecting a grouped change ( Thanks to László Németh )
  9. tdf#150452 Crash in: libc.so.6 ( Thanks to Xisco Fauli )
  10. tdf#150499 CRASH: deleting sheet ( Thanks to Luboš Luňák )
  11. tdf#150502 CRASH: after clicking between the horizontal and vertical rulers ( Thanks to Julien Nabet )
  12. tdf#150594 LO 7.4: crash when I update a chapter index (swlo!SwDoc::SetTOXBaseName+0x5cd:) ( Thanks to Andreas Heinisch )
  13. tdf#91764 RTL: Arabic, Hebrew diacritics cant be found using search dialog ( Thanks to Khaled Hosny )
  14. tdf#94223 Selection box for text box not shown ( Thanks to Caolán McNamara )

List of crashes fixed

  1. tdf#147466 Crash swlo!SwDoc::InvalidateNumRules+0x657 (track changes involved) ( Thanks to Michael Stahl )
  2. tdf#149467 Follow URL link in Writer text when navigator displayed: Crash in: _chkstk ( Thanks to Jim Raykowski )
  3. tdf#149548 CRASH: copying and pasting tracked content ( Thanks to Michael Stahl )
  4. tdf#149966 Crash on Windows and freeze on Linux when customizing Menu ( Thanks to Noel Grandin )
  5. tdf#150138 FILEOPEN: Writer crashes when opening ODT file ( Thanks to Luboš Luňák )
  6. tdf#150170 Crash in: mdds::flat_segment_tree::insert_to_pos(boost::intrusive_ptr<mdds::__st::node<mdds::flat_segment_tree > > &,long,long,bool) ( only LibreOffice 7.3 ) ( Thanks to Xisco Fauli )
  7. tdf#150219 EDITING: Crash when cutting trace dependent with precedent on different sheet ( Thanks to Noel Grandin )
  8. tdf#150222 REPORTBUILDER – Starting to set font for a text box crashes whole LO ( Thanks to Noel Grandin )
  9. tdf#150249 Crash in Fontworks applying style after undo ( Thanks to Caolán McNamara )
  10. tdf#150265 Crash exporting a document with zoom to DOCX ( Thanks to Mike Kaganski )
  11. tdf#150291 Macro-collection-management crashes when no macro-container is selected (gtk3 specific) ( Thanks to Caolán McNamara )
  12. tdf#150394 LibreOffice is crashing with long hyperlink on the last position (Don’t hyphenate the last word) ( Thanks to László Németh )
  13. tdf#150443 Track changes: Crash rejecting a grouped change ( Thanks to László Németh )
  14. tdf#150452 Crash in: libc.so.6 ( Thanks to Xisco Fauli )
  15. tdf#150457 Crash on hovering footnote references after removing footnote ( Thanks to Hossein )
  16. tdf#150499 CRASH: deleting sheet ( Thanks to Luboš Luňák )
  17. tdf#150502 CRASH: after clicking between the horizontal and vertical rulers ( Thanks to Julien Nabet )
  18. tdf#150555 Crash after resizing Writer’s main window ( Thanks to Julien Nabet )
  19. tdf#150575 REPORTBUILDER: Crash when closing report after report navigator has been started ( Thanks to Julien Nabet )
  20. tdf#150594 LO 7.4: crash when I update a chapter index (swlo!SwDoc::SetTOXBaseName+0x5cd:) ( Thanks to Andreas Heinisch )
  21. tdf#150629 LibreOffice Writer crashes, when editing a page break ( Thanks to Caolán McNamara )

List of performance issues fixed

  1. tdf#108560 Pasting or editing large amount of multi-line text into a cell result in unusable Calc with GTK3 (steps to reproduce in comment 29) ( Thanks to Caolán McNamara )
  2. tdf#150618 Serious performance regression: it takes 5min+ for SUMIFS formula recalculation when switching sheet (while it only takes 30s in 7.3) ( Thanks to Luboš Luňák )

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

  1. tdf#103492 Arabic words not formed well in textboxes when sentence begins with English word ( Thanks to Khaled Hosny )
  2. tdf#104921

by x1sc0 at September 06, 2022 12:22 PM

Jean Hollis Weber

LibreOffice 7.4 Calc Guide published

Cover of Calc Guide 7.4The LibreOffice documentation team published a new user guide in August: LibreOffice 7.4 Calc Guide, available in free PDF and ODT. Low-cost printed copies are available from Lulu.com.

Visit the Documentation page on the LibreOffice website for links.

by Jean at September 06, 2022 01:16 AM

September 01, 2022

Miklos Vajna

Cropped video for media shapes in Impress

Impress now supports cropped videos in slide edit mode and during slideshow for documents imported from PowerPoint.

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

Motivation

PowerPoint-style cropped video in Impress

PowerPoint handles videos by taking a preview bitmap from the video, and then it allows users to apply various effects on that bitmap, like cropping. The complex aspect of this is that such filters are also respected while playing the video as well.

Impress didn't store such properties on the media shape, which lead to distorted aspect ratio when playing some cropped videos from PPTX files. This lead to this preview in Impress before the work:

Video with lost cropping in Impress

Results so far

The first problem was that the Impress preview was picked from the 3rd second of the video (presumably to avoid a black preview in many videos that start with a short black fade-in), while PowerPoint can store an explicit preview from the video (seems to be the first frame), so no matter what effects you apply, the previews were just different as the source bitmap was different. This could be fixed by looking for an explicitly provided bitmap for the video first, and only then asking the various avmedia/ backends to produce a preview.

Once the preview's initial bitmap was OK, it was necessary to take cropping into account. This was first done for the preview bitmap, and then also for the gstreamer backend (the relevant one for Linux, as a start) of avmedia/, which is responsible for the actual video playback. The gstreamer bits were done by first creating a videocrop element and then connecting that to the existing playbin.

With these sorted out, we get rendering which matches the reference:

Cropped video in PowerPoint

The last step was to load/save the explicit preview and the crop from/to ODF as well, not only PPTX. We use a markup like this to store the information:

<style:style style:name="gr1">
  <style:graphic-properties fo:clip="rect(0cm, 1.356cm, 0cm, 1.356cm)"/>
</style:style>

And now that the gr1 automatic style is defined, we can refer to it from a media shape:

<draw:frame draw:name="test" draw:style-name="gr1">
  <draw:plugin xlink:href="..." xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" draw:mime-type="application/vnd.sun.star.media">
    ...
  </draw:plugin>
  <draw:image xlink:href="Pictures/MediaPreview1.png"/>
</draw:frame>

The nice property of this markup is that automatic styles are already used for other shapes and image previews are also used for e.g. table shapes, so this is just using existing markup in a new context, but the ODF spec already allows this markup.

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:

User interface to create such a crop, support for other video effects (e.g. black-and-white) and other backends (Windows, macOS) could be done, but is future work currently.

Want to start using this?

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

by Miklos Vajna at September 01, 2022 07:46 AM

August 27, 2022

Caolán McNamara

zero coverity defects for hunspell

 

After the recent 1.7.1 release of hunspell I spent a little time massaging the source to address some long standing coverity complaints and achieved the elusive 0 outstanding defects with 0 dismissed state.

by caolan (noreply@blogger.com) at August 27, 2022 03:18 PM

August 19, 2022

Jean Hollis Weber

LibreOffice 7.4 Community Release

LibreOffice 7.4 Community was released on 18 August 2022. Here is the official blog post about it, with much more information about the release and about LibreOffice.

You can get LibreOffice 7.4 from the download page for Windows, macOS (Apple Silicon and Intel processors), and Linux.

A video summarizing the top new features in LibreOffice 7.4 Community is available on YouTube.

Most Significant New Features

GENERAL
Support for WebP images and EMZ/WMZ files
Help pages for the ScriptForge scripting library
Search field for the Extension Manager
Performance and compatibility improvements

WRITER
Better change tracking in the footnote area
Edited lists show original numbers in change tracking
New typographic settings for hyphenation

CALC
Support for 16,384 columns in spreadsheets
Extra functions in drop-down AutoSum widget
New menu item to search for sheet names

IMPRESS
New support for document themes

by Jean at August 19, 2022 12:50 AM

August 16, 2022

LibreOffice Dev Blog

ODF standard and the code – EasyHack

Open Document Format (ODF) is a standard (ISO/IEC 26300) and native file format that LibreOffice uses. OASIS developed this file format based on the file format of StarOffice, the ancestor of LibreOffice.

To understand the ODF standard, working with the LibreOffice code and fixing a small bug is enlightening. Here we discuss a related EasyHack.

ODF File Extensions

If you are a LibreOffice user, you may already know these extensions:

.odt for text processing documents (LibreOffice Writer)

.odp for presentations (LibreOffice Impress)

.ods for spreadsheets (LibreOffice Calc)

.odg for drawings (LibreOffice Draw)

.odf for formulas (LibreOffice Math)

Essentially, these are zip files containing XML and binary files. Additionally, Open Document Format can also be text-only format with the extensions of .fodt, .fods and .fodg instead of .odt, .ods, and odg respectively.

Open Document Specification

OASIS website provides the documents that describe the Open Document Format extensively . You can find the specifications for ODF 1.3, which is the latest version of the standard here:

OpenDocument V1.3 OASIS Standard published

Beside LibreOffice, several other applications support ODF standard, including Microsoft Office, ONLYOFFICE, Calligra Suite, Google Docs, and many others! But here, we focus on LibreOffice.

Basically, LibreOffice handles the Open Document format by opening the zip file using the zip parser and the deflate algorithm, and then parses the XML files inside it using libxml2 library.

On the other hand, the meaning of the XML tags and attributes are available via the specification from OASIS. In essence, the specification describes the text, pictures, shapes and other elements of the text processing, presentations, spreadsheets and formulas. Additionally, ODF standard discusses accessibility, collaboration and many more topics.

An EasyHack Related to ODF

To best way to understand the ODF standard, is working with the LibreOffice code. Please take a look at this small bug, which has the label of EasyHack (tdf#150302):

In this EasyHack, there is a sample document which is using a specific feature in the drawings. Looking at the <draw:enhanced-geometry> tag, one can see that there is an attribute draw:text-path-same-letter-heights that is used to control the way that text is rendered in shapes. It is described in ODF standard as:


19.224 draw:text-path-same-letter-heights

The draw:text-path-same-letter-heights attribute specifies if all letters in a custom shape have the same height.

The defined values for the attribute are:

  • false: letters in a custom shape need not have the same height.
  • true: letters in a custom shape have the same height.

The default value for this attribute is false.


The issue is that handling this parameter in the code is not correct. Specifically, the effect of this bug is that if you open the sample file and click on the SameLetterHeights button in the Fontwork toolbar, nothing happens. On the other hand, the correct behavior should be that the shape changes, and “shows the characters vertical stretched to fit the place between the paths”.

Shapes inside the example ODF file

Shapes inside the example ODF file

After all, to fix this issue one should refer to the code pointer that Regina Henschel has provided:

If you open the file core/svx/source/toolbars/fontworkbar.cxx, you will see that the else part is missing, and that is the cause of the problem. Specifically, you should fix that part of the code, and then submit your changes to Gerrit. To begin, please refer to this page for more information on how to submit code to LibreOffice Gerrit:

Writing a Test for the Fix

The fix is rather straightforward, but this is not the end of the task! Furthermore, you have to make sure that the problem does not happen again. In order to achieve this goal, writing a unit test is necessary. The test code should open the example file, and then use the toolbar option. This is possible by invoking .uno:FontworkSameLetterHeights command.

Fontwork toolbar, SameLetterHeightsFontwork toolbar: SameLetterHeights is the second icon is the second icon

Fontwork toolbar: SameLetterHeights is the second icon

There are some examples in sd/qa/unit/uiimpress.cxx that invoke UNO commands, and you may use as the starting point.

Final Notes

EasyHacks are good starting points for the newcomers. This specific improvement is filed as tdf#150302.

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

Getting Started (Video Tutorial)

 

by Hossein Nourikhah at August 16, 2022 01:17 PM

August 10, 2022

LibreOffice QA Blog

QA/Dev Report: July 2022

General Activities

  1. LibreOffice 7.3.5 was announced on July 21
  2. Adolfo Jayme Barrientos improved the layout of many dialogs
  3. Rafael Lima expanded the help for ScriptForge with many new features
  4. Olivier Hallot (TDF) updated the help for Fontwork and CSV import
  5. Laurent Balland fixed an issue with customer number formats with embedded text in decimal not saving correctly to ODS. He also fixed the footer of some Impress templates
  6. Christian Lohmaier (TDF) did lots of preparatory work for publishing LibreOffice in Apple Store under TDF
  7. Miklós Vajna (Collabora) fixed an issue with RTL text and floating objects in DOCX files and a couple of XHTML export issues. He also continued working on content controls for Writer
  8. Jean-Pierre Ledure worked on the ScriptForge library
  9. Tünde Tóth (NISZ) fixed DOCX export of line breaks in text frames and made saving style names to DOCX more robust
  10. Szymon Kłos, Henry Castro and Michael Meeks (Collabora) worked on LOKit improvements
  11. Eike Rathke (Red Hat) made it so two leading apostrophes before a number collapse to one when typing into a Calc cell with default formatting. He also made handling of Calc date formats more robust
  12. Bartosz Kosiorek fixed an issue with ordered bullets in Lotus Word Pro documents
  13. Tomaž Vajngerl (Collabora) worked on implementing data tables for charts and fixed an issue with hidden Writer fields becoming visible with PDF export
  14. Julien Nabet extended clone formatting functionality in Impress and Draw to work in more cases, fixed regressions affecting the copying of database tables from HSQLDB to MariaDB and the Draw Dimensions dialog and fixed displaying the OpenType tag for fraction
  15. Jim Raykowski made some Navigator fixes and tweaks
  16. Andreas Heinisch made Writer chapter numbering character style list alphabetically sorted, made Calc’s function wizard also search through function descriptions and changed Ctrl+Backspace to behave more intuitively in Calc cell editing. He also made narrow no-break spaces visible in Writer
  17. László Németh continued polishing change tracking of numbered paragraphs in Writer
  18. Xisco Faulí (TDF) added many new unit tests, fixed some crashes found through the crash reporter and made many improvements to SVG import, including adding support for Orient auto-start-reverse in markers and more robust handling of URLs and fill properties
  19. Heiko Tietze (TDF) made autocorrecting org-mode/markdown-like formatting marks to Writer formatting deactivated by default and fixed a regression preventing detaching of sub-toolbars like Basic shapes
  20. Michael Stahl (allotropia) fixed many Writer regressions, made handling ODF-imported automatic styles in Writer more robust and made it possible to edit the text content of a bookmark through the Insert → Bookmarks dialog
  21. Michael Weghorn fixed some qt/kf5 visual issues, fixed loading printer settings from documents in case of long printer/driver names and made some Linux accessibility improvements
  22. Mike Kaganski (Collabora) made it so editing hyperlinked text in Writer no longer breaks it up into multiple links, fixed rendering errors in Soft Edges image effect in Impress and corrected handling of Undo/Redo keyboard shortcuts in Math
  23. Kurt Nordback fixed an issue with negative error bars in logarithmic charts and improved rendering of exploded donut charts
  24. Caolán McNamara (Red Hat) fixed an accessibility performance issue affecting multi-line text in Calc, continued working on gtk4 UI and fixed many issues found by Coverity and fuzzers
  25. Stephan Bergmann (Red Hat) made many code and build-related cleanups as well as test fixes
  26. Rizal Muttaqin updated the icons for No List and improved the Breeze icons for New Presentation and Start from First Slide
  27. Noel Grandin (Collabora) made it so Calc undo works when typing is happening in two independent views, continued improving the import speed of complex PDF files and improved the import and post processing speed of a big DOCX file. He also made many code cleanups and general optimisations
  28. Luboš Luňák (Collabora) worked on Windows Subsystem for Linux support in the build system and made some improvements to HTML export. He also published a blogpost about his recent work on improving performance of unsorted lookups
  29. Justin Luth fixed RTL issues with tables and comments in DOCX files, fixed import and export of highlighting inside comments in DOCX/DOC/RTF files, improved the logic for optimal column width in Writer tables, fixed a DOCX compatibility issue with comments in textboxes, improved the DOCX compatibility with page styles and fixed an issue with bulleted lists in imported PPTX/PPT files
  30. Mark Hung continued working on CJK text grid improvements
  31. Paris Oplopoios replaced the old PNG export code with libpng as part of GSoC
  32. Chris Sherlock made many code cleanups and improvements to readability
  33. Tibor Nagy (NISZ) fixed an issue with polygon connecting points with PPTX export
  34. Balázs Varga (allotropia) fixed a UI glitch with Calc’s Data Validity List, fixed issues with password-protected shared files, made it so hidden elements are shown as inactive in Calc’s autofilter and improved the line style selection user experience
  35. René Engelhard (Debian) made some cleanups related to CPU architecture details
  36. Gülşah Köse (Collabora) fixed an issue preventing deletion of embedded databases through the UI
  37. Áron Budea (Collabora) fixed an issue with Sidebar getting stuck in a resize loop with HiDPI scaling
  38. Marco Cecchetti (Collabora) added support for scale and translate SVG transform animations in the Impress JS export
  39. Hannah Meeks worked on the VBA macro compatibility GSoC project
  40. Maxim Monastirsky improved icon appearance in the context of RTL
  41. Khaled Hosny (Alif Type) improved the validation of kashida insertion position and updated HarfBuzz to 5.1.0
  42. Colomban Wendling (Hypra) worked on accessibility tests
  43. Matt K fixed an issue related to canceling out of a save confirmation dialog
  44. Hossein Nourikhah (TDF) made it so Add New sheet button in Calc is disabled for protected sheet structures
  45. Regina Henschel fixed several issues related to rotated content in OOXML files
  46. Vasily Melenchuk (CIB) fixed issues with DOCX page breaks and attaching files to emails through macros

Kudos to Ilmari Lauhakangas for helping to elaborate this list.

Reported Bugs

385 bugs, 56 of which are enhancements, have been reported by 249 people.

Top 10 Reporters

  1. Mike Kaganski ( 21 )
  2. Gerald Pfeifer ( 10 )
  3. peter josvai ( 9 )
  4. Gabor Kelemen (allotropia) ( 7 )
  5. Telesto ( 7 )
  6. Regina Henschel ( 6 )
  7. Rafael Lima ( 6 )
  8. Xisco Faulí ( 6 )
  9. Albert Acer ( 5 )
  10. Michael Weghorn ( 4 )

Triaged Bugs

391 bugs have been triaged by 72 people.

Top 10 Triagers

  1. Timur ( 52 )
  2. raal ( 42 )
  3. Rafael Lima ( 30 )
  4. Mike Kaganski ( 24 )
  5. Roman Kuznetsov ( 20 )
  6. Xisco Faulí ( 18 )
  7. m.a.riosv ( 17 )
  8. Julien Nabet ( 16 )
  9. Dieter ( 16 )
  10. Buovjaga ( 14 )

Resolution of resolved bugs

406 bugs have been set to RESOLVED.

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

Fixed Bugs

138 bugs have been fixed by 40 people.

Top 10 Fixers

  1. Julien Nabet ( 10 )
  2. Caolán McNamara ( 7 )
  3. László Németh ( 7 )
  4. Justin Luth ( 5 )
  5. Xisco Fauli ( 5 )
  6. Michael Stahl ( 5 )
  7. Balazs Varga ( 4 )
  8. Andreas Heinisch ( 4 )
  9. Attila Bakos (NISZ) ( 4 )
  10. Michael Weghorn ( 4 )

List of high severity bugs fixed

  1. tdf#119491 FILESAVE: password protected shared spreadsheet loses password on save ( Thanks to Balazs Varga )
  2. tdf#141294 Decks of Sidebar on HiDPI gets stuck in resize loop upon attempted width adjustment, work around of setting new SB “MinimumWidth” to false in expert config ( Thanks to Aron Budea )
  3. tdf#148913 Crash mergedlo!SfxViewFrame::Notify+0xf87 for some users ( Thanks to László Németh )
  4. tdf#149170 UI The “Document in use” dialog is not appearing anymore when opening from ‘recent files menu’ ( Thanks to Michael Stahl )
  5. tdf#150187 Crash in Presentation Styles – Background objects – Modify ( Thanks to Julien Nabet )
  6. tdf#56580 logarithmic graph Y error shows as a diagonal line when apply negative error values ( Thanks to Kurt Nordback )
  7. tdf#98404 UX – While objects on a slide are being edited, notably text boxes, the new slide sorter Ctrl+Shift shortcut combinations (see bug 91909) incorrectly receive focus and move the slide ( Thanks to Gabor Kelemen )

List of crashes fixed

  1. tdf#142715 Crash when closing document after changing and saving it ( Thanks to Attila Bakos (NISZ) )
  2. tdf#148687 Crash swlo!SwAnchoredObject::GetObjRectWithSpaces+0x98: ( Thanks to Attila Bakos (NISZ) )
  3. tdf#148913 Crash mergedlo!SfxViewFrame::Notify+0xf87 for some users ( Thanks to László Németh )
  4. tdf#149173 Crash BigPtrEntry::GetArray(this=0x0000600001726940) const at bparr.hxx:106:23 (STR: comment 3) ( Thanks to Attila Bakos (NISZ) )
  5. tdf#149546 CRASH: importing document ( Thanks to Attila Bakos (NISZ) )
  6. tdf#149649 CRASH: in SwNodeIndex::SwNodeIndex ( Thanks to Michael Stahl )
  7. tdf#149985 FILEOPEN PPTX: Impress crashes opening a one-slide presentation (with a chart) ( Thanks to Noel Grandin )
  8. tdf#150187 Crash in Presentation Styles – Background objects – Modify ( Thanks to Julien Nabet )

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

  1. tdf#101731 Rename gradient ‘border’ label to something more meaningful ( Thanks to Ali_Abdollahian )
  2. tdf#104428 exploded donut uses too small radius ( Thanks to Kurt Nordback )
  3. tdf#104683 Show nonprinting characters: show spaces at the end of the line before break line for justified ( Thanks to Attila Szűcs )
  4. tdf#114734 Comment direction lost on saving-then-reloading a .docx ( Thanks to Justin Luth )
  5. tdf#117646 Clone Formatting not working for connector lines ( Thanks to Julien Nabet )
  6. tdf#33787 FORMATTING, FILEOPEN: Bullet point numbers don’t increment (.lwp import) ( Thanks to Bartosz Kosiorek )
  7. tdf#54703 Hidden Sections are no longer hidden when printing or exporting pdf (see comment 16) ( Thanks to Tomaž Vajngerl )
  8. tdf#56580 logarithmic graph Y error shows as a diagonal line when apply negative error values ( Thanks to Kurt Nordback )
  9. tdf#61623 UI Data Validity List and icon drawing bugs ( Thanks to Balazs Varga )
  10. tdf#67669 Make narrow non-breaking spaces visible ( Thanks to Andreas Heinisch )
  11. tdf#90837 re-base: Can’t “Save As” file opened in view mode on top of the original file ( Thanks to Michael Meeks )
  12. tdf#92610 alt command for Same Content on First Page should be unique ( Thanks to Gabor Kelemen )
  13. tdf#96723 FILESAVE: custom cell number format with embedded text in decimal part not saved in ods ( Thanks to Laurent BP )
  14. tdf#97539 INSERT: SVG clippath not fully supported ( Thanks to Xisco Fauli )
  15. tdf#98404 UX – While objects on a slide are being edited, notably text boxes, the new slide sorter Ctrl+Shift shortcut combinations (see bug 91909) incorrectly receive focus and move the slide ( Thanks to Gabor Kelemen )

WORKSFORME bugs

56 bugs have been retested by 27 people.

Top 10 testers

  1. Timur ( 9 )
  2. Buovjaga ( 6 )
  3. Julien Nabet ( 5 )
  4. Roman Kuznetsov ( 5 )
  5. raal ( 4 )
  6. Gabor Kelemen (allotropia) ( 2 )
  7. Faisal ( 2 )
  8. Dieter ( 2 )
  9. Telesto ( 2 )
  10. phv ( 2 )

DUPLICATED bugs

102 bugs have been duplicated by 26 people.

Top 10 testers

  1. Timur ( 14 )
  2. Mike Kaganski ( 11 )
  3. V Stuart Foote ( 8 )
  4. Gabor Kelemen (allotropia) ( 8 )
  5. Heiko Tietze ( 7 )
  6. Dieter ( 6 )
  7. Buovjaga ( 6 )
  8. Michael Warner ( 5 )
  9. Aron Budea ( 4 )
  10. raal ( 4 )

Verified bug fixes

42 bugs have been verified by 11 people.

Top 10 Verifiers

  1. NISZ LibreOffice Team ( 17 )
  2. Gerald Pfeifer ( 8 )
  3. BogdanB ( 5 )
  4. Dieter ( 3 )
  5. Xisco Faulí ( 3 )
  6. stragu ( 1 )
  7. Gabor Kelemen (allotropia) ( 1 )
  8. Rafael Lima ( 1 )
  9. Aron Budea ( 1 )
  10. Julien Nabet ( 1 )

Categorized Bugs

206 bugs have been categorized with a metabug by 21 people.

Top 10 Categorizers

  1. Aron Budea ( 31 )
  2. Gabor Kelemen (allotropia) ( 28 )
  3. Rafael Lima ( 27 )
  4. Timur ( 21 )
  5. Roman Kuznetsov ( 18 )
  6. Dieter ( 17 )
  7. László Németh ( 9 )
  8. Rizal Muttaqin ( 8 )
  9. V Stuart Foote ( 8 )
  10. raal ( 7 )

Regression Bugs

44

by x1sc0 at August 10, 2022 11:46 AM