fix memory leak for spinbox

This commit is contained in:
Jinhao 2017-04-26 05:26:39 +08:00
parent 970412a3db
commit 4aba8e8c7f
3 changed files with 10 additions and 4 deletions

View File

@ -56,6 +56,7 @@ namespace nana
private: private:
//Overrides drawer_trigger //Overrides drawer_trigger
void attached(widget_reference, graph_reference) override; void attached(widget_reference, graph_reference) override;
void detached() override;
void refresh(graph_reference) override; void refresh(graph_reference) override;
void focus(graph_reference, const arg_focus&) override; void focus(graph_reference, const arg_focus&) override;

View File

@ -1,7 +1,7 @@
/** /**
* The fundamental widget class implementation * The fundamental widget class implementation
* Nana C++ Library(http://www.nanapro.org) * Nana C++ Library(http://www.nanapro.org)
* Copyright(C) 2003-2016 Jinhao(cnjinhao@hotmail.com) * Copyright(C) 2003-2017 Jinhao(cnjinhao@hotmail.com)
* *
* Distributed under the Boost Software License, Version 1.0. * Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at * (See accompanying file LICENSE_1_0.txt or copy at
@ -245,9 +245,9 @@ namespace nana
void _m_notify_destroy() override final void _m_notify_destroy() override final
{ {
widget_base::_m_notify_destroy();
events_ = std::make_shared<Events>(); events_ = std::make_shared<Events>();
API::dev::set_events(handle_, events_); API::dev::set_events(handle_, events_);
widget_base::_m_notify_destroy();
} }
private: private:
DrawerTrigger trigger_; DrawerTrigger trigger_;
@ -310,9 +310,9 @@ namespace nana
void _m_notify_destroy() override final void _m_notify_destroy() override final
{ {
widget_base::_m_notify_destroy();
events_ = std::make_shared<Events>(); events_ = std::make_shared<Events>();
API::dev::set_events(handle_, events_); API::dev::set_events(handle_, events_);
widget_base::_m_notify_destroy();
} }
private: private:
std::shared_ptr<Events> events_; std::shared_ptr<Events> events_;
@ -449,9 +449,9 @@ namespace nana
void _m_notify_destroy() override final void _m_notify_destroy() override final
{ {
widget_base::_m_notify_destroy();
events_ = std::make_shared<Events>(); events_ = std::make_shared<Events>();
API::dev::set_events(handle_, events_); API::dev::set_events(handle_, events_);
widget_base::_m_notify_destroy();
} }
private: private:
DrawerTrigger trigger_; DrawerTrigger trigger_;

View File

@ -531,6 +531,11 @@ namespace nana
impl_->attach(wdg, graph); impl_->attach(wdg, graph);
} }
void drawer::detached()
{
impl_->detach();
}
void drawer::refresh(graph_reference) void drawer::refresh(graph_reference)
{ {
impl_->render(); impl_->render();