fix issue that event handler remains after closing

This commit is contained in:
Jinhao 2016-09-13 01:24:47 +08:00
parent 6eece91fce
commit 318f0ec570
2 changed files with 23 additions and 4 deletions

View File

@ -150,8 +150,8 @@ namespace nana
~widget_base();
window handle() const override;
private:
void _m_notify_destroy() override final;
protected:
void _m_notify_destroy() override;
protected:
window handle_{ nullptr };
};
@ -228,6 +228,13 @@ namespace nana
{
return *events_;
}
void _m_notify_destroy() override final
{
widget_base::_m_notify_destroy();
events_ = std::make_shared<Events>();
API::dev::set_events(handle_, events_);
}
private:
DrawerTrigger trigger_;
std::shared_ptr<Events> events_;
@ -281,6 +288,13 @@ namespace nana
{
return *events_;
}
void _m_notify_destroy() override final
{
widget_base::_m_notify_destroy();
events_ = std::make_shared<Events>();
API::dev::set_events(handle_, events_);
}
private:
std::shared_ptr<Events> events_;
std::unique_ptr<scheme_type> scheme_;
@ -415,6 +429,13 @@ namespace nana
{
return *events_;
}
void _m_notify_destroy() override final
{
widget_base::_m_notify_destroy();
events_ = std::make_shared<Events>();
API::dev::set_events(handle_, events_);
}
private:
DrawerTrigger trigger_;
std::shared_ptr<Events> events_;

View File

@ -442,8 +442,6 @@ namespace nana
bool basic_window::set_events(const std::shared_ptr<general_events>& p)
{
if (annex.events_ptr)
return false;
annex.events_ptr = p;
return true;
}