Georg Füchsle created ODFTOOLKIT-435:
----------------------------------------

             Summary: the call of TextSelection.createSpanElement() adds 
invalide line-breaks
                 Key: ODFTOOLKIT-435
                 URL: https://issues.apache.org/jira/browse/ODFTOOLKIT-435
             Project: ODF Toolkit
          Issue Type: Bug
          Components: simple api
            Reporter: Georg Füchsle


The call of TextSelection.createSpanElement() adds invalide line-breaks to the 
father paragraph if the paragraph has line-breaks included.

For example:
We use a Paragraph "para" that correspondes to following xml:

{{<text\:p text:style-name="a4cb5f8">before 
lb<text:line-break></text:line-break>after lb</text\:p>}}

       {{Paragraph para =  ...}}
       {{TextSelection tSel = TextSelection.newTextSelection(null,}}
                  {{para.getTextContent().replaceAll("\r\n","\n"),}}
                  {{para.getOdfElement(), 0);}}
        {{TextSpanElement tspan = tSel.createSpanElement();}}

After the call " tSel.createSpanElement()" the text is wrapped into a span but 
the span is followed by an additional line-break:

{{<text\:p text:style-name="a4cb5f8"><text:span>before 
lb<text:line-break></text:line-break>after 
lb</text:span>{color:red}<text:line-break></text:line-break>{color}</text\:p>}}


In our opinion the reason is in the function:
     {{private void TextSection.delete(int fromIndex, int leftLength, Node 
pNode)}}
Here  the text is deleted from the paragraph but the line-breaks will remain. 
After the call of delete() the text is reentered into the new span. In this way 
the line-break exits twice: Once inside the span once after the span.



I attach a path-file including a JUnit test (SpanTest.testCreateSpanElement) 
that demonstrates this behavior.
The path also includes a manipulated function
     {{TextSelection.createSpanElementInclLineBreak()}}
that itself calls again a manipulated function 
     {{TextSelection.deleteInclLineBreak(int fromIndex, int leftLength, Node 
pNode)}} 
instead of TextSelection.delete (...). With this function the test will succeed.

What I do not have in track:
1. May the function delete(...) be replaced in everey circumstances?
2. Should also other tags than 'line-break' be considered as well? (for example 
'tab') ?







--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to