#pragma once #include #include #include "browser-panel.hpp" #include "cef-headers.hpp" #include #include struct PopupWhitelistInfo { std::string url; QPointer obj; inline PopupWhitelistInfo(const std::string &url_, QObject *obj_) : url(url_), obj(obj_) {} }; extern std::mutex popup_whitelist_mutex; extern std::vector popup_whitelist; extern std::vector forced_popups; /* ------------------------------------------------------------------------- */ class QCefWidgetInternal : public QCefWidget { Q_OBJECT public: QCefWidgetInternal(QWidget *parent, const std::string &url, CefRefPtr rqc); ~QCefWidgetInternal(); CefRefPtr cefBrowser; std::string url; std::string script; CefRefPtr rqc; QTimer timer; #ifndef __APPLE__ QPointer window; QPointer container; #endif bool allowAllPopups_ = false; virtual void resizeEvent(QResizeEvent *event) override; virtual void showEvent(QShowEvent *event) override; virtual QPaintEngine *paintEngine() const override; virtual void setURL(const std::string &url) override; virtual void setStartupScript(const std::string &script) override; virtual void allowAllPopups(bool allow) override; virtual void closeBrowser() override; virtual void reloadPage() override; virtual bool zoomPage(int direction) override; virtual void executeJavaScript(const std::string &script) override; void finishCloseBrowser(); void Resize(); #ifdef __linux__ private: bool needsDeleteXdndProxy = true; void unsetToplevelXdndProxy(); #endif public slots: void Init(); signals: void readyToClose(); };