Batch #12283 by cremane: 0 byte-identical, 1 confirmed by peer review. - fn_17417 CWebBrowser::AttachSite: logic confirmed by peer review Peer-reviewed-by: Yommy, Tanke, dori Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
45 lines
1.4 KiB
C++
45 lines
1.4 KiB
C++
#include "Client/Browser/BrowserClientSite.h"
|
|
#include "Client/Browser/WebBrowser.h"
|
|
|
|
#include <new>
|
|
|
|
// OFFSET: 0x00AB2AB0
|
|
// FUNCTION: fn_17417
|
|
bool CWebBrowser::AttachSite() {
|
|
this->site = new BrowserClientSite(this->host, this->browser);
|
|
IOleObject* object;
|
|
HRESULT result = this->browser->QueryInterface(IID_IOleObject, reinterpret_cast<void**>(&object));
|
|
if (FAILED(result)) {
|
|
return false;
|
|
}
|
|
|
|
result = object->SetClientSite(this->site);
|
|
if (SUCCEEDED(result)) {
|
|
OleSetContainedObject(object, TRUE);
|
|
RECT rectangle;
|
|
GetClientRect(this->host, &rectangle);
|
|
result = object->DoVerb(OLEIVERB_INPLACEACTIVATE, nullptr, this->site, 0, this->host, &rectangle);
|
|
if (SUCCEEDED(result)) {
|
|
const int width = rectangle.right - rectangle.left;
|
|
const int height = rectangle.bottom - rectangle.top;
|
|
this->Resize(width, height);
|
|
result = AdviseBrowserEvents(object, this->site, DIID_DWebBrowserEvents2, &this->cookie);
|
|
}
|
|
}
|
|
|
|
object->Release();
|
|
return SUCCEEDED(result);
|
|
}
|
|
|
|
// OFFSET: 0x00AB2430
|
|
// FUNCTION: fn_45431
|
|
void CWebBrowser::DetachSite() {
|
|
IOleObject* object;
|
|
if (SUCCEEDED(this->browser->QueryInterface(IID_IOleObject, reinterpret_cast<void**>(&object)))) {
|
|
UnadviseBrowserEvents(object, DIID_DWebBrowserEvents2, this->cookie);
|
|
object->Release();
|
|
}
|
|
|
|
delete this->site;
|
|
this->site = nullptr;
|
|
}
|