From 59d4612a6156c16ef396d51087c4b097a0373c69 Mon Sep 17 00:00:00 2001 From: Andrea Blankenstijn Date: Thu, 17 Feb 2022 18:34:44 +0100 Subject: [PATCH] layout: remove widget by raw ptr --- inc/basic_widgets/w/aligned_layout_impl.hpp | 7 ++++++- inc/basic_widgets/w/base/layout.hpp | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/inc/basic_widgets/w/aligned_layout_impl.hpp b/inc/basic_widgets/w/aligned_layout_impl.hpp index ae419f1..8d4ce03 100644 --- a/inc/basic_widgets/w/aligned_layout_impl.hpp +++ b/inc/basic_widgets/w/aligned_layout_impl.hpp @@ -47,9 +47,14 @@ namespace bwidgets } void remove_widget(const std::shared_ptr& widget) override + { + remove_widget(widget.get()); + } + + void remove_widget(const Widget* widget) override { for (auto i = _widgets.cbegin(); i != _widgets.cend(); i++) { - if (*i == widget) { + if ((*i).get() == widget) { _widgets.erase(i); break; } diff --git a/inc/basic_widgets/w/base/layout.hpp b/inc/basic_widgets/w/base/layout.hpp index cd2897f..16a8b90 100644 --- a/inc/basic_widgets/w/base/layout.hpp +++ b/inc/basic_widgets/w/base/layout.hpp @@ -16,6 +16,7 @@ namespace bwidgets virtual void for_widgets(const std::function&) = 0; virtual void for_widgets(const std::function&) const = 0; virtual void remove_widget(const std::shared_ptr&) = 0; + virtual void remove_widget(const Widget*) = 0; }; }