fix for 78010 (implement nsIClipboardHelper). r=pavlov, pinkerton, hewitt, sr=hyatt

This commit is contained in:
dr%netscape.com 2001-05-10 02:35:00 +00:00
Родитель fa4b889925
Коммит 2d2e67c3fa
30 изменённых файлов: 503 добавлений и 311 удалений

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

@ -20,7 +20,7 @@
* *
* Contributor(s): * Contributor(s):
* Travis Bogard <travis@netscape.com> * Travis Bogard <travis@netscape.com>
* Pierre Phaneuf <pp@ludusdesign.com> * Dan Rosen <dr@netscape.com>
*/ */
#ifdef XP_OS2_VACPP #ifdef XP_OS2_VACPP
@ -1195,34 +1195,39 @@ nsWebShell::DoCommand ( const nsAReadableString & inCommand )
NS_IMETHODIMP NS_IMETHODIMP
nsWebShell::CanCutSelection(PRBool* aResult) nsWebShell::CanCutSelection(PRBool* aResult)
{ {
nsresult rv = NS_ERROR_NULL_POINTER; return IsCommandEnabled ( NS_LITERAL_STRING("cmd_cut"), aResult );
if ( aResult )
rv = IsCommandEnabled ( NS_LITERAL_STRING("cmd_cut"), aResult );
return rv;
} }
NS_IMETHODIMP NS_IMETHODIMP
nsWebShell::CanCopySelection(PRBool* aResult) nsWebShell::CanCopySelection(PRBool* aResult)
{ {
nsresult rv = NS_ERROR_NULL_POINTER; return IsCommandEnabled ( NS_LITERAL_STRING("cmd_copy"), aResult );
}
if ( aResult ) NS_IMETHODIMP
rv = IsCommandEnabled ( NS_LITERAL_STRING("cmd_copy"), aResult ); nsWebShell::CanCopyLinkLocation(PRBool* aResult)
{
return IsCommandEnabled ( NS_LITERAL_STRING("cmd_copyLink"), aResult );
}
return rv; NS_IMETHODIMP
nsWebShell::CanCopyImageLocation(PRBool* aResult)
{
return IsCommandEnabled ( NS_LITERAL_STRING("cmd_copyImageLocation"),
aResult );
}
NS_IMETHODIMP
nsWebShell::CanCopyImageContents(PRBool* aResult)
{
return IsCommandEnabled ( NS_LITERAL_STRING("cmd_copyImageContents"),
aResult );
} }
NS_IMETHODIMP NS_IMETHODIMP
nsWebShell::CanPaste(PRBool* aResult) nsWebShell::CanPaste(PRBool* aResult)
{ {
nsresult rv = NS_ERROR_NULL_POINTER; return IsCommandEnabled ( NS_LITERAL_STRING("cmd_paste"), aResult );
if ( aResult )
rv = IsCommandEnabled ( NS_LITERAL_STRING("cmd_paste"), aResult );
return rv;
} }
NS_IMETHODIMP NS_IMETHODIMP
@ -1240,7 +1245,19 @@ nsWebShell::CopySelection(void)
NS_IMETHODIMP NS_IMETHODIMP
nsWebShell::CopyLinkLocation(void) nsWebShell::CopyLinkLocation(void)
{ {
return DoCommand ( NS_LITERAL_STRING("cmd_copy_link") ); return DoCommand ( NS_LITERAL_STRING("cmd_copyLink") );
}
NS_IMETHODIMP
nsWebShell::CopyImageLocation(void)
{
return DoCommand ( NS_LITERAL_STRING("cmd_copyImageLocation") );
}
NS_IMETHODIMP
nsWebShell::CopyImageContents(void)
{
return DoCommand ( NS_LITERAL_STRING("cmd_copyImageContents") );
} }
NS_IMETHODIMP NS_IMETHODIMP

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

@ -11,7 +11,6 @@
* chrome://inspector/content/jsutil/rdf/RDFArray.js * chrome://inspector/content/jsutil/rdf/RDFArray.js
* chrome://inspector/content/jsutil/rdf/RDFU.js * chrome://inspector/content/jsutil/rdf/RDFU.js
* chrome://inspector/content/jsutil/xul/FrameExchange.js * chrome://inspector/content/jsutil/xul/FrameExchange.js
* chrome://inspector/content/jsutil/system/ClipboardUtils.js
* chrome://inspector/content/jsutil/system/file.js * chrome://inspector/content/jsutil/system/file.js
****************************************************************/ ****************************************************************/
@ -32,6 +31,9 @@ const kWindowMediatorIID = "@mozilla.org/rdf/datasource;1?name=window-mediator
const kObserverServiceIID = "@mozilla.org/observer-service;1"; const kObserverServiceIID = "@mozilla.org/observer-service;1";
const kDirServiceCID = "@mozilla.org/file/directory_service;1" const kDirServiceCID = "@mozilla.org/file/directory_service;1"
const kClipboardHelperCID = "@mozilla.org/widget/clipboardhelper;1";
const kGlobalClipboard = Components.interfaces.nsIClipboard.kGlobalClipboard
const nsIWebNavigation = Components.interfaces.nsIWebNavigation; const nsIWebNavigation = Components.interfaces.nsIWebNavigation;
////////////////////////////////////////////////// //////////////////////////////////////////////////
@ -79,6 +81,7 @@ InspectorApp.prototype =
mInitialized: false, mInitialized: false,
mFlasher: null, mFlasher: null,
mIsViewingContent: false, mIsViewingContent: false,
mClipboardHelper: null,
get document() { return this.mDocViewerPane.viewer.viewee }, get document() { return this.mDocViewerPane.viewer.viewee },
get searchRegistry() { return this.mSearchService }, get searchRegistry() { return this.mSearchService },
@ -96,6 +99,8 @@ InspectorApp.prototype =
this.toggleBrowser(true, false); this.toggleBrowser(true, false);
this.toggleSearch(true, false); this.toggleSearch(true, false);
this.setFlashSelected(PrefUtils.getPref("inspector.blink.on")); this.setFlashSelected(PrefUtils.getPref("inspector.blink.on"));
this.mClipboardHelper = XPCU.getService(kClipboardHelperCID, "nsIClipboardHelper");
}, },
initViewerPanes: function() initViewerPanes: function()
@ -292,13 +297,13 @@ InspectorApp.prototype =
var mod = this.mSearchService.currentModule; var mod = this.mSearchService.currentModule;
var idx = this.mSearchService.getSelectedIndex(0); var idx = this.mSearchService.getSelectedIndex(0);
var text = mod.getItemText(idx); var text = mod.getItemText(idx);
ClipboardUtils.writeString(text); this.mClipboardHelper.writeStringToClipboard(text, kGlobalClipboard);
}, },
copySearchItemAll: function() copySearchItemAll: function()
{ {
var text = this.getAllSearchItemText(); var text = this.getAllSearchItemText();
ClipboardUtils.writeString(text); this.mClipboardHelper.writeStringToClipboard(text, kGlobalClipboard);
}, },
saveSearchItemText: function() saveSearchItemText: function()

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

@ -18,7 +18,6 @@
<script type="application/x-javascript" src="chrome://inspector/content/jsutil/rdf/RDFU.js"/> <script type="application/x-javascript" src="chrome://inspector/content/jsutil/rdf/RDFU.js"/>
<script type="application/x-javascript" src="chrome://inspector/content/jsutil/rdf/RDFArray.js"/> <script type="application/x-javascript" src="chrome://inspector/content/jsutil/rdf/RDFArray.js"/>
<script type="application/x-javascript" src="chrome://inspector/content/jsutil/xul/FrameExchange.js"/> <script type="application/x-javascript" src="chrome://inspector/content/jsutil/xul/FrameExchange.js"/>
<script type="application/x-javascript" src="chrome://inspector/content/jsutil/system/ClipboardUtils.js"/>
<script type="application/x-javascript" src="chrome://inspector/content/jsutil/system/PrefUtils.js"/> <script type="application/x-javascript" src="chrome://inspector/content/jsutil/system/PrefUtils.js"/>
<script type="application/x-javascript" src="chrome://inspector/content/jsutil/system/FilePickerUtils.js"/> <script type="application/x-javascript" src="chrome://inspector/content/jsutil/system/FilePickerUtils.js"/>
<script type="application/x-javascript" src="chrome://inspector/content/jsutil/system/file.js"/> <script type="application/x-javascript" src="chrome://inspector/content/jsutil/system/file.js"/>

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

@ -23,7 +23,6 @@ inspector.jar:
content/inspector/extensions/wsm-colorpicker.js (extensions/wsm-colorpicker.js) content/inspector/extensions/wsm-colorpicker.js (extensions/wsm-colorpicker.js)
content/inspector/jsutil/rdf/RDFU.js (jsutil/rdf/RDFU.js) content/inspector/jsutil/rdf/RDFU.js (jsutil/rdf/RDFU.js)
content/inspector/jsutil/rdf/RDFArray.js (jsutil/rdf/RDFArray.js) content/inspector/jsutil/rdf/RDFArray.js (jsutil/rdf/RDFArray.js)
content/inspector/jsutil/system/ClipboardUtils.js (jsutil/system/ClipboardUtils.js)
content/inspector/jsutil/system/PrefUtils.js (jsutil/system/PrefUtils.js) content/inspector/jsutil/system/PrefUtils.js (jsutil/system/PrefUtils.js)
content/inspector/jsutil/system/FilePickerUtils.js (jsutil/system/FilePickerUtils.js) content/inspector/jsutil/system/FilePickerUtils.js (jsutil/system/FilePickerUtils.js)
content/inspector/jsutil/system/DiskSearch.js (jsutil/system/DiskSearch.js) content/inspector/jsutil/system/DiskSearch.js (jsutil/system/DiskSearch.js)
@ -77,4 +76,4 @@ inspector.jar:
content/inspector/viewers/stylesheets/stylesheets.xul (viewers/stylesheets/stylesheets.xul) content/inspector/viewers/stylesheets/stylesheets.xul (viewers/stylesheets/stylesheets.xul)
content/inspector/viewers/stylesheets/stylesheets.js (viewers/stylesheets/stylesheets.js) content/inspector/viewers/stylesheets/stylesheets.js (viewers/stylesheets/stylesheets.js)
content/inspector/viewers/xblBindings/xblBindings.xul (viewers/xblBindings/xblBindings.xul) content/inspector/viewers/xblBindings/xblBindings.xul (viewers/xblBindings/xblBindings.xul)
content/inspector/viewers/xblBindings/xblBindings.js (viewers/xblBindings/xblBindings.js) content/inspector/viewers/xblBindings/xblBindings.js (viewers/xblBindings/xblBindings.js)

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

@ -1,35 +0,0 @@
/***************************************************************
* ClipboardUtils -------------------------------------------------
* Utility functions for painless clipboard interaction.
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* REQUIRED IMPORTS:
****************************************************************/
//////////// global variables /////////////////////
//////////// global constants ////////////////////
////////////////////////////////////////////////////////////////////////////
//// class ClipboardUtils
var ClipboardUtils = {
writeString: function(aString)
{
var clipboard = XPCU.getService("@mozilla.org/widget/clipboard;1", "nsIClipboard");
var transferable = XPCU.createInstance("@mozilla.org/widget/transferable;1", "nsITransferable");
if (clipboard && transferable) {
transferable.addDataFlavor("text/unicode");
var data = XPCU.createInstance("@mozilla.org/supports-wstring;1", "nsISupportsWString");
if (data) {
data.data = aString;
transferable.setTransferData("text/unicode", data, aString.length * 2);
clipboard.setData(transferable, null, Components.interfaces.nsIClipboard.kGlobalClipboard);
}
}
}
};

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

@ -124,6 +124,7 @@
// Drag & Drop, Clipboard // Drag & Drop, Clipboard
#include "nsWidgetsCID.h" #include "nsWidgetsCID.h"
#include "nsIClipboard.h" #include "nsIClipboard.h"
#include "nsIClipboardHelper.h"
#include "nsIDocShellTreeItem.h" #include "nsIDocShellTreeItem.h"
#include "nsIURI.h" #include "nsIURI.h"
#include "nsIEventQueue.h" #include "nsIEventQueue.h"
@ -1203,11 +1204,6 @@ protected:
private: private:
// copy string to clipboard methods
static nsresult CopyStringToClipboard(nsString& aString,
PRInt32 aClipboardID);
static nsresult CopyStringToClipboard(nsString& aString);
void FreeDynamicStack(); void FreeDynamicStack();
//helper funcs for disabing autoscrolling //helper funcs for disabing autoscrolling
@ -4009,79 +4005,6 @@ PresShell::ScrollFrameIntoView(nsIFrame *aFrame,
return rv; return rv;
} }
// CopyStringToClipboard: copy simple string to clipboard
nsresult PresShell::CopyStringToClipboard(nsString& aString,
PRInt32 aClipboardID)
{
nsresult rv;
// get the clipboard
nsCOMPtr<nsIClipboard>
clipboard(do_GetService("@mozilla.org/widget/clipboard;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(clipboard, NS_ERROR_FAILURE);
// create a transferable for putting data on the clipboard
nsCOMPtr<nsITransferable>
trans(do_CreateInstance("@mozilla.org/widget/transferable;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(trans, NS_ERROR_FAILURE);
// Add the text data flavor to the transferable
rv = trans->AddDataFlavor(kUnicodeMime);
NS_ENSURE_SUCCESS(rv, rv);
// get wStrings to hold clip data
nsCOMPtr<nsISupportsWString>
data(do_CreateInstance("@mozilla.org/supports-wstring;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(data, NS_ERROR_FAILURE);
// populate the string
rv = data->SetData(NS_CONST_CAST(PRUnichar*, aString.GetUnicode()));
NS_ENSURE_SUCCESS(rv, rv);
// qi the data object an |nsISupports| so that when the transferable holds
// onto it, it will addref the correct interface.
nsCOMPtr<nsISupports> genericData(do_QueryInterface(data, &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(genericData, NS_ERROR_FAILURE);
// set the transfer data
rv = trans->SetTransferData(kUnicodeMime, genericData,
aString.Length() * 2);
NS_ENSURE_SUCCESS(rv, rv);
// put the transferable on the clipboard
rv = clipboard->SetData(trans, nsnull, aClipboardID);
NS_ENSURE_SUCCESS(rv, rv);
return NS_OK;
}
// CopyStringToClipboard: copy string to clipboard(s) for platform
nsresult PresShell::CopyStringToClipboard(nsString& aString)
{
#ifdef DEBUG_dr
printf("dr :: CopyStringToClipboard: %s\n",
NS_ConvertUCS2toUTF8(aString).get());
#endif
nsresult rv;
// copy to the global clipboard
rv = CopyStringToClipboard(aString, nsIClipboard::kGlobalClipboard);
NS_ENSURE_SUCCESS(rv, rv);
#ifdef XP_UNIX
// unix also needs us to copy to the selection clipboard
rv = CopyStringToClipboard(aString, nsIClipboard::kSelectionClipboard);
NS_ENSURE_SUCCESS(rv, rv);
#endif
return NS_OK;
}
// DoCopyLinkLocation: copy link location to clipboard // DoCopyLinkLocation: copy link location to clipboard
NS_IMETHODIMP PresShell::DoCopyLinkLocation(nsIDOMNode* aNode) NS_IMETHODIMP PresShell::DoCopyLinkLocation(nsIDOMNode* aNode)
{ {
@ -4096,11 +4019,19 @@ NS_IMETHODIMP PresShell::DoCopyLinkLocation(nsIDOMNode* aNode)
nsCOMPtr<nsIDOMHTMLAnchorElement> anchor(do_QueryInterface(aNode, &rv)); nsCOMPtr<nsIDOMHTMLAnchorElement> anchor(do_QueryInterface(aNode, &rv));
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);
if (anchor) { if (anchor) {
// if so, copy the link: // if so, get the href
nsAutoString anchorText; nsAutoString anchorText;
rv = anchor->GetHref(anchorText); rv = anchor->GetHref(anchorText);
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);
return CopyStringToClipboard(anchorText);
// get the clipboard helper
nsCOMPtr<nsIClipboardHelper>
clipboard(do_GetService("@mozilla.org/widget/clipboardhelper;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(clipboard, NS_ERROR_FAILURE);
// copy the href onto the clipboard
return clipboard->CopyString(anchorText);
} }
// if no link, fail. // if no link, fail.
@ -4121,11 +4052,19 @@ NS_IMETHODIMP PresShell::DoCopyImageLocation(nsIDOMNode* aNode)
nsCOMPtr<nsIDOMHTMLImageElement> img(do_QueryInterface(aNode, &rv)); nsCOMPtr<nsIDOMHTMLImageElement> img(do_QueryInterface(aNode, &rv));
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);
if (img) { if (img) {
// if so, copy the location: // if so, get the src
nsAutoString srcText; nsAutoString srcText;
rv = img->GetSrc(srcText); rv = img->GetSrc(srcText);
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);
return CopyStringToClipboard(srcText);
// get the clipboard helper
nsCOMPtr<nsIClipboardHelper>
clipboard(do_GetService("@mozilla.org/widget/clipboardhelper;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(clipboard, NS_ERROR_FAILURE);
// copy the src onto the clipboard
return clipboard->CopyString(srcText);
} }
// if no image, fail. // if no image, fail.

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

@ -124,6 +124,7 @@
// Drag & Drop, Clipboard // Drag & Drop, Clipboard
#include "nsWidgetsCID.h" #include "nsWidgetsCID.h"
#include "nsIClipboard.h" #include "nsIClipboard.h"
#include "nsIClipboardHelper.h"
#include "nsIDocShellTreeItem.h" #include "nsIDocShellTreeItem.h"
#include "nsIURI.h" #include "nsIURI.h"
#include "nsIEventQueue.h" #include "nsIEventQueue.h"
@ -1203,11 +1204,6 @@ protected:
private: private:
// copy string to clipboard methods
static nsresult CopyStringToClipboard(nsString& aString,
PRInt32 aClipboardID);
static nsresult CopyStringToClipboard(nsString& aString);
void FreeDynamicStack(); void FreeDynamicStack();
//helper funcs for disabing autoscrolling //helper funcs for disabing autoscrolling
@ -4009,79 +4005,6 @@ PresShell::ScrollFrameIntoView(nsIFrame *aFrame,
return rv; return rv;
} }
// CopyStringToClipboard: copy simple string to clipboard
nsresult PresShell::CopyStringToClipboard(nsString& aString,
PRInt32 aClipboardID)
{
nsresult rv;
// get the clipboard
nsCOMPtr<nsIClipboard>
clipboard(do_GetService("@mozilla.org/widget/clipboard;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(clipboard, NS_ERROR_FAILURE);
// create a transferable for putting data on the clipboard
nsCOMPtr<nsITransferable>
trans(do_CreateInstance("@mozilla.org/widget/transferable;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(trans, NS_ERROR_FAILURE);
// Add the text data flavor to the transferable
rv = trans->AddDataFlavor(kUnicodeMime);
NS_ENSURE_SUCCESS(rv, rv);
// get wStrings to hold clip data
nsCOMPtr<nsISupportsWString>
data(do_CreateInstance("@mozilla.org/supports-wstring;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(data, NS_ERROR_FAILURE);
// populate the string
rv = data->SetData(NS_CONST_CAST(PRUnichar*, aString.GetUnicode()));
NS_ENSURE_SUCCESS(rv, rv);
// qi the data object an |nsISupports| so that when the transferable holds
// onto it, it will addref the correct interface.
nsCOMPtr<nsISupports> genericData(do_QueryInterface(data, &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(genericData, NS_ERROR_FAILURE);
// set the transfer data
rv = trans->SetTransferData(kUnicodeMime, genericData,
aString.Length() * 2);
NS_ENSURE_SUCCESS(rv, rv);
// put the transferable on the clipboard
rv = clipboard->SetData(trans, nsnull, aClipboardID);
NS_ENSURE_SUCCESS(rv, rv);
return NS_OK;
}
// CopyStringToClipboard: copy string to clipboard(s) for platform
nsresult PresShell::CopyStringToClipboard(nsString& aString)
{
#ifdef DEBUG_dr
printf("dr :: CopyStringToClipboard: %s\n",
NS_ConvertUCS2toUTF8(aString).get());
#endif
nsresult rv;
// copy to the global clipboard
rv = CopyStringToClipboard(aString, nsIClipboard::kGlobalClipboard);
NS_ENSURE_SUCCESS(rv, rv);
#ifdef XP_UNIX
// unix also needs us to copy to the selection clipboard
rv = CopyStringToClipboard(aString, nsIClipboard::kSelectionClipboard);
NS_ENSURE_SUCCESS(rv, rv);
#endif
return NS_OK;
}
// DoCopyLinkLocation: copy link location to clipboard // DoCopyLinkLocation: copy link location to clipboard
NS_IMETHODIMP PresShell::DoCopyLinkLocation(nsIDOMNode* aNode) NS_IMETHODIMP PresShell::DoCopyLinkLocation(nsIDOMNode* aNode)
{ {
@ -4096,11 +4019,19 @@ NS_IMETHODIMP PresShell::DoCopyLinkLocation(nsIDOMNode* aNode)
nsCOMPtr<nsIDOMHTMLAnchorElement> anchor(do_QueryInterface(aNode, &rv)); nsCOMPtr<nsIDOMHTMLAnchorElement> anchor(do_QueryInterface(aNode, &rv));
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);
if (anchor) { if (anchor) {
// if so, copy the link: // if so, get the href
nsAutoString anchorText; nsAutoString anchorText;
rv = anchor->GetHref(anchorText); rv = anchor->GetHref(anchorText);
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);
return CopyStringToClipboard(anchorText);
// get the clipboard helper
nsCOMPtr<nsIClipboardHelper>
clipboard(do_GetService("@mozilla.org/widget/clipboardhelper;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(clipboard, NS_ERROR_FAILURE);
// copy the href onto the clipboard
return clipboard->CopyString(anchorText);
} }
// if no link, fail. // if no link, fail.
@ -4121,11 +4052,19 @@ NS_IMETHODIMP PresShell::DoCopyImageLocation(nsIDOMNode* aNode)
nsCOMPtr<nsIDOMHTMLImageElement> img(do_QueryInterface(aNode, &rv)); nsCOMPtr<nsIDOMHTMLImageElement> img(do_QueryInterface(aNode, &rv));
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);
if (img) { if (img) {
// if so, copy the location: // if so, get the src
nsAutoString srcText; nsAutoString srcText;
rv = img->GetSrc(srcText); rv = img->GetSrc(srcText);
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);
return CopyStringToClipboard(srcText);
// get the clipboard helper
nsCOMPtr<nsIClipboardHelper>
clipboard(do_GetService("@mozilla.org/widget/clipboardhelper;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(clipboard, NS_ERROR_FAILURE);
// copy the src onto the clipboard
return clipboard->CopyString(srcText);
} }
// if no image, fail. // if no image, fail.

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

@ -687,35 +687,11 @@ function CopyEmailAddress(emailAddressNode)
if (emailAddressNode) if (emailAddressNode)
{ {
var emailAddress = emailAddressNode.getAttribute("emailAddress"); var emailAddress = emailAddressNode.getAttribute("emailAddress");
if (emailAddress)
{
// This code stolen from nsContextMenu.js.
// Get clipboard.
var iid = Components.interfaces[ "nsIClipboard" ];
var clipboard = Components.classes[ "@mozilla.org/widget/clipboard;1" ].getService( iid );
// Create tranferable that will transfer the text. var contractid = "@mozilla.org/widget/clipboardhelper;1";
iid = Components.interfaces[ "nsITransferable" ]; var iid = Components.interfaces.nsIClipboardHelper;
var transferable = Components.classes[ "@mozilla.org/widget/transferable;1" ].createInstance( iid ); var clipboard = Components.classes[contractid].getService(iid);
clipboard.copyString(emailAddress);
if ( clipboard && transferable )
{
transferable.addDataFlavor( "text/unicode" );
// Create wrapper for text.
iid = Components.interfaces[ "nsISupportsWString" ];
var data = Components.classes[ "@mozilla.org/supports-wstring;1" ].createInstance( iid );
if ( data )
{
data.data = emailAddress;
transferable.setTransferData( "text/unicode", data, emailAddress.length * 2 );
// Put on clipboard.
clipboard.setData( transferable,
null,
Components.interfaces.nsIClipboard.kGlobalClipboard );
}
}
}
} }
} }

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

@ -1,4 +1,4 @@
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* *
* The contents of this file are subject to the Mozilla Public * The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file * License Version 1.1 (the "License"); you may not use this file
@ -17,6 +17,7 @@
* Copyright (C) 1999, Mozilla. All Rights Reserved. * Copyright (C) 1999, Mozilla. All Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* Dan Rosen <dr@netscape.com>
*/ */
#include "nsISupports.idl" #include "nsISupports.idl"
@ -27,50 +28,78 @@
[scriptable, uuid(b8100c90-73be-11d2-92a5-00105a1b0d64)] [scriptable, uuid(b8100c90-73be-11d2-92a5-00105a1b0d64)]
interface nsIClipboardCommands : nsISupports { interface nsIClipboardCommands : nsISupports {
/**
* Returns whether there is a selection and it is not read-only.
*/
boolean canCutSelection();
/** /**
* Returns whether there is a selection and it is copyable. * Returns whether there is a selection and it is not read-only.
*/ */
boolean canCopySelection(); boolean canCutSelection();
/** /**
* Returns whether the current contents of the clipboard can be * Returns whether there is a selection and it is copyable.
* pasted and if the current selection is not read-only. */
*/ boolean canCopySelection();
boolean canPaste();
/** /**
* Cut the current selection onto the clipboard. * Returns whether we can copy a link location.
*/ */
void cutSelection(); boolean canCopyLinkLocation();
/** /**
* Copy the current selection onto the clipboard. * Returns whether we can copy an image location.
*/ */
void copySelection(); boolean canCopyImageLocation();
/**
* Copy the URL of the current selection, say for an <IMG> inside an <A>
*/
void copyLinkLocation();
/** /**
* Paste the contents of the clipboard into the current selection. * Returns whether we can copy an image's contents.
*/ */
void paste(); boolean canCopyImageContents();
/** /**
* Select the entire contents. * Returns whether the current contents of the clipboard can be
*/ * pasted and if the current selection is not read-only.
void selectAll(); */
boolean canPaste();
/**
* Cut the current selection onto the clipboard.
*/
void cutSelection();
/**
* Copy the current selection onto the clipboard.
*/
void copySelection();
/**
* Copy the link location of the current selection (e.g.,
* the |href| attribute of a selected |a| tag).
*/
void copyLinkLocation();
/**
* Copy the location of the selected image.
*/
void copyImageLocation();
/**
* Copy the contents of the selected image.
*/
void copyImageContents();
/**
* Paste the contents of the clipboard into the current selection.
*/
void paste();
/**
* Select the entire contents.
*/
void selectAll();
/**
* Clear the current selection (if any). Insertion point ends up
* at beginning of current selection.
*/
void selectNone();
/**
* Clear the current selection (if any). Insertion point ends up
* at beginning of current selection.
*/
void selectNone();
}; };

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

@ -13,6 +13,7 @@ nsIDragSession.idl
nsIDragService.idl nsIDragService.idl
nsIFormatConverter.idl nsIFormatConverter.idl
nsIClipboard.idl nsIClipboard.idl
nsIClipboardHelper.idl
nsIClipboardOwner.idl nsIClipboardOwner.idl
nsIRollupListener.idl nsIRollupListener.idl
nsIBaseWindow.idl nsIBaseWindow.idl

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

@ -87,6 +87,7 @@ XPIDLSRCS = \
nsIDragTracker.idl \ nsIDragTracker.idl \
nsIFormatConverter.idl \ nsIFormatConverter.idl \
nsIClipboard.idl \ nsIClipboard.idl \
nsIClipboardHelper.idl \
nsIClipboardOwner.idl \ nsIClipboardOwner.idl \
nsIRollupListener.idl \ nsIRollupListener.idl \
nsIMenuRollup.idl \ nsIMenuRollup.idl \

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

@ -39,6 +39,7 @@ XPIDLSRCS = \
.\nsIDragTracker.idl \ .\nsIDragTracker.idl \
.\nsIFormatConverter.idl \ .\nsIFormatConverter.idl \
.\nsIClipboard.idl \ .\nsIClipboard.idl \
.\nsIClipboardHelper.idl \
.\nsIClipboardOwner.idl \ .\nsIClipboardOwner.idl \
.\nsIRollupListener.idl \ .\nsIRollupListener.idl \
.\nsIMenuRollup.idl \ .\nsIMenuRollup.idl \

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

@ -0,0 +1,57 @@
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Mozilla browser.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corp. Portions created by Netscape are Copyright (C) 2001 Netscape
* Communications Corp. All Rights Reserved.
*
* Original Author:
* Dan Rosen <dr@netscape.com>
*
* Contributor(s):
*
*/
#include "nsISupports.idl"
#include "nsIClipboard.idl"
%{ C++
#include "nsString.h" // needed for AString -> nsAReadableString, unfortunately
%}
/**
* helper service for common uses of nsIClipboard.
*/
[scriptable, uuid(44073a98-1dd2-11b2-8600-d0ae854dbe93)]
interface nsIClipboardHelper : nsISupports
{
/**
* copy string to given clipboard
*
* @param aString, the string to copy to the clipboard
* @param aClipboardID, the ID of the clipboard to copy to
* (eg. kSelectionClipboard -- see nsIClipboard.idl)
*/
void copyStringToClipboard(in AString aString, in long aClipboardID);
/**
* copy string to (default) clipboard
*
* @param aString, the string to copy to the clipboard
*/
void copyString(in AString aString);
};

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

@ -17,7 +17,8 @@
* Copyright (C) 1998 Netscape Communications Corporation. All * Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved. * Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* Dan Rosen <dr@netscape.com>
*/ */
/* 2d96b3d0-c051-11d1-a827-0040959a28c9 */ /* 2d96b3d0-c051-11d1-a827-0040959a28c9 */
@ -192,6 +193,10 @@
#define NS_CLIPBOARD_CID \ #define NS_CLIPBOARD_CID \
{ 0x8b5314ba, 0xdb01, 0x11d2, { 0x96, 0xce, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } } { 0x8b5314ba, 0xdb01, 0x11d2, { 0x96, 0xce, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } }
// {77221D5A-1DD2-11B2-8C69-C710F15D2ED5}
#define NS_CLIPBOARDHELPER_CID \
{ 0x77221d5a, 0x1dd2, 0x11b2, { 0x8c, 0x69, 0xc7, 0x10, 0xf1, 0x5d, 0x2e, 0xd5 } }
// {8B5314BD-DB01-11d2-96CE-0060B0FB9956} // {8B5314BD-DB01-11d2-96CE-0060B0FB9956}
#define NS_DATAFLAVOR_CID \ #define NS_DATAFLAVOR_CID \
{ 0x8b5314bd, 0xdb01, 0x11d2, { 0x96, 0xce, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } } { 0x8b5314bd, 0xdb01, 0x11d2, { 0x96, 0xce, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } }

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

@ -17,7 +17,8 @@
* Copyright (C) 1998 Netscape Communications Corporation. All * Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved. * Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* Dan Rosen <dr@netscape.com>
*/ */
#include "nsIFactory.h" #include "nsIFactory.h"
@ -48,6 +49,7 @@
// Drag & Drop, Clipboard // Drag & Drop, Clipboard
#include "nsClipboard.h" #include "nsClipboard.h"
#include "nsClipboardHelper.h"
#include "nsTransferable.h" #include "nsTransferable.h"
#include "nsHTMLFormatConverter.h" #include "nsHTMLFormatConverter.h"
#include "nsDragService.h" #include "nsDragService.h"
@ -76,6 +78,7 @@ static NS_DEFINE_IID(kCFontRetrieverService, NS_FONTRETRIEVERSERVICE_CID);
// Drag & Drop, Clipboard // Drag & Drop, Clipboard
static NS_DEFINE_IID(kCDataObj, NS_DATAOBJ_CID); static NS_DEFINE_IID(kCDataObj, NS_DATAOBJ_CID);
static NS_DEFINE_IID(kCClipboard, NS_CLIPBOARD_CID); static NS_DEFINE_IID(kCClipboard, NS_CLIPBOARD_CID);
static NS_DEFINE_IID(kCClipboardHelper, NS_CLIPBOARDHELPER_CID);
static NS_DEFINE_IID(kCTransferable, NS_TRANSFERABLE_CID); static NS_DEFINE_IID(kCTransferable, NS_TRANSFERABLE_CID);
static NS_DEFINE_IID(kCDataFlavor, NS_DATAFLAVOR_CID); static NS_DEFINE_IID(kCDataFlavor, NS_DATAFLAVOR_CID);
static NS_DEFINE_IID(kCHTMLFormatConverter, NS_HTMLFORMATCONVERTER_CID); static NS_DEFINE_IID(kCHTMLFormatConverter, NS_HTMLFORMATCONVERTER_CID);
@ -223,6 +226,9 @@ nsresult nsWidgetFactory::CreateInstance(nsISupports *aOuter,
else if (mClassID.Equals(kCClipboard)) { else if (mClassID.Equals(kCClipboard)) {
inst = (nsISupports*)new nsClipboard(); inst = (nsISupports*)new nsClipboard();
} }
else if (mClassID.Equals(kCClipboardHelper)) {
inst = (nsISupports*)new nsClipboardHelper();
}
else if (mClassID.Equals(kCHTMLFormatConverter)) { else if (mClassID.Equals(kCHTMLFormatConverter)) {
inst = (nsISupports*)new nsHTMLFormatConverter(); inst = (nsISupports*)new nsHTMLFormatConverter();
} }

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

@ -17,7 +17,8 @@
* Copyright (C) 1998 Netscape Communications Corporation. All * Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved. * Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* Dan Rosen <dr@netscape.com>
*/ */
#include "nsIFactory.h" #include "nsIFactory.h"
@ -46,6 +47,7 @@
// Drag & Drop, Clipboard // Drag & Drop, Clipboard
#include "nsClipboard.h" #include "nsClipboard.h"
#include "nsClipboardHelper.h"
#include "nsTransferable.h" #include "nsTransferable.h"
#include "nsHTMLFormatConverter.h" #include "nsHTMLFormatConverter.h"
#include "nsDragService.h" #include "nsDragService.h"
@ -67,6 +69,7 @@ static NS_DEFINE_IID(kCTimerManager, NS_TIMERMANAGER_CID);
// Drag & Drop, Clipboard // Drag & Drop, Clipboard
static NS_DEFINE_IID(kCDataObj, NS_DATAOBJ_CID); static NS_DEFINE_IID(kCDataObj, NS_DATAOBJ_CID);
static NS_DEFINE_IID(kCClipboard, NS_CLIPBOARD_CID); static NS_DEFINE_IID(kCClipboard, NS_CLIPBOARD_CID);
static NS_DEFINE_IID(kCClipboardHelper, NS_CLIPBOARDHELPER_CID);
static NS_DEFINE_IID(kCTransferable, NS_TRANSFERABLE_CID); static NS_DEFINE_IID(kCTransferable, NS_TRANSFERABLE_CID);
static NS_DEFINE_IID(kCHTMLFormatConverter, NS_HTMLFORMATCONVERTER_CID); static NS_DEFINE_IID(kCHTMLFormatConverter, NS_HTMLFORMATCONVERTER_CID);
static NS_DEFINE_IID(kCDragService, NS_DRAGSERVICE_CID); static NS_DEFINE_IID(kCDragService, NS_DRAGSERVICE_CID);
@ -202,6 +205,9 @@ nsresult nsWidgetFactory::CreateInstance( nsISupports* aOuter,
else if (mClassID.Equals(kCClipboard)) { else if (mClassID.Equals(kCClipboard)) {
inst = (nsISupports*)(nsBaseClipboard *)new nsClipboard(); inst = (nsISupports*)(nsBaseClipboard *)new nsClipboard();
} }
else if (mClassID.Equals(kCClipboardHelper)) {
inst = (nsISupports*)new nsClipboardHelper();
}
else if (mClassID.Equals(kCDragService)) { else if (mClassID.Equals(kCDragService)) {
inst = (nsISupports*)(nsIDragService *)new nsDragService(); inst = (nsISupports*)(nsIDragService *)new nsDragService();
} }

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

@ -19,7 +19,8 @@
* *
* Contributor(s): * Contributor(s):
* Stuart Parmenter <pavlov@netscape.com> * Stuart Parmenter <pavlov@netscape.com>
* Mike Pinkerton <pinkerton@netscape.com> * Mike Pinkerton <pinkerton@netscape.com>
* Dan Rosen <dr@netscape.com>
*/ */
#include "nsClipboard.h" #include "nsClipboard.h"
@ -271,7 +272,9 @@ NS_IMETHODIMP nsClipboard::EmptyClipboard(PRInt32 aWhichClipboard)
NS_IMETHODIMP nsClipboard::SupportsSelectionClipboard(PRBool *_retval) NS_IMETHODIMP nsClipboard::SupportsSelectionClipboard(PRBool *_retval)
{ {
*_retval = PR_TRUE; // we don't suport the selection clipboard by default. NS_ENSURE_ARG_POINTER(_retval);
*_retval = PR_TRUE; // we support the selection clipboard on unix.
return NS_OK; return NS_OK;
} }

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

@ -19,6 +19,7 @@
* Contributor(s): * Contributor(s):
* Christopher Blizzzard <blizzard@mozilla.org> * Christopher Blizzzard <blizzard@mozilla.org>
* Stuart Parmenter <pavlov@netscape.com> * Stuart Parmenter <pavlov@netscape.com>
* Dan Rosen <dr@netscape.com>
*/ */
#include "nsIGenericFactory.h" #include "nsIGenericFactory.h"
@ -37,6 +38,7 @@
#include "nsLabel.h" #include "nsLabel.h"
#include "nsTransferable.h" #include "nsTransferable.h"
#include "nsClipboard.h" #include "nsClipboard.h"
#include "nsClipboardHelper.h"
#include "nsHTMLFormatConverter.h" #include "nsHTMLFormatConverter.h"
#include "nsFontRetrieverService.h" #include "nsFontRetrieverService.h"
#include "nsDragService.h" #include "nsDragService.h"
@ -61,6 +63,7 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsLookAndFeel)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsLabel) NS_GENERIC_FACTORY_CONSTRUCTOR(nsLabel)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransferable) NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransferable)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboard) NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboard)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboardHelper)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLFormatConverter) NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLFormatConverter)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFontRetrieverService) NS_GENERIC_FACTORY_CONSTRUCTOR(nsFontRetrieverService)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragService) NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragService)
@ -183,9 +186,9 @@ static nsModuleComponentInfo components[] =
// "@mozilla.org/widget/sound/gtk;1" // "@mozilla.org/widget/sound/gtk;1"
"@mozilla.org/sound;1", "@mozilla.org/sound;1",
nsSoundConstructor }, nsSoundConstructor },
{ "Transferrable", { "Transferable",
NS_TRANSFERABLE_CID, NS_TRANSFERABLE_CID,
// "@mozilla.org/widget/transferrable/gtk;1", // "@mozilla.org/widget/transferable/gtk;1",
"@mozilla.org/widget/transferable;1", "@mozilla.org/widget/transferable;1",
nsTransferableConstructor }, nsTransferableConstructor },
{ "Gtk Clipboard", { "Gtk Clipboard",
@ -193,6 +196,10 @@ static nsModuleComponentInfo components[] =
// "@mozilla.org/widget/clipboard/gtk;1", // "@mozilla.org/widget/clipboard/gtk;1",
"@mozilla.org/widget/clipboard;1", "@mozilla.org/widget/clipboard;1",
nsClipboardConstructor }, nsClipboardConstructor },
{ "Clipboard Helper",
NS_CLIPBOARDHELPER_CID,
"@mozilla.org/widget/clipboardhelper;1",
nsClipboardHelperConstructor },
{ "HTML Format Converter", { "HTML Format Converter",
NS_HTMLFORMATCONVERTER_CID, NS_HTMLFORMATCONVERTER_CID,
"@mozilla.org/widget/htmlformatconverter/gtk;1", "@mozilla.org/widget/htmlformatconverter/gtk;1",

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

@ -18,6 +18,7 @@
* Rights Reserved. * Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* Dan Rosen <dr@netscape.com>
*/ */
#include "nsIFactory.h" #include "nsIFactory.h"
@ -55,6 +56,7 @@
#include "nsFileWidget.h" #include "nsFileWidget.h"
#include "nsClipboard.h" #include "nsClipboard.h"
#include "nsClipboardHelper.h"
#include "nsTransferable.h" #include "nsTransferable.h"
#include "nsHTMLFormatConverter.h" #include "nsHTMLFormatConverter.h"
#include "nsDragService.h" #include "nsDragService.h"
@ -108,6 +110,7 @@ static NS_DEFINE_CID(kCPopUpMenu, NS_POPUPMENU_CID);
// Drag and Drop/Clipboard // Drag and Drop/Clipboard
static NS_DEFINE_CID(kCDataFlavor, NS_DATAFLAVOR_CID); static NS_DEFINE_CID(kCDataFlavor, NS_DATAFLAVOR_CID);
static NS_DEFINE_CID(kCClipboard, NS_CLIPBOARD_CID); static NS_DEFINE_CID(kCClipboard, NS_CLIPBOARD_CID);
static NS_DEFINE_CID(kCClipboardHelper, NS_CLIPBOARDHELPER_CID);
static NS_DEFINE_CID(kCTransferable, NS_TRANSFERABLE_CID); static NS_DEFINE_CID(kCTransferable, NS_TRANSFERABLE_CID);
static NS_DEFINE_CID(kCHTMLFormatConverter, NS_HTMLFORMATCONVERTER_CID); static NS_DEFINE_CID(kCHTMLFormatConverter, NS_HTMLFORMATCONVERTER_CID);
static NS_DEFINE_CID(kCDragService, NS_DRAGSERVICE_CID); static NS_DEFINE_CID(kCDragService, NS_DRAGSERVICE_CID);
@ -269,6 +272,8 @@ nsresult nsWidgetFactory::CreateInstance(nsISupports *aOuter,
inst = (nsISupports*)new nsHTMLFormatConverter(); inst = (nsISupports*)new nsHTMLFormatConverter();
else if (mClassID.Equals(kCClipboard)) else if (mClassID.Equals(kCClipboard))
inst = (nsISupports*)new nsClipboard(); inst = (nsISupports*)new nsClipboard();
else if (mClassID.Equals(kCClipboardHelper))
inst = (nsISupports*)new nsClipboardHelper();
else if (mClassID.Equals(kCDragService)) else if (mClassID.Equals(kCDragService))
inst = (nsISupports*)NS_STATIC_CAST(nsIDragService*, new nsDragService()); inst = (nsISupports*)NS_STATIC_CAST(nsIDragService*, new nsDragService());
#ifdef IBMBIDI #ifdef IBMBIDI

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

@ -17,7 +17,8 @@
* Copyright (C) 1998 Netscape Communications Corporation. All * Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved. * Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* Dan Rosen <dr@netscape.com>
*/ */
#include "nsIFactory.h" #include "nsIFactory.h"
@ -44,6 +45,7 @@
// Drag & Drop, Clipboard // Drag & Drop, Clipboard
// #include "nsClipboard.h" // #include "nsClipboard.h"
#include "nsClipboardHelper.h"
#include "nsTransferable.h" #include "nsTransferable.h"
#include "nsHTMLFormatConverter.h" #include "nsHTMLFormatConverter.h"
@ -77,6 +79,7 @@ static NS_DEFINE_IID(kCFontRetrieverService, NS_FONTRETRIEVERSERVICE_CID);
// Drag & Drop, Clipboard // Drag & Drop, Clipboard
static NS_DEFINE_IID(kCDataObj, NS_DATAOBJ_CID); static NS_DEFINE_IID(kCDataObj, NS_DATAOBJ_CID);
static NS_DEFINE_IID(kCClipboard, NS_CLIPBOARD_CID); static NS_DEFINE_IID(kCClipboard, NS_CLIPBOARD_CID);
static NS_DEFINE_IID(kCClipboardHelper, NS_CLIPBOARDHELPER_CID);
static NS_DEFINE_IID(kCTransferable, NS_TRANSFERABLE_CID); static NS_DEFINE_IID(kCTransferable, NS_TRANSFERABLE_CID);
static NS_DEFINE_IID(kCDataFlavor, NS_DATAFLAVOR_CID); static NS_DEFINE_IID(kCDataFlavor, NS_DATAFLAVOR_CID);
static NS_DEFINE_IID(kCHTMLFormatConverter, NS_HTMLFORMATCONVERTER_CID); static NS_DEFINE_IID(kCHTMLFormatConverter, NS_HTMLFORMATCONVERTER_CID);
@ -219,6 +222,9 @@ nsresult nsWidgetFactory::CreateInstance(nsISupports *aOuter,
// else if (mClassID.Equals(kCClipboard)) { // else if (mClassID.Equals(kCClipboard)) {
// inst = (nsISupports*)new nsClipboard(); // inst = (nsISupports*)new nsClipboard();
// } // }
else if (mClassID.Equals(kCClipboardHelper)) {
inst = (nsISupports*)new nsClipboardHelper();
}
else if (mClassID.Equals(kCHTMLFormatConverter)) { else if (mClassID.Equals(kCHTMLFormatConverter)) {
inst = (nsISupports*)new nsHTMLFormatConverter(); inst = (nsISupports*)new nsHTMLFormatConverter();
} }

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

@ -17,7 +17,9 @@
* Copyright (C) 1998 Netscape Communications Corporation. All * Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved. * Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* Dan Rosen <dr@netscape.com>
*
* This Original Code has been modified by IBM Corporation. * This Original Code has been modified by IBM Corporation.
* Modifications made by IBM described herein are * Modifications made by IBM described herein are
* Copyright (c) International Business Machines * Copyright (c) International Business Machines
@ -62,6 +64,7 @@
// Drag & Drop, Clipboard // Drag & Drop, Clipboard
#include "nsClipboard.h" #include "nsClipboard.h"
#include "nsClipboardHelper.h"
#include "nsTransferable.h" #include "nsTransferable.h"
#include "nsHTMLFormatConverter.h" #include "nsHTMLFormatConverter.h"
// OS2TODO #include "nsDragService.h" // OS2TODO #include "nsDragService.h"
@ -72,6 +75,7 @@
NS_GENERIC_FACTORY_CONSTRUCTOR(nsBidiKeyboard) NS_GENERIC_FACTORY_CONSTRUCTOR(nsBidiKeyboard)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsCanvas) NS_GENERIC_FACTORY_CONSTRUCTOR(nsCanvas)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboard) NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboard)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboardHelper)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFilePicker) NS_GENERIC_FACTORY_CONSTRUCTOR(nsFilePicker)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFileWidget) NS_GENERIC_FACTORY_CONSTRUCTOR(nsFileWidget)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFontRetrieverService) NS_GENERIC_FACTORY_CONSTRUCTOR(nsFontRetrieverService)
@ -240,6 +244,10 @@ static nsModuleComponentInfo components[] =
NS_CLIPBOARD_CID, NS_CLIPBOARD_CID,
"@mozilla.org/widget/clipboard;1", "@mozilla.org/widget/clipboard;1",
nsClipboardConstructor }, nsClipboardConstructor },
{ "Clipboard Helper",
NS_CLIPBOARDHELPER_CID,
"@mozilla.org/widget/clipboardhelper;1",
nsClipboardHelperConstructor },
// OS2TODO // OS2TODO
#if 0 #if 0

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

@ -19,6 +19,7 @@
* Contributor(s): * Contributor(s):
* Christopher Blizzzard <blizzard@mozilla.org> * Christopher Blizzzard <blizzard@mozilla.org>
* Stuart Parmenter <pavlov@netscape.com> * Stuart Parmenter <pavlov@netscape.com>
* Dan Rosen <dr@netscape.com>
*/ */
#include "nsIGenericFactory.h" #include "nsIGenericFactory.h"
@ -32,6 +33,7 @@
#include "nsLookAndFeel.h" #include "nsLookAndFeel.h"
#include "nsTransferable.h" #include "nsTransferable.h"
#include "nsClipboard.h" #include "nsClipboard.h"
#include "nsClipboardHelper.h"
#include "nsHTMLFormatConverter.h" #include "nsHTMLFormatConverter.h"
#include "nsDragService.h" #include "nsDragService.h"
#include "nsFileSpecWithUIImpl.h" #include "nsFileSpecWithUIImpl.h"
@ -48,6 +50,7 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsToolkit)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsLookAndFeel) NS_GENERIC_FACTORY_CONSTRUCTOR(nsLookAndFeel)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransferable) NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransferable)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboard) NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboard)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboardHelper)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLFormatConverter) NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLFormatConverter)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragService) NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragService)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFileSpecWithUIImpl) NS_GENERIC_FACTORY_CONSTRUCTOR(nsFileSpecWithUIImpl)
@ -150,6 +153,10 @@ static nsModuleComponentInfo components[] =
// "@mozilla.org/widget/clipboard/ph;1", // "@mozilla.org/widget/clipboard/ph;1",
"@mozilla.org/widget/clipboard;1", "@mozilla.org/widget/clipboard;1",
nsClipboardConstructor }, nsClipboardConstructor },
{ "Clipboard Helper",
NS_CLIPBOARDHELPER_CID,
"@mozilla.org/widget/clipboardhelper;1",
nsClipboardHelperConstructor },
{ "HTML Format Converter", { "HTML Format Converter",
NS_HTMLFORMATCONVERTER_CID, NS_HTMLFORMATCONVERTER_CID,
"@mozilla.org/widget/htmlformatconverter/ph;1", "@mozilla.org/widget/htmlformatconverter/ph;1",

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

@ -1,4 +1,4 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* *
* The contents of this file are subject to the Netscape Public * The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file * License Version 1.1 (the "License"); you may not use this file
@ -18,9 +18,9 @@
* Rights Reserved. * Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* Denis Issoupov <denis@macadamian.com> * Denis Issoupov <denis@macadamian.com>
* John C. Griggs <johng@corel.com> * John C. Griggs <johng@corel.com>
* * Dan Rosen <dr@netscape.com>
*/ */
#ifdef NDEBUG #ifdef NDEBUG
@ -331,6 +331,8 @@ NS_IMETHODIMP nsClipboard::EmptyClipboard(PRInt32 aWhichClipboard)
NS_IMETHODIMP nsClipboard::SupportsSelectionClipboard(PRBool *_retval) NS_IMETHODIMP nsClipboard::SupportsSelectionClipboard(PRBool *_retval)
{ {
*_retval = PR_TRUE; // we support the selection clipboard by default. NS_ENSURE_ARG_POINTER(_retval);
*_retval = PR_TRUE; // we support the selection clipboard on unix.
return NS_OK; return NS_OK;
} }

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

@ -16,9 +16,9 @@
* Blizzard. Portions created by Christopher Blizzard are * Blizzard. Portions created by Christopher Blizzard are
* Copyright (C) 2000 Christopher Blizzard. All Rights Reserved. * Copyright (C) 2000 Christopher Blizzard. All Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* John C. Griggs <johng@corel.com> * John C. Griggs <johng@corel.com>
* * Dan Rosen <dr@netscape.com>
*/ */
#include "nsIGenericFactory.h" #include "nsIGenericFactory.h"
@ -32,6 +32,7 @@
#include "nsLookAndFeel.h" #include "nsLookAndFeel.h"
#include "nsTransferable.h" #include "nsTransferable.h"
#include "nsClipboard.h" #include "nsClipboard.h"
#include "nsClipboardHelper.h"
#include "nsHTMLFormatConverter.h" #include "nsHTMLFormatConverter.h"
#include "nsDragService.h" #include "nsDragService.h"
#include "nsFileSpecWithUIImpl.h" #include "nsFileSpecWithUIImpl.h"
@ -48,6 +49,7 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsToolkit)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsLookAndFeel) NS_GENERIC_FACTORY_CONSTRUCTOR(nsLookAndFeel)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransferable) NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransferable)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboard) NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboard)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboardHelper)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLFormatConverter) NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLFormatConverter)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragService) NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragService)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFileSpecWithUIImpl) NS_GENERIC_FACTORY_CONSTRUCTOR(nsFileSpecWithUIImpl)
@ -145,6 +147,10 @@ static nsModuleComponentInfo components[] =
NS_CLIPBOARD_CID, NS_CLIPBOARD_CID,
"@mozilla.org/widget/clipboard;1", "@mozilla.org/widget/clipboard;1",
nsClipboardConstructor }, nsClipboardConstructor },
{ "Clipboard Helper",
NS_CLIPBOARDHELPER_CID,
"@mozilla.org/widget/clipboardhelper;1",
nsClipboardHelperConstructor },
{ "HTML Format Converter", { "HTML Format Converter",
NS_HTMLFORMATCONVERTER_CID, NS_HTMLFORMATCONVERTER_CID,
"@mozilla.org/widget/htmlformatconverter/qt;1", "@mozilla.org/widget/htmlformatconverter/qt;1",

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

@ -18,9 +18,9 @@
* Rights Reserved. * Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* Pierre Phaneuf <pp@ludusdesign.com>
* Peter Hartshorn <peter@igelaus.com.au> * Peter Hartshorn <peter@igelaus.com.au>
* Ken Faulkner <faulkner@igelaus.com.au> * Ken Faulkner <faulkner@igelaus.com.au>
* Dan Rosen <dr@netscape.com>
*/ */
/* TODO: /* TODO:
@ -425,6 +425,8 @@ NS_IMETHODIMP nsClipboard::HasDataMatchingFlavors(nsISupportsArray *aFlavorList,
} }
NS_IMETHODIMP nsClipboard::SupportsSelectionClipboard(PRBool *_retval) { NS_IMETHODIMP nsClipboard::SupportsSelectionClipboard(PRBool *_retval) {
*_retval = PR_TRUE; NS_ENSURE_ARG_POINTER(_retval);
*_retval = PR_TRUE; // we support the selection clipboard on unix.
return NS_OK; return NS_OK;
} }

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

@ -20,6 +20,7 @@
* Contributor(s): * Contributor(s):
* Peter Hartshorn <peter@igelaus.com.au> * Peter Hartshorn <peter@igelaus.com.au>
* Ken Faulkner <faulkner@igelaus.com.au> * Ken Faulkner <faulkner@igelaus.com.au>
* Dan Rosen <dr@netscape.com>
*/ */
#include "nsIGenericFactory.h" #include "nsIGenericFactory.h"
@ -38,6 +39,7 @@
#include "nsLabel.h" #include "nsLabel.h"
#include "nsTransferable.h" #include "nsTransferable.h"
#include "nsClipboard.h" #include "nsClipboard.h"
#include "nsClipboardHelper.h"
#include "nsHTMLFormatConverter.h" #include "nsHTMLFormatConverter.h"
//#include "nsFontRetrieverService.h" //#include "nsFontRetrieverService.h"
#include "nsDragService.h" #include "nsDragService.h"
@ -61,6 +63,7 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsLookAndFeel)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsLabel) NS_GENERIC_FACTORY_CONSTRUCTOR(nsLabel)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransferable) NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransferable)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboard) NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboard)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboardHelper)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLFormatConverter) NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLFormatConverter)
//NS_GENERIC_FACTORY_CONSTRUCTOR(nsFontRetrieverService) //NS_GENERIC_FACTORY_CONSTRUCTOR(nsFontRetrieverService)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragService) NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragService)
@ -193,6 +196,10 @@ static nsModuleComponentInfo components[] =
// "@mozilla.org/widget/clipboard/xlib;1", // "@mozilla.org/widget/clipboard/xlib;1",
"@mozilla.org/widget/clipboard;1", "@mozilla.org/widget/clipboard;1",
nsClipboardConstructor }, nsClipboardConstructor },
{ "Clipboard Helper",
NS_CLIPBOARDHELPER_CID,
"@mozilla.org/widget/clipboardhelper;1",
nsClipboardHelperConstructor },
{ "HTML Format Converter", { "HTML Format Converter",
NS_HTMLFORMATCONVERTER_CID, NS_HTMLFORMATCONVERTER_CID,
"@mozilla.org/widget/htmlformatconverter/xlib;1", "@mozilla.org/widget/htmlformatconverter/xlib;1",

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

@ -42,6 +42,7 @@ CPPSRCS = \
nsFileSpecWithUIImpl.cpp \ nsFileSpecWithUIImpl.cpp \
nsPrimitiveHelpers.cpp \ nsPrimitiveHelpers.cpp \
nsXPLookAndFeel.cpp \ nsXPLookAndFeel.cpp \
nsClipboardHelper.cpp \
$(NULL) $(NULL)
ifeq ($(MOZ_WIDGET_TOOLKIT),mac) ifeq ($(MOZ_WIDGET_TOOLKIT),mac)

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

@ -26,11 +26,12 @@ LIBRARY_NAME = raptorbasewidget_s
DEFINES =-D_IMPL_NS_WIDGET -DUSE_TLS_FOR_TOOLKIT DEFINES =-D_IMPL_NS_WIDGET -DUSE_TLS_FOR_TOOLKIT
CPPSRCS = \ CPPSRCS = \
nsBaseDragService.cpp \ nsBaseDragService.cpp \
nsBaseWidget.cpp \ nsBaseWidget.cpp \
nsBaseFilePicker.cpp \ nsBaseFilePicker.cpp \
nsFileSpecWithUIImpl.cpp \ nsFileSpecWithUIImpl.cpp \
nsBaseClipboard.cpp \ nsBaseClipboard.cpp \
nsClipboardHelper.cpp \
nsTransferable.cpp \ nsTransferable.cpp \
nsHTMLFormatConverter.cpp \ nsHTMLFormatConverter.cpp \
nsPrimitiveHelpers.cpp \ nsPrimitiveHelpers.cpp \
@ -45,6 +46,7 @@ OBJS= \
.\$(OBJDIR)\nsBaseFilePicker.obj \ .\$(OBJDIR)\nsBaseFilePicker.obj \
.\$(OBJDIR)\nsFileSpecWithUIImpl.obj \ .\$(OBJDIR)\nsFileSpecWithUIImpl.obj \
.\$(OBJDIR)\nsBaseClipboard.obj \ .\$(OBJDIR)\nsBaseClipboard.obj \
.\$(OBJDIR)\nsClipboardHelper.obj \
.\$(OBJDIR)\nsTransferable.obj \ .\$(OBJDIR)\nsTransferable.obj \
.\$(OBJDIR)\nsHTMLFormatConverter.obj \ .\$(OBJDIR)\nsHTMLFormatConverter.obj \
.\$(OBJDIR)\nsPrimitiveHelpers.obj \ .\$(OBJDIR)\nsPrimitiveHelpers.obj \

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

@ -0,0 +1,139 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Mozilla browser.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corp. Portions created by Netscape are Copyright (C) 2001 Netscape
* Communications Corp. All Rights Reserved.
*
* Original Author:
* Dan Rosen <dr@netscape.com>
*
* Contributor(s):
*
*/
#include "nsClipboardHelper.h"
// basics
#include "nsCOMPtr.h"
#include "nsISupportsPrimitives.h"
#include "nsIServiceManager.h"
// helpers
#include "nsIClipboard.h"
#include "nsITransferable.h"
#include "nsReadableUtils.h"
NS_IMPL_ISUPPORTS1(nsClipboardHelper, nsIClipboardHelper);
/*****************************************************************************
* nsClipboardHelper ctor / dtor
*****************************************************************************/
nsClipboardHelper::nsClipboardHelper()
{
NS_INIT_ISUPPORTS();
}
nsClipboardHelper::~nsClipboardHelper()
{
// no members, nothing to destroy
};
/*****************************************************************************
* nsIClipboardHelper methods
*****************************************************************************/
NS_IMETHODIMP
nsClipboardHelper::CopyStringToClipboard(const nsAReadableString& aString,
PRInt32 aClipboardID)
{
nsresult rv;
// get the clipboard
nsCOMPtr<nsIClipboard>
clipboard(do_GetService("@mozilla.org/widget/clipboard;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(clipboard, NS_ERROR_FAILURE);
// don't go any further if they're asking for the selection
// clipboard on a platform which doesn't support it (i.e., unix)
if (nsIClipboard::kSelectionClipboard == aClipboardID) {
PRBool clipboardSupported;
rv = clipboard->SupportsSelectionClipboard(&clipboardSupported);
NS_ENSURE_SUCCESS(rv, rv);
if (!clipboardSupported)
return NS_ERROR_FAILURE;
}
// create a transferable for putting data on the clipboard
nsCOMPtr<nsITransferable>
trans(do_CreateInstance("@mozilla.org/widget/transferable;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(trans, NS_ERROR_FAILURE);
// Add the text data flavor to the transferable
rv = trans->AddDataFlavor(kUnicodeMime);
NS_ENSURE_SUCCESS(rv, rv);
// get wStrings to hold clip data
nsCOMPtr<nsISupportsWString>
data(do_CreateInstance("@mozilla.org/supports-wstring;1", &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(data, NS_ERROR_FAILURE);
// populate the string
rv = data->AdoptData(ToNewUnicode(aString));
NS_ENSURE_SUCCESS(rv, rv);
// qi the data object an |nsISupports| so that when the transferable holds
// onto it, it will addref the correct interface.
nsCOMPtr<nsISupports> genericData(do_QueryInterface(data, &rv));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(genericData, NS_ERROR_FAILURE);
// set the transfer data
rv = trans->SetTransferData(kUnicodeMime, genericData,
aString.Length() * 2);
NS_ENSURE_SUCCESS(rv, rv);
// put the transferable on the clipboard
rv = clipboard->SetData(trans, nsnull, aClipboardID);
NS_ENSURE_SUCCESS(rv, rv);
return NS_OK;
}
NS_IMETHODIMP
nsClipboardHelper::CopyString(const nsAReadableString& aString)
{
nsresult rv;
// copy to the global clipboard. it's bad if this fails in any way.
rv = CopyStringToClipboard(aString, nsIClipboard::kGlobalClipboard);
NS_ENSURE_SUCCESS(rv, rv);
// unix also needs us to copy to the selection clipboard. this will
// fail in CopyStringToClipboard if we're not on a platform that
// supports the selection clipboard. (this could have been #ifdef
// XP_UNIX, but using the SupportsSelectionClipboard call is the
// more correct thing to do.
//
// if this fails in any way other than "not being unix", we'll get
// the assertion we need in CopyStringToClipboard, and we needn't
// assert again here.
CopyStringToClipboard(aString, nsIClipboard::kSelectionClipboard);
return NS_OK;
}

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

@ -0,0 +1,52 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Mozilla browser.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corp. Portions created by Netscape are Copyright (C) 2001 Netscape
* Communications Corp. All Rights Reserved.
*
* Original Author:
* Dan Rosen <dr@netscape.com>
*
* Contributor(s):
*
*/
#ifndef nsClipboardHelper_h__
#define nsClipboardHelper_h__
// interfaces
#include "nsIClipboardHelper.h"
// basics
#include "nsString.h"
/**
* impl class for nsIClipboardHelper, a helper for common uses of nsIClipboard.
*/
class nsClipboardHelper : public nsIClipboardHelper
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSICLIPBOARDHELPER
nsClipboardHelper();
virtual ~nsClipboardHelper();
};
#endif // nsClipboardHelper_h__