Updates on various stuff

Ok. Here is some updates on some of the stuff I’ve been doing lately. I picked the ones that are particularly worth mentioning.

Saving documents

There are two changes related to the document-saving functionality that I’d like to mention. The first one is the new icon in the document modified status window. As I blogged before, I had made a minor polish to the existing document modified status window, to show the status graphically instead of simply showing ‘*’ when the document is modified. The only problem was that the icon I used to fill that space was pretty lame and ugly. But thanks to jimmac, we now have a much better icon to show the modified status (see below).

The second thing is with the save icon itself. It has been known to us that some users want the ability to always save the document even when the document is not considered “modified”, while others want the save action disabled when the document is not “modified”. I quote the term modified here because even when the content of the document has not changed, some peripheral data may have changed, such as the zoom level, cursor position, active sheet and so on and so forth. These peripheral data (that we call the “view data”) are still stored with the document, but changes in these data do not set a document modified status. So, if you wanted to save your document with the cursor at a particular location, a certain sheet activated and the zoom level set to a certain level, you had to make a fake change to the content to be able to save the document with the view data change. The solution we had employed previously was to always enable this only for Calc, where the request for this behavior was greatest. However, some users still found it confusing that only Calc enables the save all the time while the rest of the applications didn’t. Also, a lot of users used the save icon itself to check whether their document has been modified or not even in Calc.

So, I’ve decided to make it a configuration option. That way we can keep both camps happy. :-) Here is the new check box to toggle this behavior:

Anyway, I hope some of you guys will find this useful, or at least will not find it annoying.

Performance improvement

Another stuff worth mentioning is the improvement I made on Calc’s pagination performance. Pagination refers to the action of calculating appropriate positions to set page borders over the entire sheet based on the current page size, row/column sizes, presence of manual page breaks and several other factors. I had previously worked on optimizing this when we increased Calc’s row limit to 1 million rows (as I also mentioned during my talk in Orvieto), but apparently that optimization still had massive room for improvement; the test document I had took 7 minutes to perform pagination during printing! Granted, the document had 98 pages to print, but I bet that no one wants to wait that long to print even if the document has that many pages.

Long story short, I have reduced the duration from 7 minutes to roughly 35 seconds. Though I’m very happy with the result, it required a large amount of refactoring to get to that point, and when a large amount of code changes, the chance of introducing regressions unfortunately goes up. So, please pay special attention to Calc’s pagination behavior and its handling of row heights, and if you notice any problems, I’d like to hear from you, preferably with a test document or two.

DataPilot field popup window

Last but not least, I’d like to mention this one. The DataPilot field popup window has been in the works for quite some time since 3.1. I have blogged about the initial version and the 2nd incarnation. Now the 3rd incarnation is on the horizon. As they say, a picture is worth a thousand words. So without further ado, let’s take a look at the screenshot:
This version has a “toggle all” check box to quickly turn on and off all field members, “select only current” button to only select currently selected member, and “unselect only current” button to select all but the current member. Also not visible on this screenshot is the support for Gnome accessibility framework, which is also new in this version.


These are the highlights of some of the stuff I’ve been doing recently. There are more things on the horizon, so stay tuned.

8 thoughts on “Updates on various stuff”

  1. I think that “always allow saving of document” is not clear enough: everyone want to always save the files! Something like “allow saving even if there was no change” is better, IMHO. Anyway, great work!

    1. @RGB: Yeah I agree. I will change the wording a bit to make it more explicit. Good point!

  2. Awesome work Kohei. I would love to see those sexy filter dialogs that you have in data pilots also working in automatic column filters, especially the check boxes. You can get the same functionality with the standard filters, but it is not nearly as easy as the check boxes in the data pilot filter. Keep up the good work.

  3. @Gary: yup, I designed that popup to be reusable precisely for replacing the current un-sexy autofilter dialog. So, consider that one coming. :-)

  4. Hi Kohei,
    my question is off-topic, anyways, I wonder if OOo is getting optimized regarding CPU usage (catchword netbooks). I read that OOo is “responsible” for waking up the CPU for no real purpose resulting in a lower battery life. I learned about this while reading information about powertop by Intel. I guess your performance improvement will surely lead to a longer battery life though in this case the CPU has something to do. Hope you know what I mean.


    P.S.: Great stuff, thx.

  5. @JimYC: Yeah, actually Caolan McNamara mentioned about that in his blog. He says the real culprit for waking up the CPU was some never-ending timers that keep running even at idle. AFAIK he is working on that. With that said, to answer your question, any performance optimization in general cuts down wasteful CPU cycles, so it will in theory improve the battery life.

  6. A thanks for this information. I must have overseen the post in Caolans blog. Some improvements are to come in 3.2 and 3.3. That’s really good to know.


Comments are closed.