diff --git a/src/Nazara/Widgets/BaseWidget.cpp b/src/Nazara/Widgets/BaseWidget.cpp index adb2d0d14..e6bd86770 100644 --- a/src/Nazara/Widgets/BaseWidget.cpp +++ b/src/Nazara/Widgets/BaseWidget.cpp @@ -88,9 +88,12 @@ namespace Nz if (enable) { - m_backgroundSprite = std::make_shared((m_backgroundColor.IsOpaque()) ? Widgets::Instance()->GetOpaqueMaterial() : Widgets::Instance()->GetTransparentMaterial()); - m_backgroundSprite->SetColor(m_backgroundColor); - m_backgroundSprite->UpdateRenderLayer(m_baseRenderLayer); + if (!m_backgroundSprite) + { + m_backgroundSprite = std::make_shared((m_backgroundColor.IsOpaque()) ? Widgets::Instance()->GetOpaqueMaterial() : Widgets::Instance()->GetTransparentMaterial()); + m_backgroundSprite->SetColor(m_backgroundColor); + m_backgroundSprite->UpdateRenderLayer(m_baseRenderLayer); + } entt::entity backgroundEntity = CreateEntity(); m_registry->emplace(backgroundEntity).AttachRenderable(m_backgroundSprite, GetCanvas()->GetRenderMask()); @@ -105,7 +108,7 @@ namespace Nz assert(m_backgroundEntity); DestroyEntity(*m_backgroundEntity); - m_backgroundSprite.reset(); + m_backgroundEntity.reset(); } OnRenderLayerUpdated(GetBaseRenderLayer());