diff --git a/SDK/include/NDK/BaseWidget.hpp b/SDK/include/NDK/BaseWidget.hpp index 38e593563..8d3ecd7bf 100644 --- a/SDK/include/NDK/BaseWidget.hpp +++ b/SDK/include/NDK/BaseWidget.hpp @@ -31,6 +31,7 @@ namespace Ndk BaseWidget(BaseWidget&&) = default; virtual ~BaseWidget(); + template T& Add(Args&&... args); inline void AddChild(std::unique_ptr&& widget); void EnableBackground(bool enable); diff --git a/SDK/include/NDK/BaseWidget.inl b/SDK/include/NDK/BaseWidget.inl index b5ab5b0f1..22b9e6249 100644 --- a/SDK/include/NDK/BaseWidget.inl +++ b/SDK/include/NDK/BaseWidget.inl @@ -17,6 +17,16 @@ namespace Ndk SetPadding(5.f, 5.f, 5.f, 5.f); } + template + inline T& BaseWidget::Add(Args&&... args) + { + std::unique_ptr widget = std::make_unique(this, std::forward(args)...); + T& widgetRef = *widget; + AddChild(std::move(widget)); + + return widgetRef; + } + inline void BaseWidget::AddChild(std::unique_ptr&& widget) { m_children.emplace_back(std::move(widget));