界面与品牌 - 默认 UI 语言固定为英文,不再跟随系统区域设置自动切换(frontend/OBSApp.cpp),用户仍可在设置中手动切换 - 程序图标更换为 CAIIC logo:exe 图标 obs-studio.ico 及界面/托盘/About 图标 obs.png - About 窗口精简为 logo + 名称 + 版本号,移除项目介绍、赞助名单、Authors/License 标签页 - 版本号定为 1.0.0(构建参数 OBS_VERSION_OVERRIDE=1.0.0) 分辨率支持 - 移除首次启动将画布强制限制为 1920x1080 的逻辑,默认使用显示器原生分辨率 - 设置-视频 与自动配置向导新增 3840x2160 / 2560x1440 预设 - 自动配置向导性能测试上限放宽至 4K60(软硬件编码数据率上限及起始分辨率钳制) 插件 - 集成 obs-shaderfilter 2.6.0(绿幕抠图/自定义着色器滤镜),并适配新版 libobs 的 gs_image_file_ex API - 补齐缺失的源码:obs-browser、obs-websocket、libdshowcapture(含 external/capture-device-support) 工程 - 新增 .gitignore,排除 deploy/ 发布目录与构建日志
117 lines
4.5 KiB
C++
117 lines
4.5 KiB
C++
#pragma once
|
|
|
|
#include "cef-headers.hpp"
|
|
#include "browser-panel-internal.hpp"
|
|
|
|
#include <string>
|
|
|
|
class QCefBrowserClient : public CefClient,
|
|
public CefDisplayHandler,
|
|
#if CHROME_VERSION_BUILD >= 6533
|
|
public CefCommandHandler,
|
|
#endif
|
|
public CefRequestHandler,
|
|
public CefLifeSpanHandler,
|
|
public CefContextMenuHandler,
|
|
public CefLoadHandler,
|
|
public CefKeyboardHandler,
|
|
public CefFocusHandler,
|
|
public CefJSDialogHandler {
|
|
|
|
public:
|
|
inline QCefBrowserClient(QCefWidgetInternal *widget_, const std::string &script_, bool allowAllPopups_)
|
|
: widget(widget_),
|
|
script(script_),
|
|
allowAllPopups(allowAllPopups_)
|
|
{
|
|
}
|
|
|
|
/* CefClient */
|
|
virtual CefRefPtr<CefLoadHandler> GetLoadHandler() override;
|
|
virtual CefRefPtr<CefDisplayHandler> GetDisplayHandler() override;
|
|
#if CHROME_VERSION_BUILD >= 6533
|
|
virtual CefRefPtr<CefCommandHandler> GetCommandHandler() override;
|
|
#endif
|
|
virtual CefRefPtr<CefRequestHandler> GetRequestHandler() override;
|
|
virtual CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler() override;
|
|
virtual CefRefPtr<CefKeyboardHandler> GetKeyboardHandler() override;
|
|
virtual CefRefPtr<CefFocusHandler> GetFocusHandler() override;
|
|
virtual CefRefPtr<CefContextMenuHandler> GetContextMenuHandler() override;
|
|
virtual CefRefPtr<CefJSDialogHandler> GetJSDialogHandler() override;
|
|
|
|
/* CefCommandHandler */
|
|
#if CHROME_VERSION_BUILD >= 6533
|
|
virtual bool OnChromeCommand(CefRefPtr<CefBrowser> browser, int command_id,
|
|
cef_window_open_disposition_t disposition) override;
|
|
#endif
|
|
|
|
/* CefDisplayHandler */
|
|
virtual void OnTitleChange(CefRefPtr<CefBrowser> browser, const CefString &title) override;
|
|
|
|
/* CefRequestHandler */
|
|
virtual bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame,
|
|
CefRefPtr<CefRequest> request, bool user_gesture, bool is_redirect) override;
|
|
|
|
virtual void OnLoadError(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame,
|
|
CefLoadHandler::ErrorCode errorCode, const CefString &errorText,
|
|
const CefString &failedUrl) override;
|
|
|
|
virtual bool OnOpenURLFromTab(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame,
|
|
const CefString &target_url,
|
|
CefRequestHandler::WindowOpenDisposition target_disposition,
|
|
bool user_gesture) override;
|
|
|
|
/* CefLifeSpanHandler */
|
|
virtual bool OnBeforePopup(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame,
|
|
#if CHROME_VERSION_BUILD >= 6834
|
|
int popup_id,
|
|
#endif
|
|
const CefString &target_url, const CefString &target_frame_name,
|
|
CefLifeSpanHandler::WindowOpenDisposition target_disposition, bool user_gesture,
|
|
const CefPopupFeatures &popupFeatures, CefWindowInfo &windowInfo,
|
|
CefRefPtr<CefClient> &client, CefBrowserSettings &settings,
|
|
CefRefPtr<CefDictionaryValue> &extra_info, bool *no_javascript_access) override;
|
|
|
|
virtual void OnBeforeClose(CefRefPtr<CefBrowser> browser) override;
|
|
|
|
/* CefFocusHandler */
|
|
virtual bool OnSetFocus(CefRefPtr<CefBrowser> browser, CefFocusHandler::FocusSource source) override;
|
|
|
|
/* CefContextMenuHandler */
|
|
virtual void OnBeforeContextMenu(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame,
|
|
CefRefPtr<CefContextMenuParams> params,
|
|
CefRefPtr<CefMenuModel> model) override;
|
|
|
|
#if defined(_WIN32)
|
|
virtual bool RunContextMenu(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame,
|
|
CefRefPtr<CefContextMenuParams> params, CefRefPtr<CefMenuModel> model,
|
|
CefRefPtr<CefRunContextMenuCallback> callback) override;
|
|
#endif
|
|
|
|
virtual bool OnContextMenuCommand(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame,
|
|
CefRefPtr<CefContextMenuParams> params, int command_id,
|
|
CefContextMenuHandler::EventFlags event_flags) override;
|
|
|
|
/* CefLoadHandler */
|
|
virtual void OnLoadStart(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame,
|
|
TransitionType transition_type) override;
|
|
|
|
virtual void OnLoadEnd(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, int httpStatusCode) override;
|
|
|
|
/* CefKeyboardHandler */
|
|
virtual bool OnPreKeyEvent(CefRefPtr<CefBrowser> browser, const CefKeyEvent &event, CefEventHandle os_event,
|
|
bool *is_keyboard_shortcut) override;
|
|
|
|
/* CefJSDialogHandler */
|
|
virtual bool OnJSDialog(CefRefPtr<CefBrowser> browser, const CefString &origin_url,
|
|
CefJSDialogHandler::JSDialogType dialog_type, const CefString &message_text,
|
|
const CefString &default_prompt_text, CefRefPtr<CefJSDialogCallback> callback,
|
|
bool &suppress_message) override;
|
|
|
|
QCefWidgetInternal *widget = nullptr;
|
|
std::string script;
|
|
bool allowAllPopups;
|
|
|
|
IMPLEMENT_REFCOUNTING(QCefBrowserClient);
|
|
};
|