0
Fork 0
mirror of https://github.com/fastmail/Squire.git synced 2024-12-22 07:13:08 -05:00

Workaround Firefox clipboard ignores RTF data

This commit is contained in:
Neil Jenkins 2016-03-07 18:38:07 +11:00
parent 9b88aca813
commit 6ed3b93900
3 changed files with 27 additions and 11 deletions

View file

@ -2003,7 +2003,7 @@ var onPaste = function ( event ) {
hasImage = false,
plainItem = null,
self = this,
l, item, type, data;
l, item, type, types, data;
// Current HTML5 Clipboard interface
// ---------------------------------
@ -2060,10 +2060,18 @@ var onPaste = function ( event ) {
// rather than text/html; even from a webpage in Safari. The only way
// to get an HTML version is to fallback to letting the browser insert
// the content. Same for getting image data. *Sigh*.
if ( clipboardData && (
indexOf.call( clipboardData.types, 'text/html' ) > -1 || (
indexOf.call( clipboardData.types, 'text/plain' ) > -1 &&
indexOf.call( clipboardData.types, 'text/rtf' ) < 0 ) ) ) {
//
// Firefox is even worse: it doesn't even let you know that there might be
// an RTF version on the clipboard, but it will also convert to HTML if you
// let the browser insert the content. I've filed
// https://bugzilla.mozilla.org/show_bug.cgi?id=1254028
types = clipboardData && clipboardData.types;
if ( types && (
indexOf.call( types, 'text/html' ) > -1 || (
!isGecko &&
indexOf.call( types, 'text/plain' ) > -1 &&
indexOf.call( types, 'text/rtf' ) < 0 )
)) {
event.preventDefault();
// Abiword on Linux copies a plain text and html version, but the HTML
// version is the empty string! So always try to get HTML, but if none,

File diff suppressed because one or more lines are too long

View file

@ -24,7 +24,7 @@ var onPaste = function ( event ) {
hasImage = false,
plainItem = null,
self = this,
l, item, type, data;
l, item, type, types, data;
// Current HTML5 Clipboard interface
// ---------------------------------
@ -81,10 +81,18 @@ var onPaste = function ( event ) {
// rather than text/html; even from a webpage in Safari. The only way
// to get an HTML version is to fallback to letting the browser insert
// the content. Same for getting image data. *Sigh*.
if ( clipboardData && (
indexOf.call( clipboardData.types, 'text/html' ) > -1 || (
indexOf.call( clipboardData.types, 'text/plain' ) > -1 &&
indexOf.call( clipboardData.types, 'text/rtf' ) < 0 ) ) ) {
//
// Firefox is even worse: it doesn't even let you know that there might be
// an RTF version on the clipboard, but it will also convert to HTML if you
// let the browser insert the content. I've filed
// https://bugzilla.mozilla.org/show_bug.cgi?id=1254028
types = clipboardData && clipboardData.types;
if ( types && (
indexOf.call( types, 'text/html' ) > -1 || (
!isGecko &&
indexOf.call( types, 'text/plain' ) > -1 &&
indexOf.call( types, 'text/rtf' ) < 0 )
)) {
event.preventDefault();
// Abiword on Linux copies a plain text and html version, but the HTML
// version is the empty string! So always try to get HTML, but if none,