mshtml: COM cleanup for all the IOleCommandTarget ifaces.
This commit is contained in:
parent
389a7f547e
commit
541a49edc2
|
@ -1776,7 +1776,7 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
|
|||
*ppv = &This->IServiceProvider_iface;
|
||||
}else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) {
|
||||
TRACE("(%p)->(IID_IOleCommandTarget, %p)\n", This, ppv);
|
||||
*ppv = CMDTARGET(This);
|
||||
*ppv = &This->IOleCommandTarget_iface;
|
||||
}else if(IsEqualGUID(&IID_IOleControl, riid)) {
|
||||
TRACE("(%p)->(IID_IOleControl, %p)\n", This, ppv);
|
||||
*ppv = CONTROL(This);
|
||||
|
|
|
@ -358,7 +358,7 @@ struct HTMLDocument {
|
|||
IViewObjectEx IViewObjectEx_iface;
|
||||
IOleInPlaceObjectWindowless IOleInPlaceObjectWindowless_iface;
|
||||
IServiceProvider IServiceProvider_iface;
|
||||
const IOleCommandTargetVtbl *lpOleCommandTargetVtbl;
|
||||
IOleCommandTarget IOleCommandTarget_iface;
|
||||
const IOleControlVtbl *lpOleControlVtbl;
|
||||
const IHlinkTargetVtbl *lpHlinkTargetVtbl;
|
||||
IPersistStreamInit IPersistStreamInit_iface;
|
||||
|
@ -625,7 +625,6 @@ struct HTMLDocumentNode {
|
|||
#define HTMLWINDOW2(x) ((IHTMLWindow2*) &(x)->lpHTMLWindow2Vtbl)
|
||||
#define HTMLWINDOW3(x) ((IHTMLWindow3*) &(x)->lpHTMLWindow3Vtbl)
|
||||
#define HTMLWINDOW4(x) ((IHTMLWindow4*) &(x)->lpHTMLWindow4Vtbl)
|
||||
#define CMDTARGET(x) ((IOleCommandTarget*) &(x)->lpOleCommandTargetVtbl)
|
||||
#define CONTROL(x) ((IOleControl*) &(x)->lpOleControlVtbl)
|
||||
#define HLNKTARGET(x) ((IHlinkTarget*) &(x)->lpHlinkTargetVtbl)
|
||||
#define CONPTCONT(x) ((IConnectionPointContainer*) &(x)->lpConnectionPointContainerVtbl)
|
||||
|
|
|
@ -66,7 +66,10 @@ void do_ns_command(HTMLDocument *This, const char *cmd, nsICommandParams *nspara
|
|||
* IOleCommandTarget implementation
|
||||
*/
|
||||
|
||||
#define CMDTARGET_THIS(iface) DEFINE_THIS(HTMLDocument, OleCommandTarget, iface)
|
||||
static inline HTMLDocument *impl_from_IOleCommandTarget(IOleCommandTarget *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLDocument, IOleCommandTarget_iface);
|
||||
}
|
||||
|
||||
static HRESULT exec_open(HTMLDocument *This, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
|
||||
{
|
||||
|
@ -621,8 +624,8 @@ static HRESULT exec_editmode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in,
|
|||
|
||||
if(This->doc_obj->hostui)
|
||||
IDocHostUIHandler_ShowUI(This->doc_obj->hostui, DOCHOSTUITYPE_AUTHOR,
|
||||
&This->IOleInPlaceActiveObject_iface, CMDTARGET(This),
|
||||
This->doc_obj->frame, This->doc_obj->ip_window);
|
||||
&This->IOleInPlaceActiveObject_iface, &This->IOleCommandTarget_iface,
|
||||
This->doc_obj->frame, This->doc_obj->ip_window);
|
||||
|
||||
if(This->doc_obj->ip_window)
|
||||
call_set_active_object(This->doc_obj->ip_window, &This->IOleInPlaceActiveObject_iface);
|
||||
|
@ -737,19 +740,19 @@ static const cmdtable_t base_cmds[] = {
|
|||
|
||||
static HRESULT WINAPI OleCommandTarget_QueryInterface(IOleCommandTarget *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
HTMLDocument *This = CMDTARGET_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleCommandTarget(iface);
|
||||
return htmldoc_query_interface(This, riid, ppv);
|
||||
}
|
||||
|
||||
static ULONG WINAPI OleCommandTarget_AddRef(IOleCommandTarget *iface)
|
||||
{
|
||||
HTMLDocument *This = CMDTARGET_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleCommandTarget(iface);
|
||||
return htmldoc_addref(This);
|
||||
}
|
||||
|
||||
static ULONG WINAPI OleCommandTarget_Release(IOleCommandTarget *iface)
|
||||
{
|
||||
HTMLDocument *This = CMDTARGET_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleCommandTarget(iface);
|
||||
return htmldoc_release(This);
|
||||
}
|
||||
|
||||
|
@ -771,7 +774,7 @@ static HRESULT query_from_table(HTMLDocument *This, const cmdtable_t *cmdtable,
|
|||
static HRESULT WINAPI OleCommandTarget_QueryStatus(IOleCommandTarget *iface, const GUID *pguidCmdGroup,
|
||||
ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText)
|
||||
{
|
||||
HTMLDocument *This = CMDTARGET_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleCommandTarget(iface);
|
||||
HRESULT hres = S_OK, hr;
|
||||
|
||||
TRACE("(%p)->(%s %d %p %p)\n", This, debugstr_guid(pguidCmdGroup), cCmds, prgCmds, pCmdText);
|
||||
|
@ -854,7 +857,7 @@ static HRESULT exec_from_table(HTMLDocument *This, const cmdtable_t *cmdtable, D
|
|||
static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID *pguidCmdGroup,
|
||||
DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
|
||||
{
|
||||
HTMLDocument *This = CMDTARGET_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleCommandTarget(iface);
|
||||
|
||||
if(!pguidCmdGroup) {
|
||||
if(nCmdID<OLECMDID_OPEN || nCmdID>OLECMDID_GETPRINTTEMPLATE || !exec_table[nCmdID].func) {
|
||||
|
@ -901,7 +904,7 @@ void show_context_menu(HTMLDocumentObj *This, DWORD dwID, POINT *ppt, IDispatch
|
|||
DWORD cmdid;
|
||||
|
||||
if(This->hostui && S_OK == IDocHostUIHandler_ShowContextMenu(This->hostui,
|
||||
dwID, ppt, (IUnknown*)CMDTARGET(&This->basedoc), elem))
|
||||
dwID, ppt, (IUnknown*)&This->basedoc.IOleCommandTarget_iface, elem))
|
||||
return;
|
||||
|
||||
menu_res = LoadMenuW(get_shdoclc(), MAKEINTRESOURCEW(IDR_BROWSE_CONTEXT_MENU));
|
||||
|
@ -912,10 +915,11 @@ void show_context_menu(HTMLDocumentObj *This, DWORD dwID, POINT *ppt, IDispatch
|
|||
DestroyMenu(menu_res);
|
||||
|
||||
if(cmdid)
|
||||
IOleCommandTarget_Exec(CMDTARGET(&This->basedoc), &CGID_MSHTML, cmdid, 0, NULL, NULL);
|
||||
IOleCommandTarget_Exec(&This->basedoc.IOleCommandTarget_iface, &CGID_MSHTML, cmdid, 0,
|
||||
NULL, NULL);
|
||||
}
|
||||
|
||||
void HTMLDocument_OleCmd_Init(HTMLDocument *This)
|
||||
{
|
||||
This->lpOleCommandTargetVtbl = &OleCommandTargetVtbl;
|
||||
This->IOleCommandTarget_iface.lpVtbl = &OleCommandTargetVtbl;
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ static const WCHAR hrW[] = {'h','r',0};
|
|||
|
||||
typedef struct {
|
||||
const IHTMLTxtRangeVtbl *lpHTMLTxtRangeVtbl;
|
||||
const IOleCommandTargetVtbl *lpOleCommandTargetVtbl;
|
||||
IOleCommandTarget IOleCommandTarget_iface;
|
||||
|
||||
LONG ref;
|
||||
|
||||
|
@ -1017,7 +1017,7 @@ static HRESULT WINAPI HTMLTxtRange_QueryInterface(IHTMLTxtRange *iface, REFIID r
|
|||
*ppv = HTMLTXTRANGE(This);
|
||||
}else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) {
|
||||
TRACE("(%p)->(IID_IOleCommandTarget %p)\n", This, ppv);
|
||||
*ppv = CMDTARGET(This);
|
||||
*ppv = &This->IOleCommandTarget_iface;
|
||||
}
|
||||
|
||||
if(*ppv) {
|
||||
|
@ -1755,30 +1755,33 @@ static const IHTMLTxtRangeVtbl HTMLTxtRangeVtbl = {
|
|||
HTMLTxtRange_execCommandShowHelp
|
||||
};
|
||||
|
||||
#define OLECMDTRG_THIS(iface) DEFINE_THIS(HTMLTxtRange, OleCommandTarget, iface)
|
||||
static inline HTMLTxtRange *impl_from_IOleCommandTarget(IOleCommandTarget *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLTxtRange, IOleCommandTarget_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI RangeCommandTarget_QueryInterface(IOleCommandTarget *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
HTMLTxtRange *This = OLECMDTRG_THIS(iface);
|
||||
HTMLTxtRange *This = impl_from_IOleCommandTarget(iface);
|
||||
return IHTMLTxtRange_QueryInterface(HTMLTXTRANGE(This), riid, ppv);
|
||||
}
|
||||
|
||||
static ULONG WINAPI RangeCommandTarget_AddRef(IOleCommandTarget *iface)
|
||||
{
|
||||
HTMLTxtRange *This = OLECMDTRG_THIS(iface);
|
||||
HTMLTxtRange *This = impl_from_IOleCommandTarget(iface);
|
||||
return IHTMLTxtRange_AddRef(HTMLTXTRANGE(This));
|
||||
}
|
||||
|
||||
static ULONG WINAPI RangeCommandTarget_Release(IOleCommandTarget *iface)
|
||||
{
|
||||
HTMLTxtRange *This = OLECMDTRG_THIS(iface);
|
||||
HTMLTxtRange *This = impl_from_IOleCommandTarget(iface);
|
||||
return IHTMLTxtRange_Release(HTMLTXTRANGE(This));
|
||||
}
|
||||
|
||||
static HRESULT WINAPI RangeCommandTarget_QueryStatus(IOleCommandTarget *iface, const GUID *pguidCmdGroup,
|
||||
ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText)
|
||||
{
|
||||
HTMLTxtRange *This = OLECMDTRG_THIS(iface);
|
||||
HTMLTxtRange *This = impl_from_IOleCommandTarget(iface);
|
||||
FIXME("(%p)->(%s %d %p %p)\n", This, debugstr_guid(pguidCmdGroup), cCmds, prgCmds, pCmdText);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
@ -1820,7 +1823,7 @@ static HRESULT exec_indent(HTMLTxtRange *This, VARIANT *in, VARIANT *out)
|
|||
static HRESULT WINAPI RangeCommandTarget_Exec(IOleCommandTarget *iface, const GUID *pguidCmdGroup,
|
||||
DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
|
||||
{
|
||||
HTMLTxtRange *This = OLECMDTRG_THIS(iface);
|
||||
HTMLTxtRange *This = impl_from_IOleCommandTarget(iface);
|
||||
|
||||
TRACE("(%p)->(%s %d %x %p %p)\n", This, debugstr_guid(pguidCmdGroup), nCmdID,
|
||||
nCmdexecopt, pvaIn, pvaOut);
|
||||
|
@ -1858,7 +1861,7 @@ HRESULT HTMLTxtRange_Create(HTMLDocumentNode *doc, nsIDOMRange *nsrange, IHTMLTx
|
|||
return E_OUTOFMEMORY;
|
||||
|
||||
ret->lpHTMLTxtRangeVtbl = &HTMLTxtRangeVtbl;
|
||||
ret->lpOleCommandTargetVtbl = &OleCommandTargetVtbl;
|
||||
ret->IOleCommandTarget_iface.lpVtbl = &OleCommandTargetVtbl;
|
||||
ret->ref = 1;
|
||||
|
||||
if(nsrange)
|
||||
|
|
|
@ -658,8 +658,8 @@ static HRESULT WINAPI OleDocumentView_UIActivate(IOleDocumentView *iface, BOOL f
|
|||
if(This->doc_obj->hostui) {
|
||||
hres = IDocHostUIHandler_ShowUI(This->doc_obj->hostui,
|
||||
This->doc_obj->usermode == EDITMODE ? DOCHOSTUITYPE_AUTHOR : DOCHOSTUITYPE_BROWSE,
|
||||
&This->IOleInPlaceActiveObject_iface, CMDTARGET(This), This->doc_obj->frame,
|
||||
This->doc_obj->ip_window);
|
||||
&This->IOleInPlaceActiveObject_iface, &This->IOleCommandTarget_iface,
|
||||
This->doc_obj->frame, This->doc_obj->ip_window);
|
||||
if(FAILED(hres))
|
||||
IDocHostUIHandler_HideUI(This->doc_obj->hostui);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue