static HRESULT WINAPI OleDocumentView_Show(IOleDocumentView *iface, BOOL fShow) { HTMLDocument *This = DOCVIEW_THIS(iface); HRESULT hres; TRACE("(%p)->(%x)\n", This, fShow); if(fShow) { if(!This->doc_obj->ui_active) { hres = activate_window(This->doc_obj); if(FAILED(hres)) return hres; } update_doc(This, UPDATE_UI); ShowWindow(This->doc_obj->hwnd, SW_SHOW); }else { ShowWindow(This->doc_obj->hwnd, SW_HIDE); if(This->doc_obj->in_place_active) IOleInPlaceObjectWindowless_InPlaceDeactivate(INPLACEWIN(This)); if(This->doc_obj->ip_window) { IOleInPlaceUIWindow_Release(This->doc_obj->ip_window); This->doc_obj->ip_window = NULL; } } return S_OK; }
static HRESULT WINAPI OleDocumentView_Clone(IOleDocumentView *iface, IOleInPlaceSite *pIPSiteNew, IOleDocumentView **ppViewNew) { HTMLDocument *This = DOCVIEW_THIS(iface); FIXME("(%p)->(%p %p)\n", This, pIPSiteNew, ppViewNew); return E_NOTIMPL; }
static HRESULT WINAPI OleDocumentView_SetRectComplex(IOleDocumentView *iface, LPRECT prcView, LPRECT prcHScroll, LPRECT prcVScroll, LPRECT prcSizeBox) { HTMLDocument *This = DOCVIEW_THIS(iface); FIXME("(%p)->(%p %p %p %p)\n", This, prcView, prcHScroll, prcVScroll, prcSizeBox); return E_NOTIMPL; }
static HRESULT WINAPI OleDocumentView_GetRect(IOleDocumentView *iface, LPRECT prcView) { HTMLDocument *This = DOCVIEW_THIS(iface); TRACE("(%p)->(%p)\n", This, prcView); if(!prcView) return E_INVALIDARG; GetClientRect(This->doc_obj->hwnd, prcView); return S_OK; }
static HRESULT WINAPI OleDocumentView_GetDocument(IOleDocumentView *iface, IUnknown **ppunk) { HTMLDocument *This = DOCVIEW_THIS(iface); TRACE("(%p)->(%p)\n", This, ppunk); if(!ppunk) return E_INVALIDARG; IHTMLDocument2_AddRef(HTMLDOC(This)); *ppunk = (IUnknown*)HTMLDOC(This); return S_OK; }
static HRESULT WINAPI OleDocumentView_GetInPlaceSite(IOleDocumentView *iface, IOleInPlaceSite **ppIPSite) { HTMLDocument *This = DOCVIEW_THIS(iface); TRACE("(%p)->(%p)\n", This, ppIPSite); if(!ppIPSite) return E_INVALIDARG; if(This->doc_obj->ipsite) IOleInPlaceSite_AddRef(This->doc_obj->ipsite); *ppIPSite = This->doc_obj->ipsite; return S_OK; }
static HRESULT WINAPI OleDocumentView_SetInPlaceSite(IOleDocumentView *iface, IOleInPlaceSite *pIPSite) { HTMLDocument *This = DOCVIEW_THIS(iface); TRACE("(%p)->(%p)\n", This, pIPSite); if(pIPSite) IOleInPlaceSite_AddRef(pIPSite); if(This->ipsite) IOleInPlaceSite_Release(This->ipsite); This->ipsite = pIPSite; return S_OK; }
static HRESULT WINAPI OleDocumentView_CloseView(IOleDocumentView *iface, DWORD dwReserved) { HTMLDocument *This = DOCVIEW_THIS(iface); TRACE("(%p)->(%x)\n", This, dwReserved); if(dwReserved) WARN("dwReserved = %d\n", dwReserved); /* NOTE: * Windows implementation calls QueryInterface(IID_IOleCommandTarget), * QueryInterface(IID_IOleControlSite) and KillTimer */ IOleDocumentView_Show(iface, FALSE); return S_OK; }
static HRESULT WINAPI OleDocumentView_SetRect(IOleDocumentView *iface, LPRECT prcView) { HTMLDocument *This = DOCVIEW_THIS(iface); RECT rect; TRACE("(%p)->(%p)\n", This, prcView); if(!prcView) return E_INVALIDARG; if(This->doc_obj->hwnd) { GetClientRect(This->doc_obj->hwnd, &rect); if(memcmp(prcView, &rect, sizeof(RECT))) { InvalidateRect(This->doc_obj->hwnd, NULL, TRUE); SetWindowPos(This->doc_obj->hwnd, NULL, prcView->left, prcView->top, prcView->right, prcView->bottom, SWP_NOZORDER | SWP_NOACTIVATE); } } return S_OK; }
static HRESULT WINAPI OleDocumentView_ApplyViewState(IOleDocumentView *iface, LPSTREAM pstm) { HTMLDocument *This = DOCVIEW_THIS(iface); FIXME("(%p)->(%p)\n", This, pstm); return E_NOTIMPL; }
static HRESULT WINAPI OleDocumentView_Open(IOleDocumentView *iface) { HTMLDocument *This = DOCVIEW_THIS(iface); FIXME("(%p)\n", This); return E_NOTIMPL; }
static HRESULT WINAPI OleDocumentView_UIActivate(IOleDocumentView *iface, BOOL fUIActivate) { HTMLDocument *This = DOCVIEW_THIS(iface); HRESULT hres; TRACE("(%p)->(%x)\n", This, fUIActivate); if(!This->doc_obj->ipsite) { IOleClientSite *cs = This->doc_obj->client; IOleInPlaceSite *ips; if(!cs) { WARN("this->ipsite = NULL\n"); return E_UNEXPECTED; } hres = IOleClientSite_QueryInterface(cs, &IID_IOleInPlaceSiteWindowless, (void**)&ips); if(SUCCEEDED(hres)) This->doc_obj->ipsite = ips; else { hres = IOleClientSite_QueryInterface(cs, &IID_IOleInPlaceSiteEx, (void**)&ips); if(SUCCEEDED(hres)) This->doc_obj->ipsite = ips; else { hres = IOleClientSite_QueryInterface(cs, &IID_IOleInPlaceSite, (void**)&ips); if(SUCCEEDED(hres)) This->doc_obj->ipsite = ips; else { WARN("this->ipsite = NULL\n"); return E_NOINTERFACE; } } } IOleClientSite_AddRef(This->doc_obj->ipsite); This->doc_obj->request_uiactivate = FALSE; HTMLDocument_LockContainer(This->doc_obj, TRUE); } if(fUIActivate) { RECT rcBorderWidths; if(This->doc_obj->ui_active) return S_OK; if(!This->doc_obj->window_active) { hres = activate_window(This->doc_obj); if(FAILED(hres)) return hres; } This->doc_obj->focus = TRUE; if(This->doc_obj->nscontainer) nsIWebBrowserFocus_Activate(This->doc_obj->nscontainer->focus); notif_focus(This->doc_obj); update_doc(This, UPDATE_UI); hres = IOleInPlaceSite_OnUIActivate(This->doc_obj->ipsite); if(SUCCEEDED(hres)) { call_set_active_object((IOleInPlaceUIWindow*)This->doc_obj->frame, ACTOBJ(This)); }else { FIXME("OnUIActivate failed: %08x\n", hres); IOleInPlaceFrame_Release(This->doc_obj->frame); This->doc_obj->frame = NULL; This->doc_obj->ui_active = FALSE; return hres; } if(This->doc_obj->hostui) { hres = IDocHostUIHandler_ShowUI(This->doc_obj->hostui, This->doc_obj->usermode == EDITMODE ? DOCHOSTUITYPE_AUTHOR : DOCHOSTUITYPE_BROWSE, ACTOBJ(This), CMDTARGET(This), This->doc_obj->frame, This->doc_obj->ip_window); if(FAILED(hres)) IDocHostUIHandler_HideUI(This->doc_obj->hostui); } if(This->doc_obj->ip_window) call_set_active_object(This->doc_obj->ip_window, ACTOBJ(This)); memset(&rcBorderWidths, 0, sizeof(rcBorderWidths)); IOleInPlaceFrame_SetBorderSpace(This->doc_obj->frame, &rcBorderWidths); This->doc_obj->ui_active = TRUE; }else { This->doc_obj->focus = FALSE; nsIWebBrowserFocus_Deactivate(This->doc_obj->nscontainer->focus); if(This->doc_obj->ui_active) { This->doc_obj->ui_active = FALSE; if(This->doc_obj->ip_window) call_set_active_object(This->doc_obj->ip_window, NULL); if(This->doc_obj->frame) call_set_active_object((IOleInPlaceUIWindow*)This->doc_obj->frame, NULL); if(This->doc_obj->hostui) IDocHostUIHandler_HideUI(This->doc_obj->hostui); if(This->doc_obj->ipsite) IOleInPlaceSite_OnUIDeactivate(This->doc_obj->ipsite, FALSE); } } return S_OK; }
static ULONG WINAPI OleDocumentView_Release(IOleDocumentView *iface) { HTMLDocument *This = DOCVIEW_THIS(iface); return IHTMLDocument2_Release(HTMLDOC(This)); }
static HRESULT WINAPI OleDocumentView_QueryInterface(IOleDocumentView *iface, REFIID riid, void **ppvObject) { HTMLDocument *This = DOCVIEW_THIS(iface); return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppvObject); }
static HRESULT WINAPI OleDocumentView_UIActivate(IOleDocumentView *iface, BOOL fUIActivate) { HTMLDocument *This = DOCVIEW_THIS(iface); HRESULT hres; TRACE("(%p)->(%x)\n", This, fUIActivate); if(!This->ipsite) { FIXME("This->ipsite = NULL\n"); return E_FAIL; } if(fUIActivate) { RECT rcBorderWidths; if(This->ui_active) return S_OK; if(!This->window_active) { hres = activate_window(This); if(FAILED(hres)) return hres; } This->focus = TRUE; if(This->nscontainer) nsIWebBrowserFocus_Activate(This->nscontainer->focus); notif_focus(This); update_doc(This, UPDATE_UI); hres = IOleInPlaceSite_OnUIActivate(This->ipsite); if(SUCCEEDED(hres)) { call_set_active_object((IOleInPlaceUIWindow*)This->frame, ACTOBJ(This)); }else { FIXME("OnUIActivate failed: %08x\n", hres); IOleInPlaceFrame_Release(This->frame); This->frame = NULL; This->ui_active = FALSE; return hres; } hres = IDocHostUIHandler_ShowUI(This->hostui, This->usermode == EDITMODE ? DOCHOSTUITYPE_AUTHOR : DOCHOSTUITYPE_BROWSE, ACTOBJ(This), CMDTARGET(This), This->frame, This->ip_window); if(FAILED(hres)) IDocHostUIHandler_HideUI(This->hostui); if(This->ip_window) call_set_active_object(This->ip_window, ACTOBJ(This)); memset(&rcBorderWidths, 0, sizeof(rcBorderWidths)); IOleInPlaceFrame_SetBorderSpace(This->frame, &rcBorderWidths); This->ui_active = TRUE; }else { if(This->ui_active) { This->ui_active = FALSE; if(This->ip_window) call_set_active_object(This->ip_window, NULL); if(This->frame) call_set_active_object((IOleInPlaceUIWindow*)This->frame, NULL); if(This->hostui) IDocHostUIHandler_HideUI(This->hostui); if(This->ipsite) IOleInPlaceSite_OnUIDeactivate(This->ipsite, FALSE); } } return S_OK; }