aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ui/controls/border_delegate.cpp5
-rw-r--r--src/ui/controls/border_delegate.h6
2 files changed, 10 insertions, 1 deletions
diff --git a/src/ui/controls/border_delegate.cpp b/src/ui/controls/border_delegate.cpp
index 4e841a8c..4031d787 100644
--- a/src/ui/controls/border_delegate.cpp
+++ b/src/ui/controls/border_delegate.cpp
@@ -51,6 +51,11 @@ namespace cru::ui::controls
border_property_->AddPropertyChangedListener(border_property_changed_listener_);
}
+ BorderDelegate::~BorderDelegate()
+ {
+ border_property_->RemovePropertyChangedListener(border_property_changed_listener_);
+ }
+
void BorderDelegate::SetBorderProperty(std::shared_ptr<BorderProperty> border_property)
{
border_property_->RemovePropertyChangedListener(border_property_changed_listener_);
diff --git a/src/ui/controls/border_delegate.h b/src/ui/controls/border_delegate.h
index f22b303f..12c5444a 100644
--- a/src/ui/controls/border_delegate.h
+++ b/src/ui/controls/border_delegate.h
@@ -60,6 +60,10 @@ namespace cru::ui::controls
float radius_y_ = 0.0f;
};
+
+ // BorderDelegate is a delegate for border painting and layout.
+ // It must bind a control and not change the binding.
+ // But multiple BorderDelegate may share a common BorderProperty.
class BorderDelegate : public Object
{
public:
@@ -69,7 +73,7 @@ namespace cru::ui::controls
BorderDelegate(BorderDelegate&& other) = delete;
BorderDelegate& operator=(const BorderDelegate& other) = delete;
BorderDelegate& operator=(BorderDelegate&& other) = delete;
- ~BorderDelegate() override = default;
+ ~BorderDelegate() override;
std::shared_ptr<BorderProperty> GetBorderProperty() const
{