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.


Friday
22 September, 2023



Thursday
21 September, 2023


face

Conference organisers

Yes, it has started! Check out the conference website for live streams and more information – and a big thanks to the organisers, sponsors and supporters.

Here’s to a great event 😊


Friday
15 September, 2023


face

LibreOffice Conference 2023 will be hosted by the Universitatea Națională de Știință și Tehnologie Politehnica București, Facultatea de Automatică și Calculatoare (National University of Science and Technology, Polytechnic University of Bucharest, Faculty of Automation and Computer Science) at the PRECIS building from Wednesday 20 September to Saturday 23 Septembe. On Wednesday, the community will gather for the usual community meeting to discuss localisation and marketing activities at the local level. The conference will open on Thursday morning and continue with talks and workshops until Saturday lunchtime (schedule). Alongside this, there will be a technical workshop focusing on LibreOffice development.

The conference is sponsored by Collabora Office and Allotropia (main sponsors), dvloper.io and 1&1, with a significant contribution from The Document Foundation, and the technical support of IT Genetics. The event has been organized by a local team of volunteers, backed by 1&1 and supported by the team at The Document Foundation with the help of local NGOs Rosedu and Tech Lounge. More information on the conference website.


face

Google Summer of Code logo

This year, LibreOffice was once again a mentoring organization in the Google Summer of Code (GSoC), a global program focused on bringing more student developers into free and open source software development. Five projects were finished successfully. Students and mentors enjoyed the time, and here we present some of the achievements, which should make their way into LibreOffice 24.2 in early February 2024!

You can experiment with the new features by using daily builds and report any problems in our bug tracker.


Improving OpenPGP encryption experience in LibreOffice by Ahmed Gamal Eltokhy

Mentors: Thorsten Behrens (allotropia), Heiko Tietze (TDF), Hossein Nourikhah (TDF)

LibreOffice can encrypt documents using OpenPGP public key cryptography by making use of external applications such as gpg4win, GPGTools and gnupg. Thanks to Ahmed’s work, it is now easier to manage and search keys and faster to navigate large keyrings.

Learn more about the encryption experience improvements in the final report.


Selecting tests to run on gerrit patches based on machine learning by Baole Fang

Mentors: Thorsten Behrens (allotropia), Stéphane Guillou (TDF), Christian Lohmaier (TDF)

This project was inspired by Mozilla’s work on Firefox’s continuous integration. There is now a system in place that makes predictions on the test failure possibility of submitted code changes and decides the most efficient way to build the changes. As this kind of machinery is very new to everyone, we expect many tweaks to follow.

Learn more about the machine learning project in the final report.


Search Field in Options by Bayram Çiçek

Mentors: Andreas Heinisch, Heiko Tietze (TDF)

Screenshot of search in options

Searching through options is pretty standard in applications these days, so it is about time LibreOffice learned how to do it!

Learn more about the search feature in the final report.


Convert Writer’s Java UNO API Tests to C++ by Dipam Turkar

Mentors: Tomaž Vajngerl (Collabora), Xisco Faulí (TDF)

The idea here was to reduce the dependency on Java during the LibreOffice build process. Half of the tests for Writer were converted.

Learn more about the test conversion project in the final report.


Add APNG import/export support by Paris Oplopoios

Mentors: Tomaž Vajngerl (Collabora)

APNG is short for Animated Portable Network Graphics. It is not an official extension to PNG, but nevertheless has broad support in web browsers these days. Thanks to Paris’s work, LibreOffice now fully supports this format.

Learn more about the APNG feature in the final report.

Wrapping up

Many thanks to all contributors who spent their summer time improving LibreOffice. You are awesome! And special thanks also to the mentors who always put so much love and energy into these tasks. That’s what makes LibreOffice rock.

Now we are looking forward to next year’s GSoC. If you are interested, why not prepare early? Learn more at out wiki page where some ideas are listed.

Participating in GSoC is a great way to build your skills, and show future employers what you’re capable of!


Thursday
14 September, 2023


face

LibreOffice 7.6 bannerBerlin, September 14, 2023 – LibreOffice 7.6.1 Community, the first minor release of the 7.6 family of the volunteer-supported free office suite for desktop productivity, for Windows (Intel/AMD and ARM processors), macOS (Apple and Intel processors) and Linux is immediately available from www.libreoffice.org/download.

LibreOffice is the only open source office suite for personal productivity which can be compared feature-by-feature with the market leader. LibreOffice offers the highest level of compatibility in the office suite market segment, with native support for the Open Document Format (ODF) – beating proprietary formats for security and robustness – to superior support for MS Office files, along with filters for a large number of legacy document formats, to return ownership and control to users.

Based on the advanced features of the LibreOffice Technology platform for personal productivity on desktop, mobile and cloud, the LibreOffice 7.6 family provides a large number of improvements and new features targeted at users sharing documents with MS Office or migrating from MS Office. These users should check new releases of LibreOffice on a regular basis, as the progress is so fast, that each new version improves dramatically over the previous one.


LibreOffice 7.6 Community Highlights

GENERAL

  • Support for zoom gestures when using touchpads in the main view.
  • Support for document themes, and import and export of theme definitions for ODF and OOXML documents.
  • Many improvements to font handling, especially for right-to-left scripts, CJK and other Asian alphabets.

WRITER

  • New Page Number Wizard in the Insert menu, for easy one-step insertion of the page number in the header/footer.
  • The Paragraph Style dropdown in the Formatting toolbar shows a list of styles used in the document, rather than the full list of the available styles.
  • Tables of Figures can be generated more flexibly based on paragraph styles, and not only from categories or object names.
  • Bibliography entries can be edited directly from a bibliography table, and bibliography marks hyperlink by default to the matching row in a bibliography table.
  • Highlighting for used paragraph and character styles and direct formatting in text.
  • Phrase checking: multi-word dictionary items of Hunspell and custom dictionaries are now accepted.

CALC

  • Number format: “?” is now supported when exporting to ODF to represent an integer digit, replaced by blank if it is a non significant zero, and decimals for formats in seconds without truncation like [SS].00 are now accepted.
  • Spreadsheets copied to another document now retain a user-defined print range.
  • Solver settings are saved with documents, and page styles are exported even if they are not in use.
  • Support for drawing styles for shapes and comments, including a dedicated style for comments that makes it possible to customize the default look and text formatting of new comments.
  • New compact layout for pivot tables.
  • Autofilter support for sorting by colour. Filter/sort by color considers colours set by number format.
  • The Import Text dialog (as CSV file or as unformatted text) has a new option to not detect number in scientific notation

face

LibreOffice has a database application called Base. It can connect to various database management systems, and is integrated with two internal database engines: Firebird and HSQLDB. Here I discuss how to add catalog and schema support for SQL functions in LibreOffice Base.

SQL window

SQL window

One can use SQL to create and use internal functions. For example, with Firebird:

CREATE FUNCTION F(X INT) RETURNS INT
AS
BEGIN
  RETURN X+1;
END;

To run this, you can use “Tools > SQL…”, and then write the above SQL query. To see the result, you need to run this query:

SELECT F(5) FROM RDB$DATABASE;

Catalog and schema support

On the other hand, support for SQL commands is limited. For example, as the issue tdf#95174 describes, SQL parser of LibreOffice parser currently does not handle catalog and schema in function names:

Currently, this command  works fine:

SELECT function_name(a, b) FROM C

But this one does not:

SELECT schema_name.function_name(a, b) FROM C

The goal is to make the second one also work in LibreOffice Base.

Code Pointers

To add the support for catalog and schema in function names, you should refer to the Yacc rule for the SQL Parer.

Lionel, the experienced Base developer describes what to do in the first comment. In the file connectivity/source/parse/sqlbison.y, you can find this rule

function_name:
		string_function
	|	date_function
	|	numeric_function
	|	SQL_TOKEN_NAME

Here, you should add two new cases, like:

	|	SQL_TOKEN_NAME '.' SQL_TOKEN_NAME 
			{$$ = SQL_NEW_RULE;
			$$->append($1);
			$$->append(newNode(".", SQLNodeType::Punctuation));
			$$->append($3);
			}
	|	SQL_TOKEN_NAME '.' SQL_TOKEN_NAME '.' SQL_TOKEN_NAME
			{$$ = SQL_NEW_RULE;
			$$->append($1);
			$$->append(newNode(".", SQLNodeType::Punctuation));
			$$->append($3);
			$$->append(newNode(".", SQLNodeType::Punctuation));
			$$->append($5);}

After that, one should invoke this command:

git grep -E '(function_name|set_fct_spec)'

to find parts of the code that use them.

If the code is examining one of the above nodes, it expects a single token at the function_name. The code should be changed to expect a token or a node to handle the schema_name and function_name.

Final Notes

An implementation should be accompanied with a test to make sure that the code actually works, and will remain fine in the future changes. To see other discussed EasyHacks, follow the EasyHacks tag in this blog.


Monday
11 September, 2023


face
Cover of LibreOffice Writer Guide 7.6 Portrait photo of Jean H. Weber

Jean H. Weber (photo) and the Documentation Team are happy to announce the immediate availability of the Writer Guide 7.6, the latest update based on the recently released LibreOffice 7.6.

Writer is the word-processing application. It is compatible with a wide range of document formats including Microsoft Word (.doc, .docx), and you can export your work in several formats including PDF. Anyone who wants to get up to speed quickly with Writer will find this book valuable. You may be new to word processing software, or you may be familiar with another office suite.

The 7.6 Writer Guide incorporates the latest features including:

  • Themes management for better MS Word compatibility
  • The Accessibility checker used to produce accessible documents
  • Styles Spotlight to assist user in the best practices in document editing with styles.
New theme selection dialog showing different colour palettes Screenshot of Style Highlighter in action, with coloured identifiers in the left margin Detail of the new Accessibility Sidebar, recommending to add alternative or descriptive text to pictures

 

The Writer Guide 7.6 is available in the Documentation Website as well as in the LibreOffice Bookshelf website and it includes the guides in HTML format for web navigation, as well as the traditional PDF, ODT and the printed version from LuLu Inc.

Happy Documentation!


face

LibreOffice 7.6 green banner

Two weeks ago, we released LibreOffice 7.6, our new major version of the office suite. And so far we’ve had 1,587,383 downloads from our site! (So that doesn’t include Linux distributions that package it themselves.) We hope all users are enjoying it, and the many new features.

Some more stats: 31,519 impressions of the announcement tweet, with 690 likes and 231 reposts. Our Mastodon post had 293 likes and 272 reposts, while the New Features video on YouTube has had 17,339 views. (It’s also on PeerTube as well.)

Many thanks to our worldwide community of volunteers, and certified developers, for all their work on this release!

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.


Thursday
07 September, 2023


face
  • Mail and slide chew, tech planning call, more slide work. Lunch with B&A, partner presentation; visited bungalow nearby for a tour with B&A - looks good. Back to work.
  • Bible study group in the evening, good to see people again after a break, Isaiah 40 - good stuff.
  • Wrote up my blog alongside a frantically working M. to support her finishing her EPQ.
  • Amused to see right to repair applied helpfully to ice cream machines by iFixit and others; particularly in light of Matthias' apparently prescient Ada & Zangemann book.

face

LibreOffice 7.5 banner

Berlin, September 7, 2023 – LibreOffice 7.5.6 Community, the sixth minor release of the LibreOffice 7.5 line, the volunteer-supported free office suite for desktop productivity, is available from our download page for Windows (Intel/AMD and ARM processors), macOS (Apple Silicon and Intel processors), and Linux [1].

Products based on LibreOffice Technology 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).

Availability of LibreOffice 7.5.6 Community

LibreOffice 7.5.6 Community is available from this page. Minimum requirements for proprietary operating systems are Microsoft Windows 7 SP1 and Apple macOS 10.14. LibreOffice Technology-based products for Android and iOS are listed here.

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.

LibreOffice users, free software advocates and community members can support The Document Foundation with a donation.

[1] Change log pages: RC1 and RC2


face

General Activities

  1. LibreOffice 7.6.0 was released on August 21
  2. Olivier Hallot (TDF) continued adding Tabbed UI examples into help instructions, updated help for command line PDF export and anchoring of images in Writer, improved help for Title Page and added extended tips to its dialog and added help pages for tooltips when dragging scrollbars and document themes
  3. Juan C. Sanz added Firebird’s DATEADD and DATEDIFF functions to the SQL parser
  4. Stéphane Guillou (TDF) updated help for PDF export regarding comments in margin
  5. Rafael Lima fixed issues with F1 help shortcut not working in some contexts, made the table toolbar hidden when Notebookbar is active and updated help for ScriptForge
  6. Seth Chaiklin updated help for AutoRecovery
  7. Laurent Balland extended ODF support to include reserved blank spaces in Calc custom number formats
  8. Miklós Vajna (Collabora) worked on multi-page floating tables in Writer. He also made improvements to automated tests
  9. Jean-Pierre Ledure worked on the ScriptForge library
  10. Szymon Kłos (Collabora) worked on jsdialog used by Collabora Online
  11. Marco Cecchetti and Attila Szűcs (Collabora) worked on LOKit used by Collabora Online. Attila also added an Excel compatibility option to limit the creation of hyperlinks to only one per cell
  12. Áron Budea (Collabora) fixed a crash when parsing an XML with undeclared namespace
  13. Eike Rathke (Red Hat) made date/time arithmetic in Calc use rounding in order to work more intuitively with date and time functions
  14. Tomaž Vajngerl (Collabora) continued polishing support for document themes
  15. Julien Nabet fixed GTK3 Disabled menu items not being hidden in DontHideDisabledEntry = false mode and did some cleanups in code and in Help
  16. Andreas Heinisch made it so slides in Impress copied by Ctrl + drag and drop get unique names
  17. László Németh improved Writer change tracking related to tables
  18. Xisco Faulí (TDF) did many SVG handling and rendering improvements, fixed many crashes and made some changes and additions to automated tests
  19. Michael Stahl (allotropia) made floating tables in Writer more robust
  20. Mike Kaganski (Collabora) made it so truncated bookmark names are created to be unique thus preventing any problems with hyperlinking, fixed HTML export of nested tables at the beginning of a document, fixed an issue with missing cell padding in imported ReqIF tables, fixed PPTX import issues related to images and charts and fixed unwanted JRE errors popping up in macro contexts
  21. Caolán McNamara (Collabora) improved the performance of spreadsheets with lots of comments, implemented Small Caps in Impress and Draw and made the CJK typography-related “Enable char unit” option take effect only when the locale is a CJK one. He also fixed crashes and issues found by code analysers
  22. Stephan Bergmann (Red Hat) did many code, test and build-related cleanups
  23. Noel Grandin (Collabora) added a new Clang plugin to look for methods in the code where there is no need to guard access to the field, because the field is never modified and another plugin to warn against using the ‘operator bool’ conversion of std::optional, fixed a

Wednesday
06 September, 2023


face
  • Early partner project call; plugged away at admin for much of the day. Weekly sales call with Eloy back. Band practice in the evening with Cedric. Worked on slides with Andras. Tessa over to see N.

face

LibreOffice Expert magazines

Recently, Linux New Media released an updated version of its “LibreOffice Expert” magazine, which contains tutorials, tips and tricks about LibreOffice. And some articles were contributed by members of the LibreOffice community! The magazines come with DVDs that include LibreOffice for Linux, Windows and macOS, alongside extra templates, extensions, videos and guidebooks.

We have some copies to give away, for schools, universities and local communities. Ideally, we’d like to get these magazines out to places where internet connections aren’t always available – so that the users can really benefit from the DVDs.

So, if you can help us to distribute these magazines, drop us a line! Please note that we can only send a maximum of five copies to any one place, to make sure many people get a chance. When you contact us, please include this information:

  1. What you want to do with the magazines
  2. How many you want
  3. The address to which we should post them

Include that information in an email to us and let’s see what we can do!

(Note: if you want to buy the magazine directly from the publisher, you can do so here.)


Tuesday
05 September, 2023


face
  • Catch up with Dennis, sync with Andras, lunch, Eloy, then Pedro. Dug at project analysis & reporting.

face

Join us in Indonesia, Bucharest and Mexico, for talks, workshops and lots of fun 😊 Click the image below to find out more…

LibreOffice conference logos


Monday
04 September, 2023


face
  • Planning calls; marketing content call, marketing team call, encouraging partner call.

Sunday
03 September, 2023


face
  • All Saints, played bass & violin; home for lunch. Babes all out for dinner with Aron - watched all of Citadel - hmm; got stuck into Dune - better.

Saturday
02 September, 2023


face
  • Got some sneaky hacking in on AVX2 optimization of the RLE code, merged in Caolan's nice XOR to packed bits magic.
  • M&D up - breakfast chez-Jules together, and chatted.
  • J's family arrived, good to see Sue & Clive&A&J, Bruce&Anne too. M&D left - went to look at a bungalow for B&A nearby. Played games with the babes.
  • After they'd left - eliminated a branch, eliminated a loop, and we have an optimized, branch-free loop that chews eight pixels each iteration: nice. Up late, slept badly - hacking before sleep considered harmful over-stimulation.

Friday
01 September, 2023


face
  • Partner and staff calls much of the day, catch up with Deirdre - our in-house compensation expert: great.
  • Wrestled RyanAir flights to the Nextcloud conference, and on to the LibreOffice conference, and then to Seafile Seadays too - should be a fun Autumn.
  • Discovered that my blog still had an issue with a Swedish conspiracy, thanks to Jeff Fortin Tam for noticing - perl -pi.bak re-wrote everything to use the wonderful web archive.
  • Spent time with M&D between times catching up with them - lovely to have them to stay.

face

This post is part of a series to describe how Writer now gets a feature to handle tables that are both floating and span over multiple pages.

This work is primarily for Collabora Online, but is useful on the desktop as well. See the sixth post for the previous part.

Motivation

The current post features sub-tasks for the multi-page floating table work that is around an explicit table overlap control that Word has (and Writer lacked so far), compatible border rendering of split tables and having footnotes in floating tables, which was not working previously.

Results so far

Regarding testing, the core.git repository has 60 files now which are focusing on correct handling of floating tables (filename matching floattable-|floating-table-). This doesn't count cases where the document model is built using C++ code in the memory and then we assert the result of some operation.

Here are some screenshots from the fixes this month:

Old, new and reference rendering after expanding an autotext.

The first screenshot shows a case where the anchor paragraph of a floating table had some autotext (e.g. "dt", which stands for dummy text), and pressing the relevant shortcut (F3) expands that autotext with the actual content. This includes changing the anchor position of the floating table, which lead to overlapping text. (A multi-page floating table has multiple anchors, we have to make sure we don't set all of them to the new value as-is.)

Old, new and reference rendering of tables with the overlap=never markup.

The next screenshot shows a case where two tables are positioned in a way that they would overlap. Word has a flag that asks the layout to still re-position the second table so the overlap doesn't happen, and now Writer supports this as well.

Old, new and reference rendering of duplicated anchor text.

This screenshot shows a bug where the anchor text on the first page was also duplicated on the second page. Now we properly start the anchor text on the last page of the floating table, like Word does.

Old, new and reference rendering of a multi-page floating table with borders.

What you can see is a floating table that has 2 pages, but simply a split of the table would result in no bottom border on the first page and no top border for the second, like perhaps you would expect it, matching Word. This is now fixed, the layout infers the border style in those cases correctly.

Old, new and reference rendering of a footnote in a floating table.

The last screenshot shows a mini-feature: it was possible to float tables and to have footnotes in tables, but not both at the same time. The screenshot shows a case where a floating table is needed, so a specific paragraph is above the table. But we couldn't float the table, because it had a footnote and that would be lost as-is. Now you can have a correct position for that paragraph


Thursday
31 August, 2023


face
  • Plugged away at normal calls, slideware.
  • Chris over for lunch to examine where best to put solar panels. Nice to have a friend with minute-by-minute weather data sets: is there more sun in the morning or afternoon for example, how does that compare with the price: are west facing panels more valuable than east ? templar is quite cool.
  • Sync with Miklos. M&D to stay, on their way back from Grant & Anne's.

face

Without enough space, one may face data corruption, which is really a terrible thing that can possibly happen for someones important data. In order to avoid falling into such a situation, it is good idea to give warning to the users in advance.

Code Pointers for generating warning for low disk space

To implement such a feature in LibreOffice, first place to look is this file sfx2/source/doc/sfxbasemodel.cxx.

The method to query the free space method should be added to the sal/osl folder in LibreOffice core source code. To add OS specific code, one may use unx and w32 folders inside it.

Please note that LibreOffice needs to know the disk space on different devices, so passing a vector containing path and free disk space is a good suggestion here.

You should know that guessing the required disk space to save the file is not easy. So, the idea is to have several megabytes free to avoid facing problems. That is in cases the file is not actually very huge. It is possible to add that limit as an option, placed in Tools > Options. These days, even 100-200 megabyte is not that much when comparing it to the very fast disk consumption by different applications like browsers and other similar huge software that people use regularly.

Another nice feature to implement is a handler that runs with low priority every several seconds and checks the available temporary space. That will help avoiding problems with saving images in that specifc temp directory.

Testing the Warning for Low Disk Space

One needs to create a test environment to actually test the patch in action. Using a small RAM drive, it is possible to do that. These commands are useful to create a 20 MB partition for testing:

mkdir /tmp/small
sudo /bin/mount -t tmpfs -o size=20m,mode=0700,uid=$USER,gid=$GROUP /dev/shm /tmp/small

After invoking the above instructions and filling the disk space, you can invoke LibreOffice with the below command to use temp drive. As a result, you will get the below error message:

No disk space error

No disk space error

But, no warning message is shown when you have some small disk space which is < 1 MB.

$ instdir/program/soffice -env:SAL_USE_VCLPLUGIN=gen -env:UserInstallation=file:///tmp/small /tmp/small/1.pptx

While having < 1 MB disk space, you will get this warning in the terminal, but not when the space is between 1 and 2 MBs.

warn:configmgr:57868:58063:configmgr/source/components.cxx:190: error writing modifications com.sun.star.uno.RuntimeException message: "cannot write to file:///tmp/small/user/nnePqE at ~/Projects/libreoffice/core/configmgr/source/writemodfile.cxx:109"

Please note that both the profile and the opened file were inside /tmp/small.

Final Words

The above issue is tdf#60909. If you like it, just follow the Bugzilla link to see more information.

To implement this feature, first you have to build LibreOffice from the sources. If you have not


face

LibreOffice Base is part of LibreOffice productivity suite that makes it possible to work with databases. It is an alternative to MS Access. One of the proposed enhancement for Base is to add a “Find and replace” dialog. Right now, a “Find” dialog is available, but it is not possible to do the replacement with the LibreOffice Base dialogs. This issue is filed as tdf#32506.

The importance

This was requested for a long time ago, but until now no developer has put time to make it a reality. This feature request has is a difficutlyIntersting EasyHack, which means it is among the EasyHacks that need more work compared to the difficutlyBeginner and difficutlyMedium ones.

I will describe the details of the task, and if you find it interesting, you can start working on it. Solving difficutlyIntersting EasyHacks is among the criterias for selecting GSoC candidates, so it worth trying if you want to be among next year GSoC candidates.

It is worth mentioning that MS Office provide a comparable functionality in “Find and replace” dialog for MS Access. Thus, it would be helpful for the people migrating from Access to Base.

Proposed UI Design for Find and Replace

Enrique, which proposed this enhancement, also provided a design for the “Search and replace” dialog.

Proposed design for LibreOffice Base Find and Replace dialog

Proposed design for LibreOffice Base Find and Replace dialog

Code Pointers For Implementing Find and Replace

As described, this enhancement will be extending the search functionality of Base with the ability to do replacement, which is not currently available from dialogs. It is however possible to use SQL queries to do the replacement. Then, the task would be extending the search dialog, and then adding the required methods that use SQL to do search and replacement.

Lionel, a LibreOffice Base developer, has suggested this path, which I have updated:

The discussed dialog is instantiated in this C++ file
dbaccess/source/ui/browser/brwctrlr.cxx:1798:

pDialog = pFact->CreateFmSearchDialog(getFrameWeld(), sInitialText, aContextNames, 0, LINK(this, SbaXDataBrowserController, OnSearchContextRequest));
pDialog->SetActiveField( sActiveField );
pDialog->SetFoundHandler( LINK( this, SbaXDataBrowserController, OnFoundData ) );
pDialog->SetCanceledNotFoundHdl( LINK( this, SbaXDataBrowserController, OnCanceledNotFound ) );
pDialog->Execute();
pDialog.disposeAndClear();

As the SetFoundHandler() uses OnFoundData, we search the same file for "OnFoundData", and find it in the line 2347:

IMPL_LINK(SbaXDataBrowserController, OnFoundData, FmFoundRecordInformation&, rInfo, void)
{
...
}

This function is called, when a match is found.

The comment above the function SetFoundHandler() describes the idea of “found handler”s:

/** The found-handler gets in the 'found'-case a pointer on a FmFoundRecordInformation-structure
(which is only valid in the handler; so if one needs to memorize the data, don't copy the pointer but
the structure).
This handler MUST be set.
Furthermore, it should be considered, that during the handler the search-dialog is still modal.
*/
void SetFoundHandler(const Link<FmFoundRecordInformation&, void>& lnk)
{
...
}

In the above mentioned file, brwctlr.cxx, this is the start of handler function:

Reference< css::sdbcx::XRowLocate > xCursor(getRowSet(), UNO_QUERY);

This "xCursor" is the form object. The brwctlr.cxx is only for grid (table) controls. For other controls, one should look into


Wednesday
30 August, 2023


face
  • Exciting chat with Gulsah, sync with Hubert, interesting call with lawyer. Worked on slideware.

Tuesday
29 August, 2023


face
  • Call with Andras, admin, call with Caolan, admin.
  • Up late poked at some AVX2 vpermd LUT building and some mechanics around that.

Monday
28 August, 2023


face
  • Out for a run with J. planning call much of the morning, admin.

Sunday
27 August, 2023


face
  • All Saints, home made pizza, slept a lot.

Saturday
26 August, 2023


face
  • M. finished her chess-board, lots of planing and orbital sanding action; bought some clear varnish for a nice finish - job mostly done: good.

Friday
25 August, 2023


face
  • Brief Partner call, customer call, admin, partner call.
  • Poked at ChatGPT - perhaps it can help me optimize my code; gave it some RLE code initRow that could benefit from some love; not impressed. Some great abstract tips eg.
    1. Avoid Unnecessary Dynamic Memory Allocation:
    But it came up with a change (complete with comment) that was:
    -    uint32_t scratch[width];
    +    uint32_t *scratch = new uint32_t[width]; // Allocate on the stack
    Not ideal. I was hoping for some clever idea around something new VPCONFLICTD or better some shifts and VPCMPD or somesuch to perhaps make performance better. At least it gave some good factual lookup answers like a prettier technical search engine.
  • Mental note to read Paul Graham on How to do great work - and do better work.
  • Read code, chased a bug collaboratively - fun; filed more tickets.

face

The past four months working on LibreOffice for Google Summer of Code 2023 have been an amazing learning experience. With the help of mentors Thorsten, Heiko, and Hossein, I implemented features to improve the user experience around digital signing and encryption like remembering recipients, better recipient selection UI, fast searching/filtering of keys, and documentation. My 12 patches were merged and it was incredible contributing to open source with the friendly LibreOffice community. I look forward to more FOSS contributions in the future!

Older blog entries ->