From 8ab1f8d796d8f35a65e38fdd03d51824a41d1dab Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sat, 26 Jul 2025 16:16:54 +0530 Subject: Add simple js rpc for decorations via custom scheme --- src/widgets/WebView.hpp | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) (limited to 'src/widgets/WebView.hpp') diff --git a/src/widgets/WebView.hpp b/src/widgets/WebView.hpp index 0900ea6..5be9831 100644 --- a/src/widgets/WebView.hpp +++ b/src/widgets/WebView.hpp @@ -1,35 +1,22 @@ #pragma once #include +#include +#include +#include #include #include #include +#include #include +#include +#include #include "utils.hpp" +#include "widgets/DevtoolsWindow.hpp" -class DevtoolsWindow : public QMainWindow { - Q_OBJECT - -public: - DevtoolsWindow(QWebEngineProfile *profile, QWidget *parent = nullptr, - Qt::WindowFlags flags = Qt::WindowFlags()) - : QMainWindow(parent, flags) { - webengineview = new QWebEngineView(profile, this); - this->setCentralWidget(webengineview); - } - - DELEGATE(webengineview, page, page) - -signals: - void closed(); - -protected: - void closeEvent(QCloseEvent * /* event */) override { emit closed(); } - -private: - QWebEngineView *webengineview; -}; +using RpcArgs = std::unordered_map; +using RpcFunc = std::function; class WebView : public QWebEngineView { Q_OBJECT @@ -40,11 +27,15 @@ public: void scroll_increment(int deltax, int deltay); void scroll_to_top(); void scroll_to_bottom(); + void enable_rpc_api(); + void expose_rpc_function(const QString &name, const RpcFunc &action); DEFINE_GETTER(get_id, id) private: uint32_t id; - DevtoolsWindow *devtools_window = nullptr; + std::unordered_map exposed_functions; + + void on_rpc_message(const QString &action, const QUrlQuery ¶ms); }; -- cgit v1.3.1