rodecomp/Source/Client/Browser/BrowserSiteAttachment.cpp
ragnarok-clanker e2596ded7b Decompile fn_17417 (CWebBrowser::AttachSite)
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).
2026-11-05 15:40:05 +00:00

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;
}