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)