Administrative source import: native x86 compilation passed for 423 authored units. Source placement and submission states are migrated separately; this commit does not imply peer acceptance.
Previous head: 35d2a8cb36
Payload SHA256: 592f016d2730c5593bb653aa054c1e5f76a6df72c8f5a09e66f74876e2e33dee
50 lines
1.2 KiB
C++
50 lines
1.2 KiB
C++
#include "Client/Browser/BrowserRegistry.h"
|
|
#include "Client/Browser/WebBrowser.h"
|
|
|
|
#include <new>
|
|
|
|
// OFFSET: 0x00A91990
|
|
// FUNCTION: fn_17167
|
|
CWebBrowser* BrowserRegistry::Find(HWND window) const {
|
|
const auto found = this->browsers.find(window);
|
|
return found == this->browsers.end() ? nullptr : found->second;
|
|
}
|
|
|
|
// OFFSET: 0x00A8F860
|
|
// FUNCTION: fn_17146
|
|
void BrowserRegistry::Remove(HWND window) {
|
|
const auto found = this->browsers.find(window);
|
|
if (found != this->browsers.end()) {
|
|
CWebBrowser* browser = found->second;
|
|
if (browser) {
|
|
if (browser == this->special) {
|
|
this->special = nullptr;
|
|
}
|
|
|
|
delete browser;
|
|
}
|
|
|
|
this->browsers.erase(found);
|
|
return;
|
|
}
|
|
|
|
if (window == this->special->host) {
|
|
delete this->special;
|
|
this->special = nullptr;
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00A8C960
|
|
// FUNCTION: fn_17138
|
|
CWebBrowser* BrowserRegistry::EnsureSpecial(WebBrowserContext& context, int width, int height) {
|
|
if (this->special) {
|
|
return this->special;
|
|
}
|
|
|
|
this->special = new (std::nothrow) CWebBrowser(context);
|
|
if (this->special && this->special->Create(width, height)) {
|
|
this->browsers.emplace(this->special->host, this->special);
|
|
}
|
|
|
|
return this->special;
|
|
}
|