0
Fork 0
mirror of https://github.com/fastmail/Squire.git synced 2025-02-22 23:05:53 -05:00

On paste, ignore image if text/html present.

If you copy a portion of text from word, it includes an image version of the text as well as an HTML version. On paste, we now ignore the image
representation on the clipboard if an HTML representation is present, so that
the text pastes as expected, rather than as an image.
This commit is contained in:
Neil Jenkins 2013-06-03 15:34:51 +10:00
parent 946afc9a17
commit dbda1fa4ed
3 changed files with 53 additions and 35 deletions

View file

@ -2452,27 +2452,36 @@ addEventListener( isIE ? 'beforepaste' : 'paste', function ( event ) {
var clipboardData = event.clipboardData, var clipboardData = event.clipboardData,
items = clipboardData && clipboardData.items, items = clipboardData && clipboardData.items,
fireDrop = false, fireDrop = false,
l; hasImage = false,
l, type;
if ( items ) { if ( items ) {
l = items.length; l = items.length;
while ( l-- ) { while ( l-- ) {
if ( /^image\/.*/.test( items[l].type ) ) { type = items[l].type;
event.preventDefault(); if ( type === 'text/html' ) {
fireEvent( 'dragover', { hasImage = false;
dataTransfer: clipboardData, break;
/*jshint loopfunc: true */
preventDefault: function () {
fireDrop = true;
}
/*jshint loopfunc: false */
});
if ( fireDrop ) {
fireEvent( 'drop', {
dataTransfer: clipboardData
});
}
return;
} }
if ( /^image\/.*/.test( type ) ) {
hasImage = true;
}
}
if ( hasImage ) {
event.preventDefault();
fireEvent( 'dragover', {
dataTransfer: clipboardData,
/*jshint loopfunc: true */
preventDefault: function () {
fireDrop = true;
}
/*jshint loopfunc: false */
});
if ( fireDrop ) {
fireEvent( 'drop', {
dataTransfer: clipboardData
});
}
return;
} }
} }

File diff suppressed because one or more lines are too long

View file

@ -1368,27 +1368,36 @@ addEventListener( isIE ? 'beforepaste' : 'paste', function ( event ) {
var clipboardData = event.clipboardData, var clipboardData = event.clipboardData,
items = clipboardData && clipboardData.items, items = clipboardData && clipboardData.items,
fireDrop = false, fireDrop = false,
l; hasImage = false,
l, type;
if ( items ) { if ( items ) {
l = items.length; l = items.length;
while ( l-- ) { while ( l-- ) {
if ( /^image\/.*/.test( items[l].type ) ) { type = items[l].type;
event.preventDefault(); if ( type === 'text/html' ) {
fireEvent( 'dragover', { hasImage = false;
dataTransfer: clipboardData, break;
/*jshint loopfunc: true */
preventDefault: function () {
fireDrop = true;
}
/*jshint loopfunc: false */
});
if ( fireDrop ) {
fireEvent( 'drop', {
dataTransfer: clipboardData
});
}
return;
} }
if ( /^image\/.*/.test( type ) ) {
hasImage = true;
}
}
if ( hasImage ) {
event.preventDefault();
fireEvent( 'dragover', {
dataTransfer: clipboardData,
/*jshint loopfunc: true */
preventDefault: function () {
fireDrop = true;
}
/*jshint loopfunc: false */
});
if ( fireDrop ) {
fireEvent( 'drop', {
dataTransfer: clipboardData
});
}
return;
} }
} }