I noticed a strange behaviour when using macros to insert rows into a
text table that contains a nested table. Depending on the location of
the nested table, adding a row into the outer table may actually add it
to the inner table. I wrote a simple test to demonstrate the problem.
Two macros - test_insert_1 and test_insert_2 are identical except that
they insert a child table into different cells of the outer table. When
afterwards I try to insert a row into the outer table in one case I end
up with the extra row in the inner table instead. Running the top level
subroutine test_insert_row and calling either test_insert_1 or
test_insert_2 should demonstrate the problem.
I am running
Version 4.0.2.2 (Build ID: 400m0(Build:2)) on Ubuntu
Thanks
sub test_insert_row
If ThisComponent.TextTables.hasByName("Table1") Then
ThisComponent.Text.removeTextContent(ThisComponent.TextTables.getByName("Table1"))
End If
test_insert_1 'This works as expected
'test_insert_2 'This does not
End sub
sub test_insert_1
Dim outer As Object
Dim inner As Object
Dim cell As Object
outer = ThisComponent.createInstance("com.sun.star.text.TextTable")
inner = ThisComponent.createInstance("com.sun.star.text.TextTable")
ThisComponent.Text.getEnd().getText().insertTextContent(ThisComponent.Text.getEnd(),
outer, False)
cell = outer.getCellByPosition(1,1)
cell.getText().insertTextContent(cell.getText().getEnd(), inner, False)
MsgBox "Before insert " & outer.getRows().getCount()
outer.getRows().insertByIndex(outer.getRows().getcount(), 1)
MsgBox "After insert " & outer.getRows().getCount()
end sub
sub test_insert_2
Dim outer As Object
Dim inner As Object
Dim cell As Object
outer = ThisComponent.createInstance("com.sun.star.text.TextTable")
inner = ThisComponent.createInstance("com.sun.star.text.TextTable")
ThisComponent.Text.getEnd().getText().insertTextContent(ThisComponent.Text.getEnd(),
outer, False)
cell = outer.getCellByPosition(0,1)
cell.getText().insertTextContent(cell.getText().getEnd(), inner, False)
MsgBox "Before insert " & outer.getRows().getCount()
outer.getRows().insertByIndex(outer.getRows().getcount(), 1)
MsgBox "After insert " & outer.getRows().getCount()
end sub
--
To unsubscribe e-mail to: [email protected]
Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/global/users/
All messages sent to this list will be publicly archived and cannot be deleted