From 3cfd66adbe3458490444b973cc587c01c5b20cb3 Mon Sep 17 00:00:00 2001 From: Artur Twardy Date: Tue, 14 Jan 2025 15:24:20 +0100 Subject: [PATCH] Lua: Expose stretch function in box layout Change-Id: I52bb81e01561950785252d362d31d6142844fcac Reviewed-by: Reviewed-by: Marcus Tillmanns --- src/libs/utils/layoutbuilder.cpp | 11 +++++++++++ src/libs/utils/layoutbuilder.h | 2 ++ src/plugins/lua/bindings/gui.cpp | 1 + src/plugins/lua/meta/gui.lua | 5 +++++ 4 files changed, 19 insertions(+) diff --git a/src/libs/utils/layoutbuilder.cpp b/src/libs/utils/layoutbuilder.cpp index 3f403418a50..1c5dc1448fe 100644 --- a/src/libs/utils/layoutbuilder.cpp +++ b/src/libs/utils/layoutbuilder.cpp @@ -686,6 +686,12 @@ void Layout::setFieldGrowthPolicy(int policy) lt->setFieldGrowthPolicy(QFormLayout::FieldGrowthPolicy(policy)); } +void Layout::setStretch(int index, int stretch) +{ + if (auto lt = asBox()) + lt->setStretch(index, stretch); +} + QWidget *Layout::emerge() const { const_cast(this)->flush(); @@ -1143,6 +1149,11 @@ LayoutModifier spacing(int space) return [space](Layout *layout) { layout->setSpacing(space); }; } +LayoutModifier stretch(int index, int stretch) +{ + return [index, stretch](Layout *layout) { layout->setStretch(index, stretch); }; +} + void addToLayout(Layout *layout, const Space &inner) { if (auto lt = layout->asBox()) diff --git a/src/libs/utils/layoutbuilder.h b/src/libs/utils/layoutbuilder.h index 93be17bb740..6b98d5d59ac 100644 --- a/src/libs/utils/layoutbuilder.h +++ b/src/libs/utils/layoutbuilder.h @@ -122,6 +122,7 @@ public: void setColumnStretch(int cols, int rows); void setSpacing(int space); void setFieldGrowthPolicy(int policy); + void setStretch(int index, int stretch); void attachTo(QWidget *); @@ -614,6 +615,7 @@ QTCREATOR_UTILS_EXPORT void hr(Layout *); QTCREATOR_UTILS_EXPORT void tight(Layout *); // noMargin + spacing(0) QTCREATOR_UTILS_EXPORT LayoutModifier spacing(int space); +QTCREATOR_UTILS_EXPORT LayoutModifier stretch(int index, int stretch); // Convenience diff --git a/src/plugins/lua/bindings/gui.cpp b/src/plugins/lua/bindings/gui.cpp index 9ebedea3ecc..60bb05e5ba1 100644 --- a/src/plugins/lua/bindings/gui.cpp +++ b/src/plugins/lua/bindings/gui.cpp @@ -700,6 +700,7 @@ void setupGuiModule() gui["normalMargin"] = &normalMargin; gui["withFormAlignment"] = &withFormAlignment; gui["spacing"] = &spacing; + gui["stretch"] = &stretch; return gui; }); diff --git a/src/plugins/lua/meta/gui.lua b/src/plugins/lua/meta/gui.lua index 661b86a7024..a4ca4badb51 100644 --- a/src/plugins/lua/meta/gui.lua +++ b/src/plugins/lua/meta/gui.lua @@ -260,6 +260,11 @@ function gui.normalMargin() end ---Sets the alignment of a Grid layout according to the Form layout rules. function gui.withFormAlignment() end +---Sets the stretch factor at position index to stretch. +---@param index integer The widget index. +---@param stretch integer The stretch factor. +function gui.stretch(index, stretch) end + --- Enum representing Text interaction flags ---@enum TextInteractionFlag gui.TextInteractionFlag {