[ https://issues.apache.org/jira/browse/FLEX-33295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13530129#comment-13530129 ]
Alex Harui commented on FLEX-33295: ----------------------------------- If it is the issue I think it is, it will not be resolved in the next version of TLF. Also, you are just as likely to run into this problem on Mac as Windows. All you need is the right mixture of sizes of fonts and the component. The problem is that wrapped text can be of any size, and there are corner cases where the appearance of the scrollbar will cause text to wrap differently and cause fewer visible lines (even though there is always more off-screen). TLF guesses at its size based on the lines it did draw and when it sees there are fewer visible lines, it picks a smaller size, which causes Flex code to remove the scrollbar (which brings in more visible lines) and measure again only to decide we need the scrollbar, and we go around and around and around. There are two common workarounds for this situation. One is to constrain either the width or height of the TextArea to some fixed value. If you wanted to use percentWidth so the TextArea would stretch, add some resize handler to the parent to set a new width instead. The other is to not use the TextArea's scrollbar and size the TextArea to the full height of the text and put it in a Scroller. This will, of course, use lots of CPU and memory if there is a lot of text, but you will also get faster scrolling, so there is a tradeoff there. The fix for this is a pretty disruptive change to the layout subsystem in Flex, which is why it hasn't been implemented (actually, it was implemented, then pulled because the Adobe QA team didn't have time to test it). Hopefully, one of the workarounds will be sufficient for you. > Flash player will go into an infinite loop on certain cases of trying to wrap > text. > ----------------------------------------------------------------------------------- > > Key: FLEX-33295 > URL: https://issues.apache.org/jira/browse/FLEX-33295 > Project: Apache Flex > Issue Type: Bug > Components: Spark: TextArea > Affects Versions: Adobe Flex SDK 4.6 (Release) > Environment: Win 7x64, Win 8x64 > Flash Player 11.4, Flash Player 11.5 > Mac OS works fine. > Reporter: Tyler Hansen > Labels: textarea > > Setting text on a spark textarea depending on how the word wrap lays, will > crash flashplayer on windows only with this error: > Error: Error #1502: A script has executed for longer than the default timeout > period of 15 seconds. > at > flashx.textLayout.elements::FlowElement/getAbsoluteStart()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\elements\FlowElement.as:888] > at flashx.textLayout.compose::TextFlowLine/get > location()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\TextFlowLine.as:351] > at flashx.textLayout.compose::TextFlowLine/get > spaceBefore()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\TextFlowLine.as:504] > at > flashx.textLayout.compose::BaseCompose/fitLineToParcel()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\BaseCompose.as:1613] > at > flashx.textLayout.compose::ComposeState/composeNextLine()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\ComposeState.as:399] > at > flashx.textLayout.compose::BaseCompose/composeParagraphElementIntoLines()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\BaseCompose.as:791] > at > flashx.textLayout.compose::BaseCompose/composeParagraphElement()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\BaseCompose.as:688] > at > flashx.textLayout.compose::ComposeState/composeParagraphElement()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\ComposeState.as:316] > at > flashx.textLayout.compose::BaseCompose/composeBlockElement()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\BaseCompose.as:358] > at > flashx.textLayout.compose::BaseCompose/composeInternal()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\BaseCompose.as:673] > at > flashx.textLayout.compose::ComposeState/composeInternal()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\ComposeState.as:143] > at > flashx.textLayout.compose::BaseCompose/composeTextFlow()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\BaseCompose.as:458] > at > flashx.textLayout.compose::ComposeState/composeTextFlow()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\ComposeState.as:106] > at > flashx.textLayout.compose::StandardFlowComposer/http://ns.adobe.com/textLayout/internal/2008::callTheComposer()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\StandardFlowComposer.as:676] > at > flashx.textLayout.compose::StandardFlowComposer/internalCompose()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\StandardFlowComposer.as:760] > at > flashx.textLayout.compose::StandardFlowComposer/updateToController()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\StandardFlowComposer.as:556] > at > flashx.textLayout.compose::StandardFlowComposer/updateAllControllers()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\StandardFlowComposer.as:517] > at > flashx.textLayout.container::TextContainerManager/updateContainer()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\container\TextContainerManager.as:1343] > at > spark.components::RichEditableText/updateDisplayList()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\RichEditableText.as:2974] > at > mx.core::UIComponent/validateDisplayList()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:8999] > at > mx.managers::LayoutManager/validateDisplayList()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:736] > at > mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:819] > at > mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1180] > I have been able to recreate this with a real use client case, as well as > some lorem ipsum text of the same length(but not every time since the lorem > ipsum text is randomly generated). Removing the first two words in the text > fixes the issue, however still remains when removing the same amount of > characters at the end of the text instead. This leads me to believe this is > a random text wrapping issue. > We tried testing on a mac and everything ran as expected, it appears to be a > windows only issue. > Here is some simple code to reproduce the issue: > <?xml version="1.0" encoding="utf-8"?> > <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" > xmlns:s="library://ns.adobe.com/flex/spark" > xmlns:mx="library://ns.adobe.com/flex/mx" > minWidth="955" minHeight="600" > creationComplete="application1_creationCompleteHandler(event)"> > <fx:Declarations> > <!-- Place non-visual elements (e.g., services, value objects) > here --> > </fx:Declarations> > > <fx:Script> > <![CDATA[ > import mx.events.FlexEvent; > > [Bindable]private var testText:String = ''; > > > > > > protected function > application1_creationCompleteHandler(event:FlexEvent):void > { > testText = "The learning tasks and activities > are aligned with the instructional outcomes and are designed to challenge > student thinking, resulting in active intellectual engagement by students and > teacher scaffolding. The pacing of the lesson is appropriate providing most > students the time needed to be intellectually engaged.Ms. Pruden begins the > math and Reading lesson by strategically placing her chair between two rows > of desks and methodically assisting one student then another. She first > assists a student to her left (Artice) on simple addition, such as 1 + 4 = 5; > then she turns to her right to work with another student (Fode) on reading > the numbers of his address. She methodically moves her chair down the middle > of the two rows to work with the other remaining students. One student > (Dexter) works independently on a calendar; he places the word 'cloudy' on > today's date: October 25. He is getting his assignments from his individual > basket of daily tasks. Ms. Pruden then worked with Aujana who isworking on a > ruber puzzle of the alphabet. She asks her t repeat after her as she points > to each letter and names each letter of the alphabet. Ms. Pruden worked back > and forth with Fode, Artice and Auana. Ms. Gordon, her teacher assistant, > worked with Dejuan as he counts dots that are pasted on a paper dinosaur. > After 45 minutes, Ms. Pruden stops and directs all of the students to join > her at the semi-circle table to work on consonant sound for the letter 'C.' > The teacher passes out a picture of a cat, and emphasizes the 'KK' sound as > she hands the cat to each student. Then, sheallows time for students to color > their picture. Then she passes out a picture of cupcake, and follows the > same procedure." > } > > ]]> > </fx:Script> > > <s:TextArea width="729" height="200" text="{testText}"/> > > </s:Application> -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira