DEV300_m54

August 7th, 2009 by Caolan

DEV300_m54 callcatcher results show a modest -8 to 959 unused methods though sw sneaks in a new unused method.

ms protected sections

August 3rd, 2009 by Caolan

So even if only one section in MS Word is protected against changes, then Word disables the ability to track-changes or add comments globally for *ALL* sections. Unfortunately the Table of Contents in OOo is by default a read-only element, because editing it is a bad thing to to as your changes will be blown away the next time the toc is automatically updated. So…

OOo->export to .doc->read-only OOo toc becomes a word toc in a readonly section->word refuses to insert comments anywhere in the doc, even though you can manually edit the rest of the sections in word.

Sigh, *drums fingers*. Basically it’s bustage in word isn’t it, but still a problem. No bug in OOo. Changing the OOo default to make TOCs editable would “fix” it, but suboptimal. Not exporting readonly sections as such is wrong as well.

Clearly, hacking the special case of exporting a TOC that is set to read-only to output an editable section is broken too, but might be the best solution.

Expand “Defaults”

July 29th, 2009 by Caolan

Mock-up of proposed changes to the options dialog to expand the Defaults to show what they are, adding a “Default” entry for Document Language that get resolved at each-start rather than selecting a Document Language at first-start that sticks permanently.

New Print Dialog

July 23rd, 2009 by Caolan

So I’ve been tracking pl’s New Print UI stuff (details) with an eye to merging it with the Gtk Print Dialog extensions we carried for a while in Fedora. Hacking in the UI part of it today gives custom tabs something like…

Writer


Calc

Math

Impress


Spreadsheet UI tracks the gnumeric-alike workaround of placing the “print workbook sheets” stuff into a custom tab.

DEV300_m53

July 23rd, 2009 by Caolan

+2 unused methods in DEV300_m53

DEV300_m52 callcatcher

July 10th, 2009 by Caolan

DEV300_m52 callcatcher report (skipped announcing DEV300_m51 as it was the same as DEV300_m50). +8 unused methods

continuous record of last 5 seconds

July 9th, 2009 by Caolan

Really wish Istanbul or something like it had a “continuous record of last 5 seconds” option or something like that to capture what people were doing when the bad thing happened. Relying on memory is generally hopeless of course, and reported descriptions of a problem often wildly throw mismatching terminology around the place and omit the exact steps used.

notes on OOo and ARM

June 29th, 2009 by Caolan

To build OOo under ARM, (an apparently massively popular hobby in China at the moment for some reason other), try downloading the normal source from www.openoffice.org and…

./configure
make

that should go a long way. Though for < 3.2 you may need (ooo#100469) applied.

Of course, given that ARM isn’t generally fast, then there are likely cross-compilers, qemu-user hackery, or other stuff involved, but nothing specific to OOo, so if you can, say, build gedit with your environment, then OOo should generally build fine too. Try the same hackery you’d try with a simpler project with OOo.

And it is not porting something to simply build it. You actively have to change something before bandying around the term porting

MS XML decryption

June 26th, 2009 by Caolan

Based on Bill Seddon’s rather excellent notes I’ve implemented decrypting MS XML documents, though only tested it on .xlsx files protected with the default VanillaSweatshop password.

MSO new-format encrypted documents aren’t in .zip format, but instead the .zip is encrypted and bundled as a stream into a classic OLE2 structured storage container which has some other streams that describe how it’s encrypted. Unlike our own which remain as .zips with encrypted streams.

DEV300_m50

June 11th, 2009 by Caolan

DEV300_m50 callcatcher report, now back under 1000 again as chart2 unused removal etc. comes on stream

line numbering doc odt im/ex

June 4th, 2009 by Caolan

In both word (2007) and writer (3.1.0) paragraphs can opt out of line numbering at a paragraph level. On the other hand though, restarting line numbering is done at a paragraph level in writer, but at a section level in word. Which is unfortunate for an interoperability point of view.

For doc->odt conversion it’s fairly easy, just whack the restart value from the word section onto the first paragraph following that section break and all is well, though we have to be careful when munging two facts from the doc of a) paragraph opts-in/out of line numbering and b) section declares that line-numbering starts at value X, into one writer fact of “line numbering properties for a paragraph to not overwrite the other half of the fact.

On odt->doc, its not so easy. In the case where we’re re-exporting a odt which was imported from a doc then we can on export of a section have a quick peek to see if the first paragraph of that section happens to have a restart line numbering property and if so place it on the exported section. That’ll take care of doc->odt->doc round-tripping at least. where the final doc is the same as the initial doc

But for the generic odt->doc case we can’t be sure of a handy section existing right before a paragraph that uses restart line numbering so as to load the paragraph restart number onto the section. I guess we could add that circumstance to the already complicated reasons to export a section logic, its not an appealing solution, but the only one I can think of

non-free dictionaries that might be intended to be free

May 28th, 2009 by Caolan

Dictionaries available for OOo with problematic/no licence that can’t be included in Fedora, etc. possibly through oversight

Amharic/Tigrigna: Non-Commercial use
Tatar: No licence information
Akan: No license information
Luxembourgish: EUPL v1.0
Mossi: No licence information
Gascon: BY-NC-ND

DEV300_m49

May 27th, 2009 by Caolan

DEV300_m49 callcatcher results give xmlhelp,sccomp and lingucomponent as joining ranks of unused-method free.

cmcfixes59 will make autodoc unused-free, which should drop us under 1000, hopefully permanently :-)

unifypaper01 will add the Long Bond longer Legal paper size used in the Philippines, centralize all our paper-size to paper types maps, and centralize our various territory to default paper size maps and align them with the CLDR 1.7 table. glibc will also follow CLDR 1.7 in the next release, The upshot should be that Gnome, OOo etc. will/can agree on the default paper size out of the box

xresgrind

May 21st, 2009 by Caolan

So, “xresgrind”, my unholy overkill union of valgrind with X Pixmap/Window/etc. tracking lurched to life earlier. Checking it against OOo to see if it would have been able to automatically detect the dread pixmap leak of i85321 (which is long fixed, just re-introduced it locally to have a look-see) shows the expected correct results of…

==13354== Resource 0x46002fb of class 2 never released, acquired at
==13354==    at 0x400E2A6: XCreatePixmap (xr_intercepts.c:255)
==13354==    by 0x6D971F7: ???
==13354==    by 0x548154F: SalGraphics::DrawAlphaBitmap(SalTwoRect const&, SalBitmap const&, SalBitmap const&, OutputDevice const*) (salgdilayout.cxx:793)
==13354==    by 0x541322D: OutputDevice::ImplDrawAlpha(Bitmap const&, AlphaMask const&, Point const&, Size const&, Point const&, Size const&) (outdev2.cxx:1983)
==13354==    by 0x5413CF8: OutputDevice::ImplDrawBitmapEx(Point const&, Size const&, Point const&, Size const&, BitmapEx const&, unsigned long) (outdev2.cxx:891)
==13354==    by 0x54141FA: OutputDevice::DrawBitmapEx(Point const&, Size const&, Point const&, Size const&, BitmapEx const&) (outdev2.cxx:788)
==13354==    by 0x53E1C6E: ImplImageBmp::Draw(unsigned short, OutputDevice*, Point const&, unsigned short, Size const*) (impimage.cxx:550)
==13354==    by 0x54145B7: OutputDevice::DrawImage(Point const&, Image const&, unsigned short) (outdev2.cxx:1204)

Cool :-)

DEV300_m48

May 13th, 2009 by Caolan

DEV300_m48 callcatcher results. xml2cmp now unused method free, on the other hand svx has 35 new unused methods after the new code shuffle in that area

Messing with the Java Brand

May 2nd, 2009 by Caolan

Sun Java Desktop System (*)

Baigent: “The #9 Reason that Sun is Setting: Messing with the Java Brand: … the ill-fated Sun Java Desktop System … [it] was no more about Java than is Mac OS X (which, like JDS, contains a Java SE runtime)”

Yup, that was about the time I left Sun, rather gladly as there was clearly some

‘When I use a word,’ Humpty Dumpty said, in a rather scornful tone,’ it means just what I choose it to mean, neither more nor less.’

going on. It was a totally inane name, the Sun Java Desktop System simply wasn’t a Java desktop system, everyone knew it, nailing the word Java onto everything whether it had anything to do with Java or not was fingernail-pullingly painful. It should have been shot down by an independent advertising watchdog :-)

*Contains only trace elements of Java

DEV300_m47

May 2nd, 2009 by Caolan

DEV300_m47 results, down 98 methods as bfshrink02 and sb109 get integrated, stoc, cppuhelper and configmgr no longer have any unused methods. binfilter’s unused list shrinks to effectively unused destructors which indicate leaks rather than code to be removed. sc continues to increase however. xml2cmp stuff will get removed in cmcfixes57.

The pap language code refers to both of the Papiamentu/Papiamento dialects, whose spelling differs. Of the major three islands speaking it we have:
Papiamentu
+ Curaçao
+ Bonaire
Papiamento
+ Aruba
Where, Aruba is a former Netherlands Antilles territory with an assigned territory code of “AW”, and the other two are current (for the moment anyway) Netherlands Antilles territories which has an assigned territory code of “AN”, so the glibc locale of pap_AN presumably should best be used to indicate the Papiamentu dialect rather than Papiamento

ternary operator blues

April 15th, 2009 by Caolan

ISO/IEC 9899:TC3 Committee Draft — Septermber 7, 2007 WG14/N1256

6.5.15 Conditional operator

If both the second and third operands have arithmetic type, the result type that would be determined by the usual arithmetic conversions, were they applied to those two operands, is the type of the result.

i.e.

#include <stdio.h>

void SetLong (long foo)
{
    fprintf(stderr, "Got a long of %ld\n", foo);
}

int main(void)
{
    int a = -10;
    unsigned int b = 10;

    /*int converted to long*/
    SetLong( a );
    /*unsigned int converted to long*/
    SetLong( b );
    /* int and unsigned int results converted to unsigned int,
       unsigned int then converted to long. i.e. totally different
       from if (1) SetLong(a); else SetLong(b); */
    SetLong( 1 ? a : b );

    return 0;
}

On 32bit Linux long and int are the same size, so it doesn’t matter and we get -10, 10, -10, on 64bit they’re not and so results in -10, 10 and 4294967286

DEV300_m46

April 13th, 2009 by Caolan

DEV300_m46 callcatcher results, +32 to 1181 unused methods. (as against that, binfilter and chart2 have pending workspaces to strip them of a pile of methods)

casual code annotation

April 10th, 2009 by Caolan

I want a sort of casual code annotation wiki-thing where I can annotate code in passing without having to check it in to a formal source repository,