-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSlBrowserWidget.cpp
75 lines (59 loc) · 1.99 KB
/
SlBrowserWidget.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "SlBrowserWidget.h"
#include "SlBrowser.h"
#include <QDialog>
#include <QCloseEvent>
#include <QVBoxLayout>
#include <iostream>
SlBrowserWidget::SlBrowserWidget()
{
setAttribute(Qt::WA_PaintOnScreen);
setAttribute(Qt::WA_StaticContents);
setAttribute(Qt::WA_NoSystemBackground);
setAttribute(Qt::WA_OpaquePaintEvent);
setAttribute(Qt::WA_DontCreateNativeAncestors);
setAttribute(Qt::WA_NativeWindow);
setFocusPolicy(Qt::ClickFocus);
wchar_t buffer[MAX_PATH];
DWORD size = GetCurrentDirectory(MAX_PATH, buffer);
std::wstring iconpath = std::wstring(buffer) + L"/../../obs-plugins/64bit/streamlabs-app-icon.png";
setWindowIcon(QIcon(QString::fromStdWString(iconpath)));
}
void SlBrowserWidget::closeEvent(QCloseEvent *event) /*override*/
{
event->ignore();
if (SlBrowser::instance().m_allowHideBrowser)
setHidden(true);
SlBrowser::instance().saveHiddenState(SlBrowser::instance().m_widget->isHidden());
}
void SlBrowserWidget::resizeEvent(QResizeEvent *event) /*override*/
{
QWidget::resizeEvent(event);
if (SlBrowser::instance().m_browser != nullptr)
{
QSize size = this->size() * devicePixelRatioF();
class BrowserTask : public CefTask
{
public:
std::function<void()> task;
inline BrowserTask(std::function<void()> task_) : task(task_) {}
void Execute() override { task(); }
IMPLEMENT_REFCOUNTING(BrowserTask);
};
auto QueueCEFTask = [](std::function<void()> task) { return CefPostTask(TID_UI, CefRefPtr<BrowserTask>(new BrowserTask(task))); };
QueueCEFTask([this, size]() {
CefWindowHandle handle = SlBrowser::instance().m_browser->GetHost()->GetWindowHandle();
if (!handle)
return;
::SetWindowPos((HWND)handle, nullptr, 0, 0, size.width(), size.height(), SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER);
::SendMessage((HWND)handle, WM_SIZE, 0, MAKELPARAM(size.width(), size.height()));
});
}
}
void SlBrowserWidget::showEvent(QShowEvent *event)
{
QWidget::showEvent(event);
}
QPaintEngine *SlBrowserWidget::paintEngine() const
{
return nullptr;
}