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

Reply via email to