New clipboard interface for unix selection clipboard.

This commit is contained in:
pinkerton%netscape.com 2000-04-14 02:52:58 +00:00
parent 7990ffae73
commit 3f8b4c9bc6
5 changed files with 33 additions and 21 deletions

View File

@ -224,7 +224,7 @@ void nsClipboard::Init(void)
//-------------------------------------------------------------------------
NS_IMETHODIMP nsClipboard::SetNativeClipboardData()
NS_IMETHODIMP nsClipboard::SetNativeClipboardData( PRInt32 aWhichClipboard )
{
mIgnoreEmptyNotification = PR_TRUE;
@ -507,7 +507,8 @@ PRBool nsClipboard::DoConvert(gint format)
//
//-------------------------------------------------------------------------
NS_IMETHODIMP
nsClipboard::GetNativeClipboardData(nsITransferable * aTransferable)
nsClipboard::GetNativeClipboardData(nsITransferable * aTransferable,
PRInt32 aWhichClipboard)
{
#ifdef DEBUG_CLIPBOARD
@ -729,7 +730,7 @@ nsClipboard::SelectionReceiver (GtkWidget *aWidget,
*
* @result NS_OK if successful.
*/
NS_IMETHODIMP nsClipboard::ForceDataToClipboard()
NS_IMETHODIMP nsClipboard::ForceDataToClipboard( PRInt32 aWhichClipboard )
{
#ifdef DEBUG_CLIPBOARD
printf(" nsClipboard::ForceDataToClipboard()\n");
@ -744,7 +745,9 @@ NS_IMETHODIMP nsClipboard::ForceDataToClipboard()
}
NS_IMETHODIMP
nsClipboard::HasDataMatchingFlavors(nsISupportsArray* aFlavorList, PRBool * outResult)
nsClipboard::HasDataMatchingFlavors(nsISupportsArray* aFlavorList,
PRInt32 aWhichClipboard,
PRBool * outResult)
{
// XXX this doesn't work right. need to fix it.
@ -932,7 +935,8 @@ void nsClipboard::SelectionClearCB(GtkWidget *aWidget,
nsClipboard *cb = (nsClipboard *)gtk_object_get_data(GTK_OBJECT(aWidget),
"cb");
cb->EmptyClipboard();
//XXX which clipboard do we empty here?!
cb->EmptyClipboard(kGlobalClipboard);
}

View File

@ -43,15 +43,18 @@ public:
virtual ~nsClipboard();
// nsIClipboard
NS_IMETHOD ForceDataToClipboard();
NS_IMETHOD HasDataMatchingFlavors(nsISupportsArray* aFlavorList, PRBool * outResult);
NS_IMETHOD ForceDataToClipboard ( PRInt32 aWhichClipboard );
NS_IMETHOD HasDataMatchingFlavors(nsISupportsArray* aFlavorList,
PRInt32 aWhichClipboard,
PRBool * outResult);
// invisible widget. also used by dragndrop
static GtkWidget *sWidget;
protected:
NS_IMETHOD SetNativeClipboardData();
NS_IMETHOD GetNativeClipboardData(nsITransferable * aTransferable);
NS_IMETHOD SetNativeClipboardData ( PRInt32 aWhichClipboard );
NS_IMETHOD GetNativeClipboardData(nsITransferable * aTransferable,
PRInt32 aWhichClipboard );
PRBool mIgnoreEmptyNotification;

View File

@ -175,8 +175,11 @@ nsresult nsClipboard::SetupNativeDataObject(nsITransferable * aTransferable, IDa
}
//-------------------------------------------------------------------------
NS_IMETHODIMP nsClipboard::SetNativeClipboardData()
NS_IMETHODIMP nsClipboard::SetNativeClipboardData ( PRInt32 aWhichClipboard )
{
if ( aWhichClipboard != kGlobalClipboard )
return NS_ERROR_FAILURE;
mIgnoreEmptyNotification = PR_TRUE;
// make sure we have a good transferable
@ -623,10 +626,10 @@ nsresult nsClipboard::GetDataFromDataObject(IDataObject * aDataObject,
}
//-------------------------------------------------------------------------
NS_IMETHODIMP nsClipboard::GetNativeClipboardData(nsITransferable * aTransferable)
NS_IMETHODIMP nsClipboard::GetNativeClipboardData ( nsITransferable * aTransferable, PRInt32 aWhichClipboard )
{
// make sure we have a good transferable
if (nsnull == aTransferable) {
if ( !aTransferable || aWhichClipboard != kGlobalClipboard ) {
return NS_ERROR_FAILURE;
}
@ -676,10 +679,10 @@ static void PlaceDataOnClipboard(PRUint32 aFormat, char * aData, int aLength)
}
//-------------------------------------------------------------------------
NS_IMETHODIMP nsClipboard::ForceDataToClipboard()
NS_IMETHODIMP nsClipboard::ForceDataToClipboard ( PRInt32 aWhichClipboard )
{
// make sure we have a good transferable
if (nsnull == mTransferable) {
if ( !mTransferable || aWhichClipboard != kGlobalClipboard ) {
return NS_ERROR_FAILURE;
}
@ -732,11 +735,13 @@ NS_IMETHODIMP nsClipboard::ForceDataToClipboard()
}
//-------------------------------------------------------------------------
NS_IMETHODIMP nsClipboard::HasDataMatchingFlavors(nsISupportsArray *aFlavorList,
NS_IMETHODIMP nsClipboard::HasDataMatchingFlavors(nsISupportsArray *aFlavorList, PRInt32 aWhichClipboard,
PRBool *_retval)
{
*_retval = PR_FALSE;
if ( aWhichClipboard != kGlobalClipboard )
return NS_OK;
PRUint32 cnt;
aFlavorList->Count(&cnt);
for (PRUint32 i = 0;i < cnt; i++) {

View File

@ -43,8 +43,8 @@ public:
virtual ~nsClipboard();
// nsIClipboard
NS_IMETHOD ForceDataToClipboard();
NS_IMETHOD HasDataMatchingFlavors(nsISupportsArray *aFlavorList, PRBool *_retval);
NS_IMETHOD ForceDataToClipboard ( PRInt32 aWhichClipboard );
NS_IMETHOD HasDataMatchingFlavors(nsISupportsArray *aFlavorList, PRInt32 aWhichClipboard, PRBool *_retval);
// Internal Native Routines
static nsresult CreateNativeDataObject(nsITransferable * aTransferable,
@ -67,8 +67,8 @@ public:
protected:
NS_IMETHOD SetNativeClipboardData();
NS_IMETHOD GetNativeClipboardData(nsITransferable * aTransferable);
NS_IMETHOD SetNativeClipboardData ( PRInt32 aWhichClipboard );
NS_IMETHOD GetNativeClipboardData ( nsITransferable * aTransferable, PRInt32 aWhichClipboard );
nsIWidget * mWindow;
IDataObject * mDataObj;

View File

@ -2662,7 +2662,7 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
nsresult rv = nsServiceManager::GetService(kCClipboardCID,
NS_GET_IID(nsIClipboard),
(nsISupports **)&clipboard);
clipboard->EmptyClipboard();
clipboard->EmptyClipboard(nsIClipboard::kGlobalClipboard);
nsServiceManager::ReleaseService(kCClipboardCID, clipboard);
} break;