From 3bed2fb7fe3376bd3e3c50ee9d18ab3206783100 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 5 Jul 2019 22:21:35 +0200 Subject: [PATCH] SDK/BaseWidget: Add SetParent --- ChangeLog.md | 1 + SDK/include/NDK/BaseWidget.hpp | 1 + SDK/src/NDK/BaseWidget.cpp | 21 +++++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index ba3b40b55..a34d932a9 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -270,6 +270,7 @@ Nazara Development Kit: - Fixed possible crash when disabling BaseWidget background - Added BaseWidget::OnMouseWheelMoved - Added Entity::OnEntity[Disabled|Enabled] signals +- Added BaseWidget::SetParent # 0.4: diff --git a/SDK/include/NDK/BaseWidget.hpp b/SDK/include/NDK/BaseWidget.hpp index aed8359d8..77f97bd1f 100644 --- a/SDK/include/NDK/BaseWidget.hpp +++ b/SDK/include/NDK/BaseWidget.hpp @@ -81,6 +81,7 @@ namespace Ndk void SetBackgroundColor(const Nz::Color& color); void SetCursor(Nz::SystemCursor systemCursor); void SetFocus(); + void SetParent(BaseWidget* widget); inline void SetFixedHeight(float fixedHeight); inline void SetFixedSize(const Nz::Vector2f& fixedSize); diff --git a/SDK/src/NDK/BaseWidget.cpp b/SDK/src/NDK/BaseWidget.cpp index 669747531..80978ffaf 100644 --- a/SDK/src/NDK/BaseWidget.cpp +++ b/SDK/src/NDK/BaseWidget.cpp @@ -145,6 +145,27 @@ namespace Ndk m_canvas->SetKeyboardOwner(m_canvasIndex); } + void BaseWidget::SetParent(BaseWidget* widget) + { + Canvas* oldCanvas = m_canvas; + Canvas* newCanvas = widget->GetCanvas(); + + // Changing a widget canvas is a problem because of the canvas entities + NazaraAssert(oldCanvas == newCanvas, "Transferring a widget between canvas is not yet supported"); + + Node::SetParent(widget); + m_widgetParent = widget; + + Layout(); + } + + void BaseWidget::SetRenderingRect(const Nz::Rectf& renderingRect) + { + m_renderingRect = renderingRect; + + UpdatePositionAndSize(); + } + void BaseWidget::Show(bool show) { if (m_visible != show)