Skip to content

Content Not Refreshed Correctly for pasteEventHasPlainTextOnly Special Case #1103

Open
@chadrschroeder

Description

@chadrschroeder

Say I create a paste handler that is going to change the incoming text like:

elem = document.querySelector('trix-editor')
elem.addEventListener('trix-paste', function() {
  length = elem.editor.getDocument().toString().length
  elem.editor.setSelectedRange([0, length])
  elem.editor.activateAttribute('bold')
})

If I paste text from an application like Microsoft Word, the clipboardData types will include "text/plain", "text/html", "text/rtf" and "Files". The Trix editor will show the text in bold after pasting.

If I paste text from a plain text editor like TextEdit, the clipboardData types will only include "text/plain". We'll get into the special pasteEventHasPlainTextOnly handling. The Trix editor won't show the text in bold after pasting. It will switch the pasted content to bold if you type another character into the editor which seems to indicate that this special handling isn't correctly refreshing the editor after the trix-paste event is done.

This doesn't affect Trix version 1.3.1 that is running at https://trix-editor.org/.

Do we still need the workaround that was added back in 2019 here? The code comment near the pasteEventHasPlainTextOnly handling says:

// Handle paste event to work around beforeinput.insertFromPaste browser bugs.
// Safe to remove each condition once fixed upstream.

The Chromium bug report is now marked as fixed. Can the workaround be removed now since it's breaking the paste behavior for plain text editors?

Details
  • Trix version: 2.0.5

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions