I think TLF is more aggressive than it used to be in removing empty spans.

I’ll try to look into this when I find the time.

On Apr 13, 2016, at 1:22 PM, Mihai Chira <mihai.ch...@gmail.com> wrote:

> Hey guys, I feel I've done as much as I can on this ticket to pave the
> way for someone with more TLF knowledge to hopefully have an easy time
> understanding and fixing it. Do any of you have time to take a look?
> Many thanks!
> 
> On 13 April 2016 at 11:50, Mihai Chira (JIRA) <j...@apache.org> wrote:
>> 
>>    [ 
>> https://issues.apache.org/jira/browse/FLEX-35078?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15238824#comment-15238824
>>  ]
>> 
>> Mihai Chira edited comment on FLEX-35078 at 4/13/16 9:49 AM:
>> -------------------------------------------------------------
>> 
>> * in {{TextFlowLine.makeSelectionBlocks()}} 
>> {{textLine.getAtomIndexAtCharIndex(27) == -1}} although 
>> {{textLine.rawTextLength == 37}}
>> * after validation (see the *Workaround* in the ticket description) the text 
>> flow
>> {noformat}
>> <TextFlow whiteSpaceCollapse="preserve" version="3.0.0" 
>> xmlns="http://ns.adobe.com/textLayout/2008";><p><span 
>> fontSize="15"></span><span>The bug is in the function 
>> TextFlowLine.adjustEndElementForBidi</span></p></TextFlow>
>> {noformat} is converted into {noformat}
>> <TextFlow whiteSpaceCollapse="preserve" version="3.0.0" 
>> xmlns="http://ns.adobe.com/textLayout/2008";><p><span>The bug is in the 
>> function TextFlowLine.adjustEndElementForBidi</span></p></TextFlow>{noformat}
>> (where the empty span is where the bullet text used to be) and the fatal 
>> isn't thrown.
>> 
>> 
>> was (Author: evolverine):
>> * in {{TextFlowLine.makeSelectionBlocks()}} 
>> {{textLine.getAtomIndexAtCharIndex(27) == -1}} although 
>> {{textLine.rawTextLength == 37}}
>> * after validation (see the *Workaround* in the ticket description) the text 
>> flow
>> {noformat}
>> <TextFlow whiteSpaceCollapse="preserve" version="3.0.0" 
>> xmlns="http://ns.adobe.com/textLayout/2008";><p><span 
>> fontSize="15"></span><span>The bug is in the function 
>> TextFlowLine.adjustEndElementForBidi</span></p></TextFlow>
>> {noformat} is converted into {noformat}
>> <TextFlow whiteSpaceCollapse="preserve" version="3.0.0" 
>> xmlns="http://ns.adobe.com/textLayout/2008";><p><span>The bug is in the 
>> function TextFlowLine.adjustEndElementForBidi</span></p></TextFlow>{noformat}
>> where the empty span is where the bullet text used to be.
>> 
>>> Fatal when SelectionManager tries to reapply selection onto changed textFlow
>>> ----------------------------------------------------------------------------
>>> 
>>>                Key: FLEX-35078
>>>                URL: https://issues.apache.org/jira/browse/FLEX-35078
>>>            Project: Apache Flex
>>>         Issue Type: Bug
>>>         Components: Spark: RichEditableText, TLF
>>>   Affects Versions: Apache Flex 4.15.0
>>>           Reporter: Mihai Chira
>>>           Assignee: Mihai Chira
>>>            Fix For: Apache Flex 4.16.0
>>> 
>>>        Attachments: Main.mxml
>>> 
>>> 
>>> *Steps to reproduce*:
>>> * run the attached mxml
>>> * click on the "Bullets" button
>>> *Expected results*: the bullet text is removed from the paragraph and the 
>>> RichEditableText is focused.
>>> *Actual results*: the bullet text is removed, but when the focus moves back 
>>> to the RichEditableText component, the following fatal is thrown:
>>> {noformat}
>>> [Fault] exception, information=RangeError: Error #2006: The supplied index 
>>> is out of bounds.
>>> at flash.text.engine::TextLine/getAtomBidiLevel()
>>> at 
>>> flashx.textLayout.compose::TextFlowLine/adjustEndElementForBidi()[C:\Users\evolverine\Adobe
>>>  Flash Builder 
>>> 4.7\FLEX-33058\src\flashx\textLayout\compose\TextFlowLine.as:2499]
>>> at 
>>> flashx.textLayout.compose::TextFlowLine/makeSelectionBlocks()[C:\Users\evolverine\Adobe
>>>  Flash Builder 
>>> 4.7\FLEX-33058\src\flashx\textLayout\compose\TextFlowLine.as:1812]
>>> at 
>>> flashx.textLayout.compose::TextFlowLine/http://ns.adobe.com/textLayout/internal/2008::calculateSelectionBounds()[C:\Users\evolverine\Adobe
>>>  Flash Builder 
>>> 4.7\FLEX-33058\src\flashx\textLayout\compose\TextFlowLine.as:1517]
>>> at 
>>> flashx.textLayout.compose::TextFlowLine/getSelectionShapesCacheEntry()[C:\Users\evolverine\Adobe
>>>  Flash Builder 
>>> 4.7\FLEX-33058\src\flashx\textLayout\compose\TextFlowLine.as:1428]
>>> at 
>>> flashx.textLayout.compose::TextFlowLine/createSelectionShapes()[C:\Users\evolverine\Adobe
>>>  Flash Builder 
>>> 4.7\FLEX-33058\src\flashx\textLayout\compose\TextFlowLine.as:1664]
>>> at 
>>> flashx.textLayout.compose::TextFlowLine/http://ns.adobe.com/textLayout/internal/2008::hiliteBlockSelection()[C:\Users\evolverine\Adobe
>>>  Flash Builder 
>>> 4.7\FLEX-33058\src\flashx\textLayout\compose\TextFlowLine.as:2196]
>>> at 
>>> flashx.textLayout.container::ContainerController/http://ns.adobe.com/textLayout/internal/2008::addSelectionShapes()[C:\Users\evolverine\workspace\tlf\textLayout\src\flashx\textLayout\container\ContainerController.as:2920]
>>> at 
>>> flashx.textLayout.edit::SelectionManager/addSelectionShapes()[C:\Users\evolverine\workspace\tlf\textLayout\src\flashx\textLayout\edit\SelectionManager.as:1240]
>>> at 
>>> flashx.textLayout.edit::SelectionManager/refreshSelection()[C:\Users\evolverine\workspace\tlf\textLayout\src\flashx\textLayout\edit\SelectionManager.as:1272]
>>> at 
>>> flashx.textLayout.edit::SelectionManager/http://ns.adobe.com/textLayout/internal/2008::setSelectionFormatState()[C:\Users\evolverine\workspace\tlf\textLayout\src\flashx\textLayout\edit\SelectionManager.as:896]
>>> at 
>>> flashx.textLayout.edit::SelectionManager/focusInHandler()[C:\Users\evolverine\workspace\tlf\textLayout\src\flashx\textLayout\edit\SelectionManager.as:2279]
>>> at 
>>> flashx.textLayout.container::ContainerController/focusInHandler()[C:\Users\evolverine\workspace\tlf\textLayout\src\flashx\textLayout\container\ContainerController.as:2452]
>>> at 
>>> flashx.textLayout.container::TextContainerManager/focusInHandler()[C:\Users\evolverine\workspace\tlf\textLayout\src\flashx\textLayout\container\TextContainerManager.as:2089]
>>> at 
>>> spark.components.supportClasses::RichEditableTextContainerManager/focusInHandler()[C:\Users\evolverine\workspace\flex-sdk\frameworks\projects\spark\src\spark\components\supportClasses\RichEditableTextContainerManager.as:642]
>>> at 
>>> flashx.textLayout.container::ContainerController/http://ns.adobe.com/textLayout/internal/2008::requiredFocusInHandler()[C:\Users\evolverine\workspace\tlf\textLayout\src\flashx\textLayout\container\ContainerController.as:2470]
>>> at flash.display::Stage/set focus()
>>> at 
>>> mx.core::UIComponent/setFocus()[C:\Users\evolverine\workspace\flex-sdk\frameworks\projects\framework\src\mx\core\UIComponent.as:10437]
>>> at 
>>> spark.components::RichEditableText/setFocus()[C:\Users\evolverine\workspace\flex-sdk\frameworks\projects\spark\src\spark\components\RichEditableText.as:3122]
>>> at Main/bulletList_clickHandler()[C:\Users\evolverine\Adobe Flash Builder 
>>> 4.7\FLEX-33058\src\Main.mxml:39]
>>> at Main/__bulletsButton_click()[C:\Users\evolverine\Adobe Flash Builder 
>>> 4.7\FLEX-33058\src\Main.mxml:71]
>>> {noformat}
>>> *Workaround*: call {{display.validateNow();}} before {{display.setFocus();}}
>>> *Notes*:
>>> * couldn't reproduce the bug with only one line; we seem to need the text 
>>> to wrap around the second line.
>>> * couldn't reproduce the bug if the span representing the bullet text 
>>> wasn't set to an explicit font size (of any value).
>>> * could reproduce the bug with many random (non-empty) strings for the 
>>> bullet text, including one space.
>>> * could reproduce the bug when I set the fontWeight instead of the fontSize 
>>> on the bullet span. It seems that anything that will get the bullet placed 
>>> into a separate span rather than merged with the span containing the main 
>>> text will reproduce the bug.
>> 
>> 
>> 
>> --
>> This message was sent by Atlassian JIRA
>> (v6.3.4#6332)

Reply via email to