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/EdgeDecoration.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'src/widgets/EdgeDecoration.cpp') diff --git a/src/widgets/EdgeDecoration.cpp b/src/widgets/EdgeDecoration.cpp index 7f5a59f..5277e6c 100644 --- a/src/widgets/EdgeDecoration.cpp +++ b/src/widgets/EdgeDecoration.cpp @@ -4,13 +4,26 @@ #include #include +#include "LuaRuntime.hpp" #include "widgets/WebView.hpp" #include "widgets/WebViewStack.hpp" #include "widgets/EdgeDecoration.hpp" QString default_html_layout = R"HTML( - {{body}} + + + {{body}} )HTML"; EdgeDecoration::EdgeDecoration(bool vertical, QWebEngineProfile *profile, QWidget *parent) @@ -50,9 +65,14 @@ void EdgeDecoration::setup_webview() { if (!webview.has_value()) { webview = new WebView(WebViewStack::next_webview_id++, profile, this); layout()->addWidget(webview.value()); + webview.value()->enable_rpc_api(); + webview.value()->expose_rpc_function("tab_select", [](RpcArgs args) { + LuaRuntime::instance().webview_selected(args.at("view").toInt()); + }); } - webview.value()->setHtml(QString(default_html_layout).replace("{{body}}", html_content)); + webview.value()->setHtml(QString(default_html_layout).replace("{{body}}", html_content), + QUrl("nullrpc://noop")); if (vertical) webview.value()->setFixedWidth(size); else -- cgit v1.3.1