mirror of
https://github.com/fastmail/Squire.git
synced 2025-01-03 13:16:31 -05:00
Workaround clipboard having blank text/html version.
This commit is contained in:
parent
667b5e8e7b
commit
fdcef5fc8e
3 changed files with 35 additions and 29 deletions
|
@ -1977,7 +1977,7 @@ var onPaste = function ( event ) {
|
||||||
hasImage = false,
|
hasImage = false,
|
||||||
plainItem = null,
|
plainItem = null,
|
||||||
self = this,
|
self = this,
|
||||||
l, item, type;
|
l, item, type, data;
|
||||||
|
|
||||||
// Current HTML5 Clipboard interface
|
// Current HTML5 Clipboard interface
|
||||||
// ---------------------------------
|
// ---------------------------------
|
||||||
|
@ -2030,21 +2030,24 @@ var onPaste = function ( event ) {
|
||||||
// Old interface
|
// Old interface
|
||||||
// -------------
|
// -------------
|
||||||
|
|
||||||
if ( clipboardData ) {
|
|
||||||
if ( indexOf.call( clipboardData.types, 'text/html' ) > -1 ) {
|
|
||||||
event.preventDefault();
|
|
||||||
this.insertHTML( clipboardData.getData( 'text/html' ), true );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Safari (and indeed many other OS X apps) copies stuff as text/rtf
|
// Safari (and indeed many other OS X apps) copies stuff as text/rtf
|
||||||
// rather than text/html; even from a webpage in Safari. The only way
|
// 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
|
// to get an HTML version is to fallback to letting the browser insert
|
||||||
// the content. *Sigh*.
|
// the content. *Sigh*.
|
||||||
else if ( indexOf.call( clipboardData.types, 'text/rtf' ) === -1 ) {
|
if ( clipboardData && (
|
||||||
|
indexOf.call( clipboardData.types, 'text/html' ) > -1 ||
|
||||||
|
indexOf.call( clipboardData.types, 'text/rtf' ) === -1 ) ) {
|
||||||
event.preventDefault();
|
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,
|
||||||
|
// insert plain text instead.
|
||||||
|
data = clipboardData.getData( 'text/html' );
|
||||||
|
if ( data ) {
|
||||||
|
this.insertHTML( data, true );
|
||||||
|
} else {
|
||||||
this.insertPlainText( clipboardData.getData( 'text/plain' ), true );
|
this.insertPlainText( clipboardData.getData( 'text/plain' ), true );
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// No interface :(
|
// No interface :(
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -24,7 +24,7 @@ var onPaste = function ( event ) {
|
||||||
hasImage = false,
|
hasImage = false,
|
||||||
plainItem = null,
|
plainItem = null,
|
||||||
self = this,
|
self = this,
|
||||||
l, item, type;
|
l, item, type, data;
|
||||||
|
|
||||||
// Current HTML5 Clipboard interface
|
// Current HTML5 Clipboard interface
|
||||||
// ---------------------------------
|
// ---------------------------------
|
||||||
|
@ -77,21 +77,24 @@ var onPaste = function ( event ) {
|
||||||
// Old interface
|
// Old interface
|
||||||
// -------------
|
// -------------
|
||||||
|
|
||||||
if ( clipboardData ) {
|
|
||||||
if ( indexOf.call( clipboardData.types, 'text/html' ) > -1 ) {
|
|
||||||
event.preventDefault();
|
|
||||||
this.insertHTML( clipboardData.getData( 'text/html' ), true );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Safari (and indeed many other OS X apps) copies stuff as text/rtf
|
// Safari (and indeed many other OS X apps) copies stuff as text/rtf
|
||||||
// rather than text/html; even from a webpage in Safari. The only way
|
// 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
|
// to get an HTML version is to fallback to letting the browser insert
|
||||||
// the content. *Sigh*.
|
// the content. *Sigh*.
|
||||||
else if ( indexOf.call( clipboardData.types, 'text/rtf' ) === -1 ) {
|
if ( clipboardData && (
|
||||||
|
indexOf.call( clipboardData.types, 'text/html' ) > -1 ||
|
||||||
|
indexOf.call( clipboardData.types, 'text/rtf' ) === -1 ) ) {
|
||||||
event.preventDefault();
|
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,
|
||||||
|
// insert plain text instead.
|
||||||
|
data = clipboardData.getData( 'text/html' );
|
||||||
|
if ( data ) {
|
||||||
|
this.insertHTML( data, true );
|
||||||
|
} else {
|
||||||
this.insertPlainText( clipboardData.getData( 'text/plain' ), true );
|
this.insertPlainText( clipboardData.getData( 'text/plain' ), true );
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// No interface :(
|
// No interface :(
|
||||||
|
|
Loading…
Reference in a new issue