Hi Nicholas,

Thank you very much for this catch!
I had it on my list to look into it myself, as I wondered as well why
the height was never adjusted.

Would you like to write an issue (reference to this mail as description
would be sufficient - ie.
https://mail-archives.apache.org/mod_mbox/incubator-odf-dev/201402.mbox/%3CCANgbAJjqEOPE%3DecCZwUVddbNm9DDhYsHs7OVRmBx6O_4h2XV8A%40mail.gmail.com%3E)
and add a patch - a regression test would be splendid! :)
I will review and push it after the release - unless anyone subjects and
would like it already in.

More detailed answer below..

Am 20.02.2014 10:56, schrieb Nicholas Evans:
> Dear ODF-Devs,
>
> I have observed a problem with the setHeight() method of the Row class
> of the Simple API.
> When I use this method to set the height of a row, the row height does
> not change.  This is because the associated <table:table-row> element
> does not have a table:style-name attribute that points to the desired
> style.
>
> Looking in the code for the setHeight method (in Row.java), I see that
> this attribute is removed before the property is set:
>
> maRowElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(),
> "style-name");
> maRowElement.setProperty(rowHeightProp, sHeightIN);
>
> I have run a test (attached), and if I set the property without
> removing the style-name attribute then everything works as expected. 
>
> Is there a reason this attribute is being removed?  Comparing with the
> similar setColumnWidth method of the Column class, this removal of the
> attribute does not happen there.
>
> Should this call to removeAttributeNS be removed?
>
Yes, please remove it! The semantic would be otherwise that the set of
the height would clear the table from all other styles.
The change of a format property is in general seen as an change of this
property only.

PS: Your attachments are more than half the way to a regression test.
You might want to change the name of the empty spreadsheet test document
to "empty.ods" and move your test method into the test folder (you might
even add it to an existing class - act on will) and reuse the load/save
mechanism of the tooling, aka:
    static final String SOURCE = "empty.ods";       
    static final String TARGET = "rowHeightTest.ods";

SpreadsheetDocument spreadsheet =
SpreadsheetDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(SOURCE));
//...
ResourceUtilities.newTestOutputFile(TARGET)

I suggest the regression test would check if the value was correctly set.

Many thanks,
Svante
> Thanks,
> Nick
>

Reply via email to