Welcome to The Document Foundation Planet

This is a feed aggregator that collects what LibreOffice and Document Foundation contributors are writing in their respective blogs.

To have your blog added to this aggregator, please mail the website@global.libreoffice.org mailinglist or file a ticket in Redmine.


Monday
03 October, 2022


face

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


Thursday
29 September, 2022


face

We’ve just wrapped up the first day of the LibreOffice Conference 2022. You can check out the video streams from room 1 and room 2 – and after the conference, we’ll edit and upload individual videos of the talks.

Check out the schedule for day 2, and see you then, in-person or online! 👍


face

The LibreOffice Conference 2022 is go! And we will be live streaming talks from the rooms, on our YouTube channel:


face

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+


Monday
26 September, 2022


face

 

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


face

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.


Friday
23 September, 2022


face

More news from the LibreOffice subreddit! User goose_pirate posted about an extension:

Hi everyone, I made this little extension for LibreOffice Calc which adds a few functions, currently FILTER, SORT, and XLOOKUP. I hope others will find this as useful as I do.

XLOOKUP is a function for finding things in a table by range or row. We asked goose_pirate for a bit of background on the extension:

I’ve been using both Excel and LibreOffice for many years and found the new(er) Excel functions like XLOOKUP to be really nice compared to the old VLOOKUP or INDEX MATCH. I wanted to use it in LibreOffice too, so I wrote this extension.

How I made it: I researched information about LibreOffice extensions, dissected a few such extensions made by others, and finally started my own. It wasn’t too bad, I was surprised no one has made something similar yet.

Great work, goose! 😊

Learn more and download here (in the “build” folder)


Thursday
22 September, 2022


face

LibreOffice’s presentation tool, Impress, includes a bunch of features for home and office use. But one thing that’s missing is recording and playback for audio comments in presentations.

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.

This feature is important in eLearning: in contrast to video recordings, audio recordings are stored per slide, and can be adjusted to match the individual pace of the presentation. This is particularly suitable in school, academic as well as corporate environments to make learning content and product presentations more interactive.

So, how can we get this feature in LibreOffice? Well, the CH Open association, which has been promoting open systems and standards in the Swiss ICT landscape for over 40 years, is organising a crowdfunding campaign to implement the feature. The project is estimated to cost €62,000 in total – with various milestones along the way.

Click here to learn more and participate!


face

On the LibreOffice subreddit, we became aware of some useful tutorial videos created by Steven Davids. These cover various components of the suite, and show how to achieve common tasks.

We asked Steven about how he chooses the topics for his videos, and how he makes them:

My video tutorials come to me – I do not go and look for them. If I have a problem, I search for a solution on the web. I always assume I am not unique, and that many other people had or have the same problem. If I do not find a solution or one that is readily available, I struggle my way out to a solution. Then I share that solution via video! Why video? Because it seems to me people are lazy to read and video illustrations are just easier to understand.

The videos are very low budget and homemade. There are no costs for the software since I use free public open-source programs for the screen recorder and video editor. There are many such programs, but OBS Studio and Shotcut serves me very well. I often use LibreOffice Presentation to assist in presenting the material. The hardware is also low cost. I already have a laptop and mobile phone so there are not extra costs there. A mid-range microphone from Samson is indispensable and basically the only additional cost.

Click here to view the playlist on YouTube!


Wednesday
21 September, 2022


face

The two main sponsors of LibreOffice Conference 2022 are allotropia and Collabora, the two largest ecosystem companies fully focused on the development of LibreOffice. They both develop new features and improve the existing ones, manage interoperability issues with MS Office non standard document format by tweaking LibreOffice behavior and the import/export filters, and look at bugs and regressions.

Employees of both companies have been with LibreOffice since the beginning, and in some cases have started their journey into free open source software during the previous decade, with OpenOffice and other FOSS projects. Allotropia and Collabora have also hired several young developers who have started contributing to LibreOffice as volunteers.

We have interviewed Thorsten Behrens, founder and managing director of allotropia, and Michael Meeks, founder and managing director of Collabora Productivity. We have asked them the same five questions, to get an update about their companies and their LibreOffice related development activities.

1. Y0ur company in five words

allotropia provides services, consulting and products around LibreOffice and related open source software. We are a team of nine, with a small office in Hamburg because I live in that city, and people working from home in different areas of Europe.

2. Why free open source software, and why a copyleft license

First of all, the fact that we’re doing open source is because we’re convinced that’s the right thing to do, especially for development. Software is increasingly running the world and the right thing to do is to have access and ability for everyone to inspect the source code, to improve the software, to change the software, and also to fork the software if you really need to. So we choose that way to earn a living and develop software.

The fact that we’re developing predominantly for copy left software is clearly because that’s the underlying license for almost all of LibreOffice. Personally, I don’t think there is a hard line, so I wouldn’t say that, for example, for a basic library like boost or other building blocks of the FOSS ecosystem that a permissive license is wrong.

It is clearly the case that for LibreOffice that’s the right choice, and it’s a very nice balance between volunteers’ and business’ interests, so that you have a common code base and some ground rules so that you can’t just, let’s say, take volunteer contributions and commercialize them just like that.

You always have to give back, whatever you do on top. And I think that’s the right thing to do for something like LibreOffice that’s on top of the very top of the software stack. I’m absolutely convinced that’s the right license to use for our project.

3. Let’s focus on the last couple of years. Which are your biggest achievements?

For us at allotropia it was quite a mixed blessing, I think. Why? There was quite some push towards remote work, which might have indirectly


Monday
19 September, 2022


face

Berlin, September 19, 2022 – The Document Foundation (TDF) announces 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 proprietary sales channel. So far, LibreOffice on the Mac App Store was released by Collabora. TDF will charge a convenience fee of €8.99, which will be invested to support development of the LibreOffice project.

TDF releasing on the Mac App Store is an evolution over the previous situation, which reflects the project’s new marketing strategy: The Document Foundation is focused on the release of the Community version, while ecosystem companies are focused on a value-added long-term supported versions targeted at enterprises. The distinction has the objective of educating organizations to support the FOSS project by choosing the LibreOffice version which has been optimized for deployments in production and is backed by professional services, and not the Community version generously supported by volunteers.

“We are grateful to Collabora for having supported LibreOffice on Apple’s Mac App Stores for quite a long time”, said Italo Vignoli, LibreOffice Marketing. The objective is to fulfill the needs of individual and enterprise users in a better way, although we know that the positive effects of the change will not be visible for some time. Educating enterprises about FOSS is not a trivial task and we have just started our journey in this direction”.

The Document Foundation will continue to provide LibreOffice for macOS for 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 software is also supported by volunteers who donate their time to help users.

Link: https://apps.apple.com/us/app/libreoffice/id1630474372


Thursday
15 September, 2022


face

 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.







face

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

face

Berlin, September 15, 2022 – LibreOffice 7.4.1 Community, the first 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.

Most Significant New Features of LibreOffice 7.4

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

A video summarizing the top new features of the LibreOffice 7.4 Community major release is available on YouTube: https://www.youtube.com/watch?v=PC8M4UzqpqE and PeerTube: https://peertube.opencloud.lu/w/myZUTCytN28kuxDa5VXNgh. A description of all new features is available in the Release Notes: https://wiki.documentfoundation.org/ReleaseNotes/7.4.

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.1 Community

LibreOffice 7.4 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/.

For users who don’t need the latest features and prefer a release that has undergone more testing and bug fixing, The Document Foundation maintains the LibreOffice 7.3 family, which includes some months of back-ported fixes and is currently at version 7.3.6.

The Document Foundation does not


Tuesday
13 September, 2022


face

The schedule of the LibreOffice Conference 2022, to be held in Milan from September 29, to October 1st, has been published: https://events.documentfoundation.org/libreoffice-conference-2022/schedule/. Please check it on a regular basis, as changes will be reflected in real time, even during the conference.

The app for Android with the schedule (also in real time) is live on Google Play and F-Droid: https://play.google.com/store/apps/details?id=info.metadude.android.libreoffice.schedule and https://f-droid.org/packages/info.metadude.android.libreoffice.schedule.

 


Monday
12 September, 2022


face

The LibreOffice project is on Mastodon, a free, open-source and federated social media service (with similar features to Twitter). Specifically, we’ve been on the Fosstodon server since April 2019 – and now we have 10,000 followers! A huge thanks to everyone who supports us there 😊

Click here to follow us, and get regular updates about LibreOffice


Tuesday
06 September, 2022


face

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


face

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

face

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.


Thursday
01 September, 2022


face

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:


Saturday
27 August, 2022


face

 

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.


Friday
19 August, 2022


face

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


Tuesday
16 August, 2022


face

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


Wednesday
10 August, 2022


face

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

Wednesday
03 August, 2022


face

 

GTK4 screenshot of writer using true GtkScrollbars rather than themed Vcl ScrollBars. Long press enters gtk's usual fine control mode for scrolling.


Monday
01 August, 2022


face

The LibreOffice Quality Assurance (QA) Team is happy to announce that LibreOffice 7.4 Release Candidate 2 (RC2) is available for testing!

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

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

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

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

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

Happy testing!


face

Writer now supports a 6th content control type: it is possible to insert a plain text content control.

This work is primarily for Collabora Online, done as a HackWeek project, but the feature is fully available in desktop Writer as well.

Motivation

Word-style plain text content control, user interface

Writer users can put a content control around a piece of rich text, see Content controls in Writer: dropdown, picture and date types for the first five types.

The next step in this journey is plain text: even if one of the big advantages of content controls over input fields is that they allow rich formatting, sometimes you want to restrict this. For example, if one has to fill in their name, then it makes no sense to mark the family name as bold while leaving the given name as non-bold. This would just lead to inconsistent look.

Results so far

There is now a new Form → Content Controls → Insert Plain Text Content Control menu item to create a plain text content control. If you try to make a selection that is a subset of the text inside the content control and you try to format it, the whole text in the content control is formatted to maintain the invariant that plain text has no formatting itself, just the formatting of the whole content control.

As usual, you can delete this content control later. You can also load/save it to ODT/DOCX and it's preserved.

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


Thursday
28 July, 2022


face
  • Poked at some hackery, added some debugging bits to the forkit to chase a problem. Submitted a LibOCon paper really looking forward to meeting up with people in person. And continued working on our very awesome (but no longer co-located) COOL days which will be in Berlin immediately afterwards with Eloy.

face

 

Bootstrapped using GtkPopovers to implement popups from LibreOffice's main menubars for GTK4.


Wednesday
27 July, 2022


face
  • Mail chew, catch-up calls left & right; calls with interns & Pedro.
  • Band practice with H. in the evening ; chat with Thorsten.

Older blog entries ->