mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 00:35:44 +00:00
use nsPrimitiveHelpers to get data into and out of nsISupportsPrimitives.
This commit is contained in:
parent
3e2bfa5eb5
commit
064ccf67be
@ -30,6 +30,7 @@
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsXPIDLString.h"
|
||||
#include "nsPrimitiveHelpers.h"
|
||||
|
||||
#include "nsVoidArray.h"
|
||||
|
||||
@ -559,7 +560,7 @@ nsClipboard::GetNativeClipboardData(nsITransferable * aTransferable)
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsISupports> genericDataWrapper;
|
||||
CreatePrimitiveForData ( foundFlavor, mSelectionData.data, mSelectionData.length, getter_AddRefs(genericDataWrapper) );
|
||||
nsPrimitiveHelpers::CreatePrimitiveForData ( foundFlavor, mSelectionData.data, mSelectionData.length, getter_AddRefs(genericDataWrapper) );
|
||||
aTransferable->SetTransferData(foundFlavor,
|
||||
genericDataWrapper,
|
||||
mSelectionData.length);
|
||||
@ -784,7 +785,7 @@ void nsClipboard::SelectionGetCB(GtkWidget *widget,
|
||||
rv = cb->mTransferable->GetTransferData(dataFlavor,
|
||||
getter_AddRefs(genericDataWrapper),
|
||||
&dataLength);
|
||||
CreateDataFromPrimitive ( dataFlavor, genericDataWrapper, &clipboardData, dataLength );
|
||||
nsPrimitiveHelpers::CreateDataFromPrimitive ( dataFlavor, genericDataWrapper, &clipboardData, dataLength );
|
||||
if (NS_SUCCEEDED(rv) && clipboardData && dataLength > 0) {
|
||||
size_t size = 1;
|
||||
// find the number of bytes in the data for the below thing
|
||||
|
@ -438,7 +438,7 @@ NS_IMETHODIMP nsDragService::GetData (nsITransferable * aTransferable, PRUint32
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsISupports> genericDataWrapper;
|
||||
CreatePrimitiveForData ( foundFlavor, mSelectionData.data, mSelectionData.length, getter_AddRefs(genericDataWrapper) );
|
||||
nsPrimitiveHelpers::CreatePrimitiveForData ( foundFlavor, mSelectionData.data, mSelectionData.length, getter_AddRefs(genericDataWrapper) );
|
||||
aTransferable->SetTransferData(foundFlavor,
|
||||
genericDataWrapper,
|
||||
mSelectionData.length);
|
||||
|
@ -38,6 +38,7 @@
|
||||
#include "nsIComponentManager.h"
|
||||
#include "nsISupportsPrimitives.h"
|
||||
#include "nsXPIDLString.h"
|
||||
#include "nsPrimitiveHelpers.h"
|
||||
|
||||
#include <Scrap.h>
|
||||
|
||||
@ -110,14 +111,14 @@ nsClipboard :: SetNativeClipboardData()
|
||||
PRUint32 dataSize = 0;
|
||||
nsCOMPtr<nsISupports> genericDataWrapper;
|
||||
errCode = mTransferable->GetTransferData ( flavorStr, getter_AddRefs(genericDataWrapper), &dataSize );
|
||||
CreateDataFromPrimitive ( flavorStr, genericDataWrapper, &data, dataSize );
|
||||
nsPrimitiveHelpers::CreateDataFromPrimitive ( flavorStr, genericDataWrapper, &data, dataSize );
|
||||
#ifdef NS_DEBUG
|
||||
if ( NS_FAILED(errCode) ) printf("nsClipboard:: Error getting data from transferable\n");
|
||||
#endif
|
||||
|
||||
// stash on clipboard
|
||||
long numBytes = ::PutScrap ( dataSize, macOSFlavor, data );
|
||||
if ( numBytes != dataSize )
|
||||
if ( numBytes != noErr )
|
||||
errCode = NS_ERROR_FAILURE;
|
||||
|
||||
nsAllocator::Free ( data );
|
||||
@ -129,7 +130,7 @@ nsClipboard :: SetNativeClipboardData()
|
||||
short mappingLen = 0;
|
||||
const char* mapping = theMapper.ExportMapping(&mappingLen);
|
||||
long numBytes = ::PutScrap ( mappingLen, nsMimeMapperMac::MappingFlavor(), mapping );
|
||||
if ( numBytes != mappingLen )
|
||||
if ( numBytes != noErr )
|
||||
errCode = NS_ERROR_FAILURE;
|
||||
nsCRT::free ( NS_CONST_CAST(char*, mapping) );
|
||||
|
||||
@ -166,7 +167,6 @@ nsClipboard :: GetNativeClipboardData(nsITransferable * aTransferable)
|
||||
nsMimeMapperMac theMapper ( mimeMapperData );
|
||||
nsCRT::free ( mimeMapperData );
|
||||
|
||||
//
|
||||
// Now walk down the list of flavors. When we find one that is actually on the
|
||||
// clipboard, copy out the data into the transferable in that format. SetTransferData()
|
||||
// implicitly handles conversions.
|
||||
@ -189,7 +189,7 @@ nsClipboard :: GetNativeClipboardData(nsITransferable * aTransferable)
|
||||
if ( NS_SUCCEEDED(loadResult) && clipboardData ) {
|
||||
// put it into the transferable
|
||||
nsCOMPtr<nsISupports> genericDataWrapper;
|
||||
CreatePrimitiveForData ( flavorStr, clipboardData, dataSize, getter_AddRefs(genericDataWrapper) );
|
||||
nsPrimitiveHelpers::CreatePrimitiveForData ( flavorStr, clipboardData, dataSize, getter_AddRefs(genericDataWrapper) );
|
||||
errCode = aTransferable->SetTransferData ( flavorStr, genericDataWrapper, dataSize );
|
||||
#ifdef NS_DEBUG
|
||||
if ( errCode != NS_OK ) printf("nsClipboard:: Error setting data into transferable\n");
|
||||
@ -213,7 +213,7 @@ nsClipboard :: GetNativeClipboardData(nsITransferable * aTransferable)
|
||||
nsresult
|
||||
nsClipboard :: GetDataOffClipboard ( ResType inMacFlavor, char** outData, long* outDataSize )
|
||||
{
|
||||
if ( !outData || !outDataSize || !inMacFlavor )
|
||||
if ( !outData || !inMacFlavor )
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
// check if it is on the clipboard
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include "nsISupportsPrimitives.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsXPIDLString.h"
|
||||
#include "nsPrimitiveHelpers.h"
|
||||
|
||||
|
||||
DragSendDataUPP nsDragService::sDragSendDataUPP = NewDragSendDataProc(DragSendDataProc);
|
||||
@ -310,7 +311,7 @@ printf("flavor data size is %ld\n", dataSize);
|
||||
|
||||
// put it into the transferable.
|
||||
nsCOMPtr<nsISupports> genericDataWrapper;
|
||||
CreatePrimitiveForData ( flavorStr, dataBuff, dataSize, getter_AddRefs(genericDataWrapper) );
|
||||
nsPrimitiveHelpers::CreatePrimitiveForData ( flavorStr, dataBuff, dataSize, getter_AddRefs(genericDataWrapper) );
|
||||
errCode = aTransferable->SetTransferData ( flavorStr, genericDataWrapper, dataSize );
|
||||
#ifdef NS_DEBUG
|
||||
if ( errCode != NS_OK ) printf("nsDragService:: Error setting data into transferable\n");
|
||||
@ -484,7 +485,7 @@ nsDragService :: GetDataForFlavor ( nsISupportsArray* inDragItems, DragReference
|
||||
*outDataSize = 0;
|
||||
nsCOMPtr<nsISupports> data;
|
||||
if ( NS_SUCCEEDED(item->GetTransferData(mimeFlavor.GetBuffer(), getter_AddRefs(data), outDataSize)) )
|
||||
CreateDataFromPrimitive ( mimeFlavor.GetBuffer(), data, outData, *outDataSize );
|
||||
nsPrimitiveHelpers::CreateDataFromPrimitive ( mimeFlavor.GetBuffer(), data, outData, *outDataSize );
|
||||
else
|
||||
retVal = cantGetFlavorErr;
|
||||
} // if valid item
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsISupportsPrimitives.h"
|
||||
#include "nsXPIDLString.h"
|
||||
#include "nsPrimitiveHelpers.h"
|
||||
|
||||
#include "nsIWidget.h"
|
||||
#include "nsIComponentManager.h"
|
||||
@ -546,7 +547,7 @@ nsresult nsClipboard::GetDataFromDataObject(IDataObject * aDataObject,
|
||||
res = GetNativeDataOffClipboard(aDataObject, format, &data, &dataLen);
|
||||
if (NS_OK == res) {
|
||||
nsCOMPtr<nsISupports> genericDataWrapper;
|
||||
CreatePrimitiveForData ( flavorStr, data, dataLen, getter_AddRefs(genericDataWrapper) );
|
||||
nsPrimitiveHelpers::CreatePrimitiveForData ( flavorStr, data, dataLen, getter_AddRefs(genericDataWrapper) );
|
||||
aTransferable->SetTransferData(flavorStr, genericDataWrapper, dataLen);
|
||||
break;
|
||||
}
|
||||
@ -554,7 +555,7 @@ nsresult nsClipboard::GetDataFromDataObject(IDataObject * aDataObject,
|
||||
res = GetNativeDataOffClipboard(aWindow, format, &data, &dataLen);
|
||||
if (NS_OK == res) {
|
||||
nsCOMPtr<nsISupports> genericDataWrapper;
|
||||
CreatePrimitiveForData ( flavorStr, data, dataLen, getter_AddRefs(genericDataWrapper) );
|
||||
nsPrimitiveHelpers::CreatePrimitiveForData ( flavorStr, data, dataLen, getter_AddRefs(genericDataWrapper) );
|
||||
aTransferable->SetTransferData(flavorStr, genericDataWrapper, dataLen);
|
||||
break;
|
||||
}
|
||||
@ -657,7 +658,7 @@ NS_IMETHODIMP nsClipboard::ForceDataToClipboard()
|
||||
// this call hands back new memory with the contents copied into it
|
||||
nsCOMPtr<nsISupports> genericDataWrapper;
|
||||
mTransferable->GetTransferData(flavorStr, getter_AddRefs(genericDataWrapper), &dataLen);
|
||||
CreateDataFromPrimitive ( flavorStr, genericDataWrapper, &data, dataLen );
|
||||
nsPrimitiveHelpers::CreateDataFromPrimitive ( flavorStr, genericDataWrapper, &data, dataLen );
|
||||
|
||||
// now place it on the Clipboard
|
||||
if (nsnull != data) {
|
||||
|
@ -137,60 +137,6 @@ NS_IMETHODIMP nsBaseClipboard::ForceDataToClipboard()
|
||||
}
|
||||
|
||||
|
||||
//¥¥¥ skanky hack until i can correctly re-create primitives from native data. i know this code sucks,
|
||||
//¥¥¥ please forgive me.
|
||||
void
|
||||
nsBaseClipboard :: CreatePrimitiveForData ( const char* aFlavor, void* aDataBuff, PRUint32 aDataLen, nsISupports** aPrimitive )
|
||||
{
|
||||
if ( !aPrimitive )
|
||||
return;
|
||||
|
||||
if ( strcmp(aFlavor,kTextMime) == 0 ) {
|
||||
nsCOMPtr<nsISupportsString> primitive;
|
||||
nsresult rv = nsComponentManager::CreateInstance(NS_SUPPORTS_STRING_PROGID, nsnull,
|
||||
NS_GET_IID(nsISupportsString), getter_AddRefs(primitive));
|
||||
if ( primitive ) {
|
||||
primitive->SetData ( (char*)aDataBuff );
|
||||
nsCOMPtr<nsISupports> genericPrimitive ( do_QueryInterface(primitive) );
|
||||
*aPrimitive = genericPrimitive;
|
||||
NS_ADDREF(*aPrimitive);
|
||||
}
|
||||
}
|
||||
else {
|
||||
nsCOMPtr<nsISupportsWString> primitive;
|
||||
nsresult rv = nsComponentManager::CreateInstance(NS_SUPPORTS_WSTRING_PROGID, nsnull,
|
||||
NS_GET_IID(nsISupportsWString), getter_AddRefs(primitive));
|
||||
if ( primitive ) {
|
||||
primitive->SetData ( (unsigned short*)aDataBuff );
|
||||
nsCOMPtr<nsISupports> genericPrimitive ( do_QueryInterface(primitive) );
|
||||
*aPrimitive = genericPrimitive;
|
||||
NS_ADDREF(*aPrimitive);
|
||||
}
|
||||
}
|
||||
|
||||
} // CreatePrimitiveForData
|
||||
|
||||
|
||||
void
|
||||
nsBaseClipboard :: CreateDataFromPrimitive ( const char* aFlavor, nsISupports* aPrimitive, void** aDataBuff, PRUint32 aDataLen )
|
||||
{
|
||||
if ( !aDataBuff )
|
||||
return;
|
||||
|
||||
if ( strcmp(aFlavor,kTextMime) == 0 ) {
|
||||
nsCOMPtr<nsISupportsString> plainText ( do_QueryInterface(aPrimitive) );
|
||||
if ( plainText )
|
||||
plainText->GetData ( (char**)aDataBuff );
|
||||
}
|
||||
else {
|
||||
nsCOMPtr<nsISupportsWString> doubleByteText ( do_QueryInterface(aPrimitive) );
|
||||
if ( doubleByteText )
|
||||
doubleByteText->GetData ( (unsigned short**)aDataBuff );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsBaseClipboard :: HasDataMatchingFlavors ( nsISupportsArray* aFlavorList, PRBool * outResult )
|
||||
{
|
||||
|
@ -49,9 +49,6 @@ protected:
|
||||
NS_IMETHOD SetNativeClipboardData() = 0;
|
||||
NS_IMETHOD GetNativeClipboardData(nsITransferable * aTransferable) = 0;
|
||||
|
||||
static void CreatePrimitiveForData ( const char* aFlavor, void* aDataBuff, PRUint32 aDataLen, nsISupports** aPrimitive );
|
||||
static void CreateDataFromPrimitive ( const char* aFlavor, nsISupports* aPrimitive, void** aDataBuff, PRUint32 aDataLen );
|
||||
|
||||
PRBool mIgnoreEmptyNotification;
|
||||
nsIClipboardOwner * mClipboardOwner;
|
||||
nsITransferable * mTransferable;
|
||||
|
@ -174,56 +174,3 @@ NS_IMETHODIMP nsBaseDragService::EndDragSession ()
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//¥¥¥ skanky hack until i can correctly re-create primitives from native data. i know this code sucks,
|
||||
//¥¥¥ please forgive me.
|
||||
void
|
||||
nsBaseDragService :: CreatePrimitiveForData ( const char* aFlavor, void* aDataBuff, PRUint32 aDataLen, nsISupports** aPrimitive )
|
||||
{
|
||||
if ( !aPrimitive )
|
||||
return;
|
||||
|
||||
if ( strcmp(aFlavor,kTextMime) == 0 ) {
|
||||
nsCOMPtr<nsISupportsString> primitive;
|
||||
nsresult rv = nsComponentManager::CreateInstance(NS_SUPPORTS_STRING_PROGID, nsnull,
|
||||
NS_GET_IID(nsISupportsString), getter_AddRefs(primitive));
|
||||
if ( primitive ) {
|
||||
primitive->SetData ( (char*)aDataBuff );
|
||||
nsCOMPtr<nsISupports> genericPrimitive ( do_QueryInterface(primitive) );
|
||||
*aPrimitive = genericPrimitive;
|
||||
NS_ADDREF(*aPrimitive);
|
||||
}
|
||||
}
|
||||
else {
|
||||
nsCOMPtr<nsISupportsWString> primitive;
|
||||
nsresult rv = nsComponentManager::CreateInstance(NS_SUPPORTS_WSTRING_PROGID, nsnull,
|
||||
NS_GET_IID(nsISupportsWString), getter_AddRefs(primitive));
|
||||
if ( primitive ) {
|
||||
primitive->SetData ( (unsigned short*)aDataBuff );
|
||||
nsCOMPtr<nsISupports> genericPrimitive ( do_QueryInterface(primitive) );
|
||||
*aPrimitive = genericPrimitive;
|
||||
NS_ADDREF(*aPrimitive);
|
||||
}
|
||||
}
|
||||
|
||||
} // CreatePrimitiveForData
|
||||
|
||||
|
||||
void
|
||||
nsBaseDragService :: CreateDataFromPrimitive ( const char* aFlavor, nsISupports* aPrimitive, void** aDataBuff, PRUint32 aDataLen )
|
||||
{
|
||||
if ( !aDataBuff )
|
||||
return;
|
||||
|
||||
if ( strcmp(aFlavor,kTextMime) == 0 ) {
|
||||
nsCOMPtr<nsISupportsString> plainText ( do_QueryInterface(aPrimitive) );
|
||||
if ( plainText )
|
||||
plainText->GetData ( (char**)aDataBuff );
|
||||
}
|
||||
else {
|
||||
nsCOMPtr<nsISupportsWString> doubleByteText ( do_QueryInterface(aPrimitive) );
|
||||
if ( doubleByteText )
|
||||
doubleByteText->GetData ( (unsigned short**)aDataBuff );
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -45,9 +45,6 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
static void CreatePrimitiveForData ( const char* aFlavor, void* aDataBuff, PRUint32 aDataLen, nsISupports** aPrimitive );
|
||||
static void CreateDataFromPrimitive ( const char* aFlavor, nsISupports* aPrimitive, void** aDataBuff, PRUint32 aDataLen );
|
||||
|
||||
nsCOMPtr<nsISupportsArray> mTransArray;
|
||||
PRBool mCanDrop;
|
||||
PRBool mDoingDrag;
|
||||
|
Loading…
Reference in New Issue
Block a user