From 3267ac2e2a8ae28aa0e0fb0d931d7340bfaa5b1d Mon Sep 17 00:00:00 2001 From: "rpotts%netscape.com" Date: Wed, 4 Nov 1998 08:48:22 +0000 Subject: [PATCH] Moved the clipboard methods from nsIWebShell into a new interface called nsIClipboardCommands... --- docshell/base/nsWebShell.cpp | 111 ++++++++++++++++++++++------------ webshell/public/nsIWebShell.h | 36 ----------- webshell/src/nsWebShell.cpp | 111 ++++++++++++++++++++++------------ 3 files changed, 142 insertions(+), 116 deletions(-) diff --git a/docshell/base/nsWebShell.cpp b/docshell/base/nsWebShell.cpp index ecf3714948f..b2ad22a3ab1 100644 --- a/docshell/base/nsWebShell.cpp +++ b/docshell/base/nsWebShell.cpp @@ -20,6 +20,7 @@ #include "nsIDocumentLoader.h" #include "nsIContentViewer.h" #include "nsIDocumentViewer.h" +#include "nsIClipboardCommands.h" #include "nsIDeviceContext.h" #include "nsILinkHandler.h" #include "nsIStreamListener.h" @@ -103,7 +104,8 @@ class nsWebShell : public nsIWebShell, public nsIDocumentLoaderObserver, public nsIRefreshUrl, public nsINetSupport, - public nsIStreamObserver + public nsIStreamObserver, + public nsIClipboardCommands { public: nsWebShell(); @@ -233,14 +235,18 @@ public: NS_IMETHOD_(PRBool) PromptPassword(const nsString &aText, nsString &aPassword); - // Selection methods - NS_IMETHOD IsSelection(PRBool & aIsSelection); - NS_IMETHOD IsSelectionCutable(PRBool & aIsSelection); - NS_IMETHOD IsSelectionPastable(PRBool & aIsSelection); - NS_IMETHOD GetSelection(PRUnichar *& aSelection); - NS_IMETHOD CutSelection(PRUnichar *& aSelection); - NS_IMETHOD PasteSelection(const PRUnichar * aSelection); - NS_IMETHOD SelectAll(); + // nsIClipboardCommands + NS_IMETHOD CanCutSelection (PRBool* aResult); + NS_IMETHOD CanCopySelection (PRBool* aResult); + NS_IMETHOD CanPasteSelection(PRBool* aResult); + + NS_IMETHOD CutSelection (void); + NS_IMETHOD CopySelection (void); + NS_IMETHOD PasteSelection(void); + + NS_IMETHOD SelectAll(void); + NS_IMETHOD SelectNone(void); + NS_IMETHOD FindNext(const PRUnichar * aSearchStr, PRBool aMatchCase, PRBool aSearchDown, PRBool &aIsFound); // nsWebShell @@ -327,6 +333,7 @@ static NS_DEFINE_IID(kRefreshURLIID, NS_IREFRESHURL_IID); static NS_DEFINE_IID(kITimerCallbackIID, NS_ITIMERCALLBACK_IID); static NS_DEFINE_IID(kIWebShellContainerIID, NS_IWEB_SHELL_CONTAINER_IID); static NS_DEFINE_IID(kIBrowserWindowIID, NS_IBROWSER_WINDOW_IID); +static NS_DEFINE_IID(kIClipboardCommandsIID, NS_ICLIPBOARDCOMMANDS_IID); // XXX not sure static NS_DEFINE_IID(kILinkHandlerIID, NS_ILINKHANDLER_IID); @@ -501,6 +508,11 @@ nsWebShell::QueryInterface(REFNSIID aIID, void** aInstancePtr) NS_ADDREF_THIS(); return NS_OK; } + if (aIID.Equals(kIClipboardCommandsIID)) { + *aInstancePtr = (void*) ((nsIClipboardCommands*)this); + NS_ADDREF_THIS(); + return NS_OK; + } if (aIID.Equals(kISupportsIID)) { *aInstancePtr = (void*)(nsISupports*)(nsIWebShell*)this; NS_ADDREF_THIS(); @@ -1989,54 +2001,73 @@ nsWebShell::PromptPassword(const nsString &aText, //---------------------------------------------------- NS_IMETHODIMP -nsWebShell::IsSelection(PRBool & aIsSelection) +nsWebShell::CanCutSelection(PRBool* aResult) { - aIsSelection = PR_FALSE; - return NS_ERROR_FAILURE; + nsresult rv = NS_OK; + + if (nsnull == aResult) { + rv = NS_ERROR_NULL_POINTER; + } else { + *aResult = PR_FALSE; + } + + return rv; } -//---------------------------------------------------- NS_IMETHODIMP -nsWebShell::IsSelectionCutable(PRBool & aIsSelection) +nsWebShell::CanCopySelection(PRBool* aResult) { - aIsSelection = PR_FALSE; - return NS_ERROR_FAILURE; + nsresult rv = NS_OK; + + if (nsnull == aResult) { + rv = NS_ERROR_NULL_POINTER; + } else { + *aResult = PR_FALSE; + } + + return rv; } -//---------------------------------------------------- NS_IMETHODIMP -nsWebShell::IsSelectionPastable(PRBool & aIsSelection) +nsWebShell::CanPasteSelection(PRBool* aResult) { - aIsSelection = PR_FALSE; - return NS_ERROR_FAILURE; + nsresult rv = NS_OK; + + if (nsnull == aResult) { + rv = NS_ERROR_NULL_POINTER; + } else { + *aResult = PR_FALSE; + } + + return rv; } -//---------------------------------------------------- NS_IMETHODIMP -nsWebShell::GetSelection(PRUnichar *& aSelection) -{ - aSelection = nsnull; - return NS_ERROR_FAILURE; -} - -//---------------------------------------------------- -NS_IMETHODIMP -nsWebShell::CutSelection(PRUnichar *& aSelection) -{ - aSelection = nsnull; - return NS_ERROR_FAILURE; -} - -//---------------------------------------------------- -NS_IMETHODIMP -nsWebShell::PasteSelection(const PRUnichar * aSelection) +nsWebShell::CutSelection(void) { return NS_ERROR_FAILURE; } -//---------------------------------------------------- NS_IMETHODIMP -nsWebShell::SelectAll() +nsWebShell::CopySelection(void) +{ + return NS_ERROR_FAILURE; +} + +NS_IMETHODIMP +nsWebShell::PasteSelection(void) +{ + return NS_ERROR_FAILURE; +} + +NS_IMETHODIMP +nsWebShell::SelectAll(void) +{ + return NS_ERROR_FAILURE; +} + +NS_IMETHODIMP +nsWebShell::SelectNone(void) { return NS_ERROR_FAILURE; } diff --git a/webshell/public/nsIWebShell.h b/webshell/public/nsIWebShell.h index bc1a2c77c1f..0f948f7d73a 100644 --- a/webshell/public/nsIWebShell.h +++ b/webshell/public/nsIWebShell.h @@ -283,42 +283,6 @@ public: NS_IMETHOD GetMarginHeight(PRInt32& aWidth) = 0; NS_IMETHOD SetMarginHeight(PRInt32 aHeight) = 0; - // Selection Related Methods - /** - * Returns the whether there is a selection or not - */ - NS_IMETHOD IsSelection(PRBool & aIsSelection) = 0; - - /** - * Returns the whether the selection can be cut (editor or a form control) - */ - NS_IMETHOD IsSelectionCutable(PRBool & aIsSelection) = 0; - - /** - * Returns whether the data can be pasted (editor or a form control) - */ - NS_IMETHOD IsSelectionPastable(PRBool & aIsSelection) = 0; - - /** - * Copies the Selection from the content or a form control - */ - NS_IMETHOD GetSelection(PRUnichar *& aSelection) = 0; - - /** - * Cuts the Selection from the content or a form control - */ - NS_IMETHOD CutSelection(PRUnichar *& aSelection) = 0; - - /** - * Pastes the Selection into the content or a form control - */ - NS_IMETHOD PasteSelection(const PRUnichar * aSelection) = 0; - - /** - * Selects all the Content - */ - NS_IMETHOD SelectAll() = 0; - /** * Finds text in content */ diff --git a/webshell/src/nsWebShell.cpp b/webshell/src/nsWebShell.cpp index ecf3714948f..b2ad22a3ab1 100644 --- a/webshell/src/nsWebShell.cpp +++ b/webshell/src/nsWebShell.cpp @@ -20,6 +20,7 @@ #include "nsIDocumentLoader.h" #include "nsIContentViewer.h" #include "nsIDocumentViewer.h" +#include "nsIClipboardCommands.h" #include "nsIDeviceContext.h" #include "nsILinkHandler.h" #include "nsIStreamListener.h" @@ -103,7 +104,8 @@ class nsWebShell : public nsIWebShell, public nsIDocumentLoaderObserver, public nsIRefreshUrl, public nsINetSupport, - public nsIStreamObserver + public nsIStreamObserver, + public nsIClipboardCommands { public: nsWebShell(); @@ -233,14 +235,18 @@ public: NS_IMETHOD_(PRBool) PromptPassword(const nsString &aText, nsString &aPassword); - // Selection methods - NS_IMETHOD IsSelection(PRBool & aIsSelection); - NS_IMETHOD IsSelectionCutable(PRBool & aIsSelection); - NS_IMETHOD IsSelectionPastable(PRBool & aIsSelection); - NS_IMETHOD GetSelection(PRUnichar *& aSelection); - NS_IMETHOD CutSelection(PRUnichar *& aSelection); - NS_IMETHOD PasteSelection(const PRUnichar * aSelection); - NS_IMETHOD SelectAll(); + // nsIClipboardCommands + NS_IMETHOD CanCutSelection (PRBool* aResult); + NS_IMETHOD CanCopySelection (PRBool* aResult); + NS_IMETHOD CanPasteSelection(PRBool* aResult); + + NS_IMETHOD CutSelection (void); + NS_IMETHOD CopySelection (void); + NS_IMETHOD PasteSelection(void); + + NS_IMETHOD SelectAll(void); + NS_IMETHOD SelectNone(void); + NS_IMETHOD FindNext(const PRUnichar * aSearchStr, PRBool aMatchCase, PRBool aSearchDown, PRBool &aIsFound); // nsWebShell @@ -327,6 +333,7 @@ static NS_DEFINE_IID(kRefreshURLIID, NS_IREFRESHURL_IID); static NS_DEFINE_IID(kITimerCallbackIID, NS_ITIMERCALLBACK_IID); static NS_DEFINE_IID(kIWebShellContainerIID, NS_IWEB_SHELL_CONTAINER_IID); static NS_DEFINE_IID(kIBrowserWindowIID, NS_IBROWSER_WINDOW_IID); +static NS_DEFINE_IID(kIClipboardCommandsIID, NS_ICLIPBOARDCOMMANDS_IID); // XXX not sure static NS_DEFINE_IID(kILinkHandlerIID, NS_ILINKHANDLER_IID); @@ -501,6 +508,11 @@ nsWebShell::QueryInterface(REFNSIID aIID, void** aInstancePtr) NS_ADDREF_THIS(); return NS_OK; } + if (aIID.Equals(kIClipboardCommandsIID)) { + *aInstancePtr = (void*) ((nsIClipboardCommands*)this); + NS_ADDREF_THIS(); + return NS_OK; + } if (aIID.Equals(kISupportsIID)) { *aInstancePtr = (void*)(nsISupports*)(nsIWebShell*)this; NS_ADDREF_THIS(); @@ -1989,54 +2001,73 @@ nsWebShell::PromptPassword(const nsString &aText, //---------------------------------------------------- NS_IMETHODIMP -nsWebShell::IsSelection(PRBool & aIsSelection) +nsWebShell::CanCutSelection(PRBool* aResult) { - aIsSelection = PR_FALSE; - return NS_ERROR_FAILURE; + nsresult rv = NS_OK; + + if (nsnull == aResult) { + rv = NS_ERROR_NULL_POINTER; + } else { + *aResult = PR_FALSE; + } + + return rv; } -//---------------------------------------------------- NS_IMETHODIMP -nsWebShell::IsSelectionCutable(PRBool & aIsSelection) +nsWebShell::CanCopySelection(PRBool* aResult) { - aIsSelection = PR_FALSE; - return NS_ERROR_FAILURE; + nsresult rv = NS_OK; + + if (nsnull == aResult) { + rv = NS_ERROR_NULL_POINTER; + } else { + *aResult = PR_FALSE; + } + + return rv; } -//---------------------------------------------------- NS_IMETHODIMP -nsWebShell::IsSelectionPastable(PRBool & aIsSelection) +nsWebShell::CanPasteSelection(PRBool* aResult) { - aIsSelection = PR_FALSE; - return NS_ERROR_FAILURE; + nsresult rv = NS_OK; + + if (nsnull == aResult) { + rv = NS_ERROR_NULL_POINTER; + } else { + *aResult = PR_FALSE; + } + + return rv; } -//---------------------------------------------------- NS_IMETHODIMP -nsWebShell::GetSelection(PRUnichar *& aSelection) -{ - aSelection = nsnull; - return NS_ERROR_FAILURE; -} - -//---------------------------------------------------- -NS_IMETHODIMP -nsWebShell::CutSelection(PRUnichar *& aSelection) -{ - aSelection = nsnull; - return NS_ERROR_FAILURE; -} - -//---------------------------------------------------- -NS_IMETHODIMP -nsWebShell::PasteSelection(const PRUnichar * aSelection) +nsWebShell::CutSelection(void) { return NS_ERROR_FAILURE; } -//---------------------------------------------------- NS_IMETHODIMP -nsWebShell::SelectAll() +nsWebShell::CopySelection(void) +{ + return NS_ERROR_FAILURE; +} + +NS_IMETHODIMP +nsWebShell::PasteSelection(void) +{ + return NS_ERROR_FAILURE; +} + +NS_IMETHODIMP +nsWebShell::SelectAll(void) +{ + return NS_ERROR_FAILURE; +} + +NS_IMETHODIMP +nsWebShell::SelectNone(void) { return NS_ERROR_FAILURE; }