static void set_status_text(BindStatusCallback *This, ULONG statuscode, LPCWSTR str) { VARIANTARG arg; DISPPARAMS dispparams = {&arg, NULL, 1, 0}; WCHAR fmt[IDS_STATUSFMT_MAXLEN]; WCHAR buffer[IDS_STATUSFMT_MAXLEN + INTERNET_MAX_URL_LENGTH]; if(!This->doc_host) return; TRACE("(%p, %d, %s)\n", This, statuscode, debugstr_w(str)); buffer[0] = 0; if (statuscode && str && *str) { fmt[0] = 0; /* the format string must have one "%s" for the str */ LoadStringW(ieframe_instance, IDS_STATUSFMT_FIRST + statuscode, fmt, IDS_STATUSFMT_MAXLEN); snprintfW(buffer, sizeof(buffer)/sizeof(WCHAR), fmt, str); } V_VT(&arg) = VT_BSTR; V_BSTR(&arg) = str ? SysAllocString(buffer) : NULL; TRACE("=> %s\n", debugstr_w(V_BSTR(&arg))); call_sink(This->doc_host->cps.wbe2, DISPID_STATUSTEXTCHANGE, &dispparams); if(This->doc_host->frame) IOleInPlaceFrame_SetStatusText(This->doc_host->frame, buffer); VariantClear(&arg); }
static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event) { HTMLDocumentNode *doc = NSEVENTLIST_THIS(iface)->This->doc; HTMLDocumentObj *doc_obj; nsIDOMHTMLElement *nsbody = NULL; TRACE("(%p)\n", doc); if(!doc || !doc->basedoc.window) return NS_ERROR_FAILURE; doc_obj = doc->basedoc.doc_obj; connect_scripts(doc->basedoc.window); if(doc_obj->nscontainer->editor_controller) { nsIController_Release(doc_obj->nscontainer->editor_controller); doc_obj->nscontainer->editor_controller = NULL; } if(doc_obj->usermode == EDITMODE) handle_edit_load(&doc_obj->basedoc); if(doc == doc_obj->basedoc.doc_node) handle_docobj_load(doc_obj); set_ready_state(doc->basedoc.window, READYSTATE_COMPLETE); if(doc == doc_obj->basedoc.doc_node) { if(doc_obj->view_sink) IAdviseSink_OnViewChange(doc_obj->view_sink, DVASPECT_CONTENT, -1); if(doc_obj->frame) { static const WCHAR wszDone[] = {'D','o','n','e',0}; IOleInPlaceFrame_SetStatusText(doc_obj->frame, wszDone); } update_title(doc_obj); } if(!doc->nsdoc) { ERR("NULL nsdoc\n"); return NS_ERROR_FAILURE; } nsIDOMHTMLDocument_GetBody(doc->nsdoc, &nsbody); if(nsbody) { fire_event(doc, EVENTID_LOAD, TRUE, (nsIDOMNode*)nsbody, event); nsIDOMHTMLElement_Release(nsbody); } return NS_OK; }
static void set_status_text(BindStatusCallback *This, LPCWSTR str) { VARIANTARG arg; DISPPARAMS dispparams = {&arg, NULL, 1, 0}; if(!This->doc_host) return; V_VT(&arg) = VT_BSTR; V_BSTR(&arg) = str ? SysAllocString(str) : NULL; call_sink(This->doc_host->cps.wbe2, DISPID_STATUSTEXTCHANGE, &dispparams); VariantClear(&arg); if(This->doc_host->frame) IOleInPlaceFrame_SetStatusText(This->doc_host->frame, str); }
void set_statustext(HTMLDocumentObj* doc, INT id, LPCWSTR arg) { int index = id - IDS_STATUS_DONE; LPWSTR p = status_strings[index]; if(!doc->frame) return; if(!p) { DWORD len = 255; p = heap_alloc(len * sizeof(WCHAR)); len = LoadStringW(hInst, id, p, len); len++; p = heap_realloc(p, len * sizeof(WCHAR)); if(InterlockedCompareExchangePointer((void**)&status_strings[index], p, NULL)) { heap_free(p); p = status_strings[index]; } } if(arg) { DWORD len = lstrlenW(p) + lstrlenW(arg) - 1; LPWSTR buf = heap_alloc(len * sizeof(WCHAR)); snprintfW(buf, len, p, arg); p = buf; } IOleInPlaceFrame_SetStatusText(doc->frame, p); if(arg) heap_free(p); }
static HRESULT activate_window(HTMLDocumentObj *This) { IOleInPlaceFrame *pIPFrame; IOleCommandTarget *cmdtrg; IOleInPlaceSiteEx *ipsiteex; RECT posrect, cliprect; OLEINPLACEFRAMEINFO frameinfo; HWND parent_hwnd; HRESULT hres; if(!serverwnd_class) register_serverwnd_class(); hres = IOleInPlaceSite_CanInPlaceActivate(This->ipsite); if(hres != S_OK) { WARN("CanInPlaceActivate returned: %08x\n", hres); return FAILED(hres) ? hres : E_FAIL; } hres = IOleInPlaceSite_GetWindowContext(This->ipsite, &pIPFrame, &This->ip_window, &posrect, &cliprect, &frameinfo); if(FAILED(hres)) { WARN("GetWindowContext failed: %08x\n", hres); return hres; } TRACE("got window context: %p %p {%d %d %d %d} {%d %d %d %d} {%d %x %p %p %d}\n", pIPFrame, This->ip_window, posrect.left, posrect.top, posrect.right, posrect.bottom, cliprect.left, cliprect.top, cliprect.right, cliprect.bottom, frameinfo.cb, frameinfo.fMDIApp, frameinfo.hwndFrame, frameinfo.haccel, frameinfo.cAccelEntries); hres = IOleInPlaceSite_GetWindow(This->ipsite, &parent_hwnd); if(FAILED(hres)) { WARN("GetWindow failed: %08x\n", hres); return hres; } TRACE("got parent window %p\n", parent_hwnd); if(This->hwnd) { if(GetParent(This->hwnd) != parent_hwnd) SetParent(This->hwnd, parent_hwnd); SetWindowPos(This->hwnd, HWND_TOP, posrect.left, posrect.top, posrect.right-posrect.left, posrect.bottom-posrect.top, SWP_NOACTIVATE | SWP_SHOWWINDOW); }else { CreateWindowExW(0, wszInternetExplorer_Server, NULL, WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, posrect.left, posrect.top, posrect.right-posrect.left, posrect.bottom-posrect.top, parent_hwnd, NULL, hInst, This); TRACE("Created window %p\n", This->hwnd); SetWindowPos(This->hwnd, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOREDRAW | SWP_NOACTIVATE | SWP_SHOWWINDOW); RedrawWindow(This->hwnd, NULL, NULL, RDW_INVALIDATE | RDW_NOERASE | RDW_ALLCHILDREN); /* NOTE: * Windows implementation calls: * RegisterWindowMessage("MSWHEEL_ROLLMSG"); */ SetTimer(This->hwnd, TIMER_ID, 100, NULL); } if(This->nscontainer) activate_gecko(This->nscontainer); This->in_place_active = TRUE; hres = IOleInPlaceSite_QueryInterface(This->ipsite, &IID_IOleInPlaceSiteEx, (void**)&ipsiteex); if(SUCCEEDED(hres)) { BOOL redraw = FALSE; hres = IOleInPlaceSiteEx_OnInPlaceActivateEx(ipsiteex, &redraw, 0); IOleInPlaceSiteEx_Release(ipsiteex); if(redraw) FIXME("unsupported redraw\n"); }else{ hres = IOleInPlaceSite_OnInPlaceActivate(This->ipsite); } if(FAILED(hres)) { WARN("OnInPlaceActivate failed: %08x\n", hres); This->in_place_active = FALSE; return hres; } hres = IOleClientSite_QueryInterface(This->client, &IID_IOleCommandTarget, (void**)&cmdtrg); if(SUCCEEDED(hres)) { VARIANT var; IOleInPlaceFrame_SetStatusText(pIPFrame, NULL); V_VT(&var) = VT_I4; V_I4(&var) = 0; IOleCommandTarget_Exec(cmdtrg, NULL, OLECMDID_SETPROGRESSMAX, OLECMDEXECOPT_DONTPROMPTUSER, &var, NULL); IOleCommandTarget_Exec(cmdtrg, NULL, OLECMDID_SETPROGRESSPOS, OLECMDEXECOPT_DONTPROMPTUSER, &var, NULL); IOleCommandTarget_Release(cmdtrg); } if(This->frame) IOleInPlaceFrame_Release(This->frame); This->frame = pIPFrame; if(!This->request_uiactivate) { hres = IOleInPlaceSite_QueryInterface(This->ipsite, &IID_IOleInPlaceSiteEx, (void**)&ipsiteex); if(SUCCEEDED(hres)) { IOleInPlaceSiteEx_RequestUIActivate(ipsiteex); IOleInPlaceSiteEx_Release(ipsiteex); } } This->window_active = TRUE; return S_OK; }