зеркало из https://github.com/mozilla/gecko-dev.git
command for drag/drop/copy/paste hooks (bug 197121) r=smfr sr=jst
This commit is contained in:
Родитель
fb3e924d63
Коммит
795af22455
|
@ -58,6 +58,9 @@
|
||||||
#include "nsIContentViewerEdit.h"
|
#include "nsIContentViewerEdit.h"
|
||||||
#include "nsIContentViewer.h"
|
#include "nsIContentViewer.h"
|
||||||
|
|
||||||
|
#include "nsIClipboardDragDropHooks.h"
|
||||||
|
#include "nsIClipboardDragDropHookList.h"
|
||||||
|
|
||||||
const char * const sSelectAllString = "cmd_selectAll";
|
const char * const sSelectAllString = "cmd_selectAll";
|
||||||
const char * const sSelectNoneString = "cmd_selectNone";
|
const char * const sSelectNoneString = "cmd_selectNone";
|
||||||
const char * const sCopyImageLocationString = "cmd_copyImageLocation";
|
const char * const sCopyImageLocationString = "cmd_copyImageLocation";
|
||||||
|
@ -738,6 +741,102 @@ nsGoBackCommand::DoWebNavCommand(const char *aCommandName, nsIWebNavigation* aWe
|
||||||
return aWebNavigation->GoBack();
|
return aWebNavigation->GoBack();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
nsClipboardDragDropHookCommand
|
||||||
|
params value type possible values
|
||||||
|
"addhook" isupports nsIClipboardDragDropHooks as nsISupports
|
||||||
|
"removehook" isupports nsIClipboardDragDropHooks as nsISupports
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class nsClipboardDragDropHookCommand : public nsIControllerCommand
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
NS_DECL_ISUPPORTS
|
||||||
|
NS_DECL_NSICONTROLLERCOMMAND
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// no member variables, please, we're stateless!
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
NS_IMPL_ISUPPORTS1(nsClipboardDragDropHookCommand, nsIControllerCommand)
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsClipboardDragDropHookCommand::IsCommandEnabled(const char * aCommandName,
|
||||||
|
nsISupports *aCommandContext,
|
||||||
|
PRBool *outCmdEnabled)
|
||||||
|
{
|
||||||
|
*outCmdEnabled = PR_TRUE;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsClipboardDragDropHookCommand::DoCommand(const char *aCommandName,
|
||||||
|
nsISupports *aCommandContext)
|
||||||
|
{
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsClipboardDragDropHookCommand::DoCommandParams(const char *aCommandName,
|
||||||
|
nsICommandParams *aParams,
|
||||||
|
nsISupports *aCommandContext)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG(aParams);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMWindow> window = do_QueryInterface(aCommandContext);
|
||||||
|
nsCOMPtr<nsIScriptGlobalObject> sgo = do_QueryInterface(window);
|
||||||
|
NS_ENSURE_TRUE(sgo, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDocShell> docShell;
|
||||||
|
sgo->GetDocShell(getter_AddRefs(docShell));
|
||||||
|
NS_ENSURE_TRUE(docShell, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIClipboardDragDropHookList> obj = do_GetInterface(docShell);
|
||||||
|
if (!obj) return NS_ERROR_INVALID_ARG;
|
||||||
|
|
||||||
|
nsCOMPtr<nsISupports> isuppHook;
|
||||||
|
|
||||||
|
nsresult returnValue = NS_OK;
|
||||||
|
nsresult rv = aParams->GetISupportsValue("addhook", getter_AddRefs(isuppHook));
|
||||||
|
if (NS_SUCCEEDED(rv))
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIClipboardDragDropHooks> hook = do_GetInterface(isuppHook);
|
||||||
|
if (hook)
|
||||||
|
returnValue = obj->AddClipboardDragDropHooks(hook);
|
||||||
|
else
|
||||||
|
returnValue = NS_ERROR_INVALID_ARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
rv = aParams->GetISupportsValue("removehook", getter_AddRefs(isuppHook));
|
||||||
|
if (NS_SUCCEEDED(rv))
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIClipboardDragDropHooks> hook = do_QueryInterface(isuppHook);
|
||||||
|
if (hook)
|
||||||
|
{
|
||||||
|
rv = obj->RemoveClipboardDragDropHooks(hook);
|
||||||
|
if (NS_FAILED(rv) && NS_SUCCEEDED(returnValue))
|
||||||
|
returnValue = rv;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
returnValue = NS_ERROR_INVALID_ARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
return returnValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsClipboardDragDropHookCommand::GetCommandStateParams(const char *aCommandName,
|
||||||
|
nsICommandParams *aParams,
|
||||||
|
nsISupports *aCommandContext)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aParams);
|
||||||
|
return aParams->SetBooleanValue("state_enabled", PR_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------
|
||||||
|
|
||||||
RegisterWindowCommands
|
RegisterWindowCommands
|
||||||
|
@ -822,5 +921,7 @@ nsWindowCommandRegistration::RegisterWindowCommands(
|
||||||
NS_REGISTER_ONE_COMMAND(nsGoBackCommand, "cmd_browserBack");
|
NS_REGISTER_ONE_COMMAND(nsGoBackCommand, "cmd_browserBack");
|
||||||
NS_REGISTER_ONE_COMMAND(nsGoForwardCommand, "cmd_browserForward");
|
NS_REGISTER_ONE_COMMAND(nsGoForwardCommand, "cmd_browserForward");
|
||||||
|
|
||||||
|
NS_REGISTER_ONE_COMMAND(nsClipboardDragDropHookCommand, "cmd_clipboardDragDropHook");
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче