Yes, I can work on it tomorrow or Tuesday. I'll let you know if I need any help. Thank you for working on this!
On 20 September 2015 at 09:52, Harbs <harbs.li...@gmail.com> wrote: > Please check my latest commit [2192608] > > I think it’s being handled correctly. > I’m nulling the span if it’s supposed to insert into the same paragraph and > it’s no longer assuming the span is not null. > > I needed to do some special handling to make sure the insertion point is > correct. > > We’re going to need unit tests for this bug. Can you handle that? > > On Sep 20, 2015, at 10:35 AM, Mihai Chira <mihai.ch...@gmail.com> wrote: > >> Thanks for checking this. Indeed, the pasting algorithm was assuming it >> could always find the terminator and work with that. >> >> I'm afraid that I'm not familiar enough with tlf to implement an >> alternative algorithm which works without the terminator. But it is causing >> grief for a lot of our users. Do you think you'll have time to find another >> way to implement the algorithm? >> >> Thanks. >> On 20 Sep 2015 08:37, "Harbs" <harbs.li...@gmail.com> wrote: >> >>> The issue here is as follows: >>> >>> The old code was not merging a the paragraph terminator when content was >>> added. This left an extra terminator which caused all kinds of problems >>> with the table code (I do not remember the details.) It’s also questionable >>> whether it’s a good idea to preserve formatting in the terminator. >>> mergeToPreviousIfPossible normally does not merge spans if there’s >>> different formatting, but empty paragraph terminators are an exception and >>> it always merges them even if the formatting is different. >>> >>> I think the new behavior is more correct, but we’re going to have to >>> handle pasting text as a special case because the code is assuming the text >>> is not normalized which it now (sort-of) is.. >>> >>> On Sep 9, 2015, at 7:37 PM, Mihai Chira <mihai.ch...@gmail.com> wrote: >>> >>>> Hey guys (addressed to Piotr and Harbs), >>>> >>>> if you have time to take a look at this, it would really help. I have >>>> a feeling you'd have much better ideas on how to go forward with the >>>> fix. >>>> >>>> Many thanks! >>>> >>>> >>>> ---------- Forwarded message ---------- >>>> From: Mihai Chira (JIRA) <j...@apache.org> >>>> Date: 9 September 2015 at 18:35 >>>> Subject: [jira] [Comment Edited] (FLEX-34807) TLF - EditManager - >>>> TextFlowEdit -insertTextScrap >>>> To: iss...@flex.apache.org >>>> >>>> >>>> >>>> [ >>> https://issues.apache.org/jira/browse/FLEX-34807?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14737128#comment-14737128 >>>> ] >>>> >>>> Mihai Chira edited comment on FLEX-34807 at 9/9/15 4:35 PM: >>>> ------------------------------------------------------------ >>>> >>>> *Investigation update*: this bug was (highly likely) introduced by >>>> commit [33df98ab9d2c69c84d4de6ab2ae969f9c5f93e35| >>> https://fisheye6.atlassian.com/changelog/flex-tlf?cs=33df98ab9d2c69c84d4de6ab2ae969f9c5f93e35 >>> ] >>>> on the 5th Oct 2014. If I comment out the last if clause of >>>> {{ParagraphElement.ensureTerminatorAfterReplace()}}, which was added >>>> by that commit (and subsequently edited into its current form), the >>>> bug disappears. That's because the algorithm in >>>> {{TextFlowEdit.insertTextScrap()}} requires at least one >>>> FlowLeafElement before which to add the pasted contents, and before >>>> this bug was introduced, that used to be >>>> {{ParagraphElement.terminatorSpan}}. But since the commit the >>>> terminatorSpan has been merged into the previous span. >>>> This seems to imply that there is an expectation in >>>> {{TextFlowEdit.insertTextScrap()}} that {{destinationLeaf}} should >>>> never be null (despite the null check in the line {code}insertPosition >>>> = destinationLeaf ? destinationLeaf.getAbsoluteStart() : >>>> textFlow.textLength - 1;{code}. >>>> I imagine that just commenting out the code is not a viable solution, >>>> as it will break other functionality. So we'll need either [~harbs] or >>>> [~pete21] to throw in some thoughts, if they have the time. Much >>>> appreciated. >>>> >>>> >>>> was (Author: evolverine): >>>> *Investigation update*: this bug was (highly likely) introduced by >>>> commit [33df98ab9d2c69c84d4de6ab2ae969f9c5f93e35| >>> https://fisheye6.atlassian.com/changelog/flex-tlf?cs=33df98ab9d2c69c84d4de6ab2ae969f9c5f93e35 >>> ] >>>> on the 5th Oct 2014 by [~harbs]. If I comment out the last if clause >>>> of {{ParagraphElement.ensureTerminatorAfterReplace()}}, which was >>>> added by that commit (and subsequently edited into its current form), >>>> the bug disappears. That's because the algorithm in >>>> {{TextFlowEdit.insertTextScrap()}} requires at least one >>>> FlowLeafElement before which to add the pasted contents, and before >>>> this bug was introduced, that used to be >>>> {{ParagraphElement.terminatorSpan}}. But since the commit the >>>> terminatorSpan has been merged into the previous span. >>>> This seems to imply that there is an expectation in >>>> {{TextFlowEdit.insertTextScrap()}} that {{destinationLeaf}} should >>>> never be null (despite the null check in the line {code}insertPosition >>>> = destinationLeaf ? destinationLeaf.getAbsoluteStart() : >>>> textFlow.textLength - 1;{code}. >>>> I imagine that just commenting out the code is not a viable solution, >>>> as it will break other functionality. So we'll need either [~harbs] or >>>> [~pete21] to throw in some thoughts, if they have the time. Much >>>> appreciated. >>>> >>>>> TLF - EditManager - TextFlowEdit -insertTextScrap >>>>> ------------------------------------------------- >>>>> >>>>> Key: FLEX-34807 >>>>> URL: https://issues.apache.org/jira/browse/FLEX-34807 >>>>> Project: Apache Flex >>>>> Issue Type: Bug >>>>> Components: Spark: RichEditableText >>>>> Affects Versions: Apache Flex 4.12.0, Apache Flex 4.13.0, Apache Flex >>> 4.14.0 >>>>> Reporter: Robbyn Gerhardt >>>>> Assignee: Mihai Chira >>>>> Labels: editmanager, richeditabletext, tlf >>>>> Attachments: Bildschirmfoto 2015-03-19 um 15.28.19.png, >>> Bildschirmfoto 2015-03-20 um 09.06.47.png, TextEditorTest.air, >>> TextEditorTest.fxp >>>>> >>>>> >>>>> 1. Copy Formatted text from RichEditableText Editor, see Image >>>>> 2. Insert Formatted text from the clipboard with Ctrl + V in the >>> editor. Then comes the error. >>>>> TypeError: Error #1009: Cannot access a property or method of a null >>> object reference. >>>>> at >>> flashx.textLayout.edit::TextFlowEdit$/insertTextScrap()[/Users/erik/Documents/ApacheFlex/git/flex-tlf/textLayout/src/flashx/textLayout/edit/TextFlowEdit.as:244] >>>>> at >>> flashx.textLayout.operations::PasteOperation/doOperation()[/Users/erik/Documents/ApacheFlex/git/flex-tlf/textLayout/src/flashx/textLayout/operations/PasteOperation.as:102] >>>>> at >>> flashx.textLayout.edit::EditManager/doInternal()[/Users/erik/Documents/ApacheFlex/git/flex-tlf/textLayout/src/flashx/textLayout/edit/EditManager.as:767] >>>>> at >>> flashx.textLayout.edit::EditManager/doOperation()[/Users/erik/Documents/ApacheFlex/git/flex-tlf/textLayout/src/flashx/textLayout/edit/EditManager.as:647] >>>>> at >>> flashx.textLayout.edit::EditManager/pasteTextScrap()[/Users/erik/Documents/ApacheFlex/git/flex-tlf/textLayout/src/flashx/textLayout/edit/EditManager.as:1806] >>>>> at >>> flashx.textLayout.edit::EditManager/editHandler()[/Users/erik/Documents/ApacheFlex/git/flex-tlf/textLayout/src/flashx/textLayout/edit/EditManager.as:270] >>>>> at >>> flashx.textLayout.container::ContainerController/editHandler()[/Users/erik/Documents/ApacheFlex/git/flex-tlf/textLayout/src/flashx/textLayout/container/ContainerController.as:2739] >>>>> at >>> flashx.textLayout.container::TextContainerManager/editHandler()[/Users/erik/Documents/ApacheFlex/git/flex-tlf/textLayout/src/flashx/textLayout/container/TextContainerManager.as:1876] >>>>> at flash.display::NativeMenuItem/select() >>>>> at flash.display::NativeMenuItem/performKeyEquivalent() >>>>> at flash.display::NativeMenu/_menuItemPerformKeyEquivalent() >>>>> at flash.display::NativeMenu/performKeyEquivalent() >>>>> at flash.display::NativeMenuItem/_menuPerformKeyEquivalent() >>>>> at flash.display::NativeMenuItem/performKeyEquivalent() >>>>> at flash.display::NativeMenu/_menuItemPerformKeyEquivalent() >>>>> at flash.display::NativeMenu/performKeyEquivalent() >>>>> at flash.desktop::NativeApplication/_menuPerformKeyEquivalent() >>>>> at flash.desktop::NativeApplication/_onKeyDownCapture() >>>> >>>> >>>> >>>> -- >>>> This message was sent by Atlassian JIRA >>>> (v6.3.4#6332) >>> >>> >