mshtml: Added support for IDM_PASTE command in browser mode.
This commit is contained in:
parent
6b463d8509
commit
935e7f059e
|
@ -3546,6 +3546,29 @@ interface nsIHTMLEditor : nsISupports
|
||||||
void /*Element*/ *GetActiveEditingHost();
|
void /*Element*/ *GetActiveEditingHost();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
object,
|
||||||
|
uuid(b8100c90-73be-11d2-92a5-00105a1b0d64),
|
||||||
|
local
|
||||||
|
]
|
||||||
|
interface nsIClipboardCommands : nsISupports
|
||||||
|
{
|
||||||
|
nsresult CanCutSelection(bool *_retval);
|
||||||
|
nsresult CanCopySelection(bool *_retval);
|
||||||
|
nsresult CanCopyLinkLocation(bool *_retval);
|
||||||
|
nsresult CanCopyImageLocation(bool *_retval);
|
||||||
|
nsresult CanCopyImageContents(bool *_retval);
|
||||||
|
nsresult CanPaste(bool *_retval);
|
||||||
|
nsresult CutSelection();
|
||||||
|
nsresult CopySelection();
|
||||||
|
nsresult CopyLinkLocation();
|
||||||
|
nsresult CopyImageLocation();
|
||||||
|
nsresult CopyImageContents();
|
||||||
|
nsresult Paste();
|
||||||
|
nsresult SelectAll();
|
||||||
|
nsresult SelectNone();
|
||||||
|
}
|
||||||
|
|
||||||
[
|
[
|
||||||
object,
|
object,
|
||||||
uuid(edb99640-8378-4106-8673-e701a086eb1c),
|
uuid(edb99640-8378-4106-8673-e701a086eb1c),
|
||||||
|
|
|
@ -62,6 +62,28 @@ void do_ns_command(HTMLDocument *This, const char *cmd, nsICommandParams *nspara
|
||||||
nsICommandManager_Release(cmdmgr);
|
nsICommandManager_Release(cmdmgr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static nsIClipboardCommands *get_clipboard_commands(HTMLDocument *doc)
|
||||||
|
{
|
||||||
|
nsIClipboardCommands *clipboard_commands;
|
||||||
|
nsIDocShell *doc_shell;
|
||||||
|
nsresult nsres;
|
||||||
|
|
||||||
|
nsres = get_nsinterface((nsISupports*)doc->window->nswindow, &IID_nsIDocShell, (void**)&doc_shell);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("Could not get nsIDocShell interface\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsres = nsIDocShell_QueryInterface(doc_shell, &IID_nsIClipboardCommands, (void**)&clipboard_commands);
|
||||||
|
nsIDocShell_Release(doc_shell);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("Could not get nsIClipboardCommands interface\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return clipboard_commands;
|
||||||
|
}
|
||||||
|
|
||||||
/**********************************************************
|
/**********************************************************
|
||||||
* IOleCommandTarget implementation
|
* IOleCommandTarget implementation
|
||||||
*/
|
*/
|
||||||
|
@ -569,13 +591,26 @@ static HRESULT query_mshtml_paste(HTMLDocument *This, OLECMD *cmd)
|
||||||
|
|
||||||
static HRESULT exec_mshtml_paste(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
|
static HRESULT exec_mshtml_paste(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
|
||||||
{
|
{
|
||||||
|
nsIClipboardCommands *clipboard_commands;
|
||||||
|
nsresult nsres;
|
||||||
|
|
||||||
TRACE("(%p)->(%08x %p %p)\n", This, cmdexecopt, in, out);
|
TRACE("(%p)->(%08x %p %p)\n", This, cmdexecopt, in, out);
|
||||||
|
|
||||||
if(This->doc_obj->usermode == EDITMODE)
|
if(This->doc_obj->usermode == EDITMODE)
|
||||||
return editor_exec_paste(This, cmdexecopt, in, out);
|
return editor_exec_paste(This, cmdexecopt, in, out);
|
||||||
|
|
||||||
FIXME("Unimplemented in browse mode\n");
|
clipboard_commands = get_clipboard_commands(This);
|
||||||
return E_NOTIMPL;
|
if(!clipboard_commands)
|
||||||
|
return E_UNEXPECTED;
|
||||||
|
|
||||||
|
nsres = nsIClipboardCommands_Paste(clipboard_commands);
|
||||||
|
nsIClipboardCommands_Release(clipboard_commands);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("Paste failed: %08x\n", nsres);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT exec_browsemode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
|
static HRESULT exec_browsemode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
|
||||||
|
|
Loading…
Reference in New Issue