Uploaded image for project: 'Apache Flex'
  1. Apache Flex
  2. FLEX-34098

Deleteing/Replacing Surrogate-Pair string causes RTE in TLF

    XMLWordPrintableJSON

Details

    Description

      Case 1
      Step 1. Input "𣘺" to s:TextInput
      Step 2. delete string of [Step 1] by DELETE/BACKSPACE key
      An RTE happens like below

      RangeError: Invalid splitting of a surrogate pair
      at flashx.textLayout.elements::SpanElement/replaceText()
      at flashx.textLayout.edit::TextFlowEdit$/deleteRangeInternal()
      at flashx.textLayout.edit::TextFlowEdit$/deleteRangeInternal()
      at flashx.textLayout.edit::TextFlowEdit$/http://ns.adobe.com/textLayout/internal/2008::deleteRange()
      at flashx.textLayout.edit::ModelEdit$/deleteText()
      at flashx.textLayout.operations::DeleteTextOperation/doOperation()
      at flashx.textLayout.edit::EditManager/doInternal()
      at flashx.textLayout.edit::EditManager/doOperation()
      at flashx.textLayout.edit::EditManager/deletePreviousCharacter()
      at flashx.textLayout.edit::EditManager/keyDownHandler()
      at flashx.textLayout.container::ContainerController/keyDownHandler()
      at flashx.textLayout.container::TextContainerManager/keyDownHandler()
      at spark.components.supportClasses::RichEditableTextContainerManager/keyDownHandler()

      Case 2
      Step 1. Input "𣘺" to s:TextInput
      Step 2. copy this string : "A"
      Step 3. select string of [Step 1]
      Step 4. press [Ctrl + V]
      Two RTE happen like below

      RangeError: Invalid splitting of a surrogate pair
      at flashx.textLayout.elements::SpanElement/replaceText()
      at flashx.textLayout.edit::TextFlowEdit$/deleteRangeInternal()
      at flashx.textLayout.edit::TextFlowEdit$/deleteRangeInternal()
      at flashx.textLayout.edit::TextFlowEdit$/http://ns.adobe.com/textLayout/internal/2008::deleteRange()
      at flashx.textLayout.edit::ModelEdit$/deleteText()
      at flashx.textLayout.operations::DeleteTextOperation/doOperation()
      at flashx.textLayout.operations::InsertTextOperation/doDelete()
      at flashx.textLayout.operations::InsertTextOperation/doInternal()
      at flashx.textLayout.operations::InsertTextOperation/doOperation()
      at flashx.textLayout.edit::EditManager/doInternal()
      at flashx.textLayout.edit::EditManager/doOperation()
      at flashx.textLayout.edit::EditManager/flushPendingOperations()
      at flashx.textLayout.edit::EditManager/insertText()
      at spark.components::RichEditableText/handlePasteOperation()
      at spark.components::RichEditableText/textContainerManager_flowOperationEndHandler()
      at flash.events::EventDispatcher/dispatchEvent()
      at flashx.textLayout.container::TextContainerManager/dispatchEvent()
      at flash.events::EventDispatcher/dispatchEvent()
      at flashx.textLayout.elements::TextFlow/dispatchEvent()
      at flashx.textLayout.edit::EditManager/doInternal()
      at flashx.textLayout.edit::EditManager/doOperation()
      at flashx.textLayout.edit::EditManager/pasteTextScrap()
      at flashx.textLayout.edit::EditManager/editHandler()
      at flashx.textLayout.container::ContainerController/editHandler()
      at flashx.textLayout.container::TextContainerManager/editHandler()
      at flash.desktop::NativeApplication/_onKeyDownBubble()

      RangeError: Invalid splitting of a surrogate pair
      at flashx.textLayout.elements::SpanElement/replaceText()
      at flashx.textLayout.edit::TextFlowEdit$/deleteRangeInternal()
      at flashx.textLayout.edit::TextFlowEdit$/deleteRangeInternal()
      at flashx.textLayout.edit::TextFlowEdit$/http://ns.adobe.com/textLayout/internal/2008::deleteRange()
      at flashx.textLayout.edit::ModelEdit$/deleteText()
      at flashx.textLayout.operations::DeleteTextOperation/doOperation()
      at flashx.textLayout.operations::PasteOperation/doOperation()
      at flashx.textLayout.edit::EditManager/doInternal()
      at flashx.textLayout.edit::EditManager/doOperation()
      at flashx.textLayout.edit::EditManager/pasteTextScrap()
      at flashx.textLayout.edit::EditManager/editHandler()
      at flashx.textLayout.container::ContainerController/editHandler()
      at flashx.textLayout.container::TextContainerManager/editHandler()
      at flash.desktop::NativeApplication/_onKeyDownBubble()

      Attachments

        1. SurrogatePairTest_src.zip
          5 kB
          Shigeru Nakagaki

        Activity

          People

            aharui Alex Harui
            shigeru Shigeru Nakagaki
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: