aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/LuaRuntime.hpp1
-rw-r--r--src/LuaRuntimeApi.hpp13
-rw-r--r--src/WindowActionRouter.cpp6
-rw-r--r--src/widgets/BrowserWindow.hpp1
-rw-r--r--src/widgets/Decorations.cpp8
-rw-r--r--src/widgets/Decorations.hpp1
6 files changed, 30 insertions, 0 deletions
diff --git a/src/LuaRuntime.hpp b/src/LuaRuntime.hpp
index 78ae354..8135d04 100644
--- a/src/LuaRuntime.hpp
+++ b/src/LuaRuntime.hpp
@@ -63,6 +63,7 @@ signals:
void webview_scroll_top_requested(WebViewId webview_id);
void webview_scroll_bottom_requested(WebViewId webview_id);
void decoration_set_enabled(DecorationType type, bool enabled, std::optional<WindowId> win_id);
+ void decoration_set_size(DecorationType type, uint16_t size, std::optional<WindowId> win_id);
void webview_html_set_requested(const QString &html, WebViewId view_id);
void webview_js_eval_requested(const QString &js_code, WebViewId view_id,
const JsOnResultFunc &on_result);
diff --git a/src/LuaRuntimeApi.hpp b/src/LuaRuntimeApi.hpp
index d6a78d5..239276e 100644
--- a/src/LuaRuntimeApi.hpp
+++ b/src/LuaRuntimeApi.hpp
@@ -339,6 +339,18 @@ int lua_api_decorations_set_enabled(lua_State *state) {
return 1;
}
+int lua_api_decorations_set_size(lua_State *state) {
+ auto type = (DecorationType)lua_tointeger(state, 1);
+ uint16_t size = lua_tointeger(state, 2);
+ qDebug() << "::api" << type << size;
+ std::optional<WindowId> win_id =
+ lua_isnoneornil(state, 3) ? std::nullopt : std::make_optional(lua_tointeger(state, 3));
+ auto &runtime = LuaRuntime::instance();
+ emit runtime.decoration_set_size(type, size, win_id);
+ lua_pushnil(state);
+ return 1;
+}
+
int lua_api_decorations_get_enabled(lua_State *state) {
auto type = (DecorationType)lua_tointeger(state, 1);
WindowId win_id = lua_isnoneornil(state, 2) ? lua_tointeger(state, 2) : 0;
@@ -429,6 +441,7 @@ static luaL_Reg internals_api[] = {
luaL_Reg{"search_next", &lua_api_search_next},
luaL_Reg{"decorations_set_enabled", &lua_api_decorations_set_enabled},
luaL_Reg{"decorations_get_enabled", &lua_api_decorations_get_enabled},
+ luaL_Reg{"decorations_set_size", &lua_api_decorations_set_size},
luaL_Reg{"decorations_get_view", &lua_api_decorations_get_view},
luaL_Reg{"schedule", &lua_api_schedule_fn},
luaL_Reg{nullptr, nullptr},
diff --git a/src/WindowActionRouter.cpp b/src/WindowActionRouter.cpp
index f513210..db0398d 100644
--- a/src/WindowActionRouter.cpp
+++ b/src/WindowActionRouter.cpp
@@ -122,6 +122,12 @@ void WindowActionRouter::initialize(Configuration *config) {
for (auto *win : get_relevant_windows(win_id))
win->set_decoration_enabled(type, enabled);
});
+ connect(&runtime, &LuaRuntime::decoration_set_size, this,
+ [this](DecorationType type, uint16_t size, std::optional<WindowId> win_id) {
+ qDebug() << "::win" << type << size;
+ for (auto *win : get_relevant_windows(win_id))
+ win->set_decoration_size(type, size);
+ });
connect(&runtime, &LuaRuntime::schedule_for_next_tick, this,
[](const std::function<void()> &action) { LuaRuntime::instance().queue_task(action); });
diff --git a/src/widgets/BrowserWindow.hpp b/src/widgets/BrowserWindow.hpp
index 2842983..f51b0f7 100644
--- a/src/widgets/BrowserWindow.hpp
+++ b/src/widgets/BrowserWindow.hpp
@@ -33,6 +33,7 @@ public:
DELEGATE(decorations, set_enabled, set_decoration_enabled)
DELEGATE(decorations, get_enabled, get_decoration_enabled)
DELEGATE(decorations, get_view_id, get_decoration_view_id)
+ DELEGATE(decorations, set_size, set_decoration_size)
IWebViewMediator *get_webview_mediator(WebViewId webview_id);
bool has_webview(WebViewId webview_id);
diff --git a/src/widgets/Decorations.cpp b/src/widgets/Decorations.cpp
index 22aa9f9..5e11be4 100644
--- a/src/widgets/Decorations.cpp
+++ b/src/widgets/Decorations.cpp
@@ -3,6 +3,7 @@
#include <optional>
#include <qboxlayout.h>
#include <qlabel.h>
+#include <qlogging.h>
#include <qwidget.h>
#include "Decorations.hpp"
@@ -84,6 +85,13 @@ void Decorations::set_html(const QString &html, WebViewId view_id) {
decoration.value()->set_html(html);
}
+void Decorations::set_size(DecorationType type, uint16_t size) {
+ qDebug() << "::deco" << type << size;
+ auto decoration = get_decoration_widget_type(type);
+ if (decoration.has_value())
+ decoration.value()->set_size(size);
+}
+
void Decorations::run_javascript(const QString &js_code, WebViewId view_id,
const JsOnResultFunc &on_result) {
auto decoration = get_decoration_widget_by_view_id(view_id);
diff --git a/src/widgets/Decorations.hpp b/src/widgets/Decorations.hpp
index 3df4fd7..388a02f 100644
--- a/src/widgets/Decorations.hpp
+++ b/src/widgets/Decorations.hpp
@@ -25,6 +25,7 @@ public:
void set_enabled(DecorationType type, bool enabled);
bool get_enabled(DecorationType type);
+ void set_size(DecorationType type, uint16_t size_value);
std::optional<WebViewId> get_view_id(DecorationType type);
bool has_webview(WebViewId view_id) override;