Fix for bug 18409. clipboard/d&d now converts incoming text to DOM linebreaks. r=saari

This commit is contained in:
pinkerton%netscape.com 1999-12-02 23:18:23 +00:00
Родитель 691d9f5e03
Коммит 4aa8604576
1 изменённых файлов: 17 добавлений и 5 удалений

Просмотреть файл

@ -557,26 +557,38 @@ nsresult nsClipboard::GetDataFromDataObject(IDataObject * aDataObject,
void * data; void * data;
PRUint32 dataLen; PRUint32 dataLen;
PRBool success = PR_FALSE;
if (nsnull != aDataObject) { if (nsnull != aDataObject) {
res = GetNativeDataOffClipboard(aDataObject, format, &data, &dataLen); res = GetNativeDataOffClipboard(aDataObject, format, &data, &dataLen);
if (NS_OK == res) { if ( NS_SUCCEEDED(res) ) {
nsCOMPtr<nsISupports> genericDataWrapper; nsCOMPtr<nsISupports> genericDataWrapper;
nsPrimitiveHelpers::CreatePrimitiveForData ( flavorStr, data, dataLen, getter_AddRefs(genericDataWrapper) ); nsPrimitiveHelpers::CreatePrimitiveForData ( flavorStr, data, dataLen, getter_AddRefs(genericDataWrapper) );
aTransferable->SetTransferData(flavorStr, genericDataWrapper, dataLen); aTransferable->SetTransferData(flavorStr, genericDataWrapper, dataLen);
break; success = PR_TRUE;
} }
} else if (nsnull != aWindow) { } else if (nsnull != aWindow) {
res = GetNativeDataOffClipboard(aWindow, format, &data, &dataLen); res = GetNativeDataOffClipboard(aWindow, format, &data, &dataLen);
if (NS_OK == res) { if ( NS_SUCCEEDED(res) ) {
nsCOMPtr<nsISupports> genericDataWrapper; nsCOMPtr<nsISupports> genericDataWrapper;
nsPrimitiveHelpers::CreatePrimitiveForData ( flavorStr, data, dataLen, getter_AddRefs(genericDataWrapper) ); nsPrimitiveHelpers::CreatePrimitiveForData ( flavorStr, data, dataLen, getter_AddRefs(genericDataWrapper) );
aTransferable->SetTransferData(flavorStr, genericDataWrapper, dataLen); aTransferable->SetTransferData(flavorStr, genericDataWrapper, dataLen);
break; success = PR_TRUE;
} }
} }
if ( success ) {
// the DOM only wants LF, so convert from Win32 line endings to DOM line
// endings.
PRInt32 signedLen = NS_STATIC_CAST(PRInt32, dataLen);
nsLinebreakHelpers::ConvertPlatformToDOMLinebreaks ( flavorStr, &data, &signedLen );
dataLen = signedLen;
break;
}
} }
} } // foreach flavor
return res; return res;
} }