void listener_container::deregister_listener(listener_ptr p) { deregister_listener(p.get()); if(!can_change_listeners()) { reference_holder_.push_back(p); } std::vector<listener_ptr>::iterator itor = std::find(listeners_.begin(), listeners_.end(), p); if(itor != listeners_.end()) { listeners_.erase(itor); } }
foreach(widget_ptr w, widgets_) { deregister_listener(w); }
void dialog::remove_widget(widget_ptr w) { deregister_listener(w); widgets_.erase(std::remove(widgets_.begin(),widgets_.end(),w), widgets_.end()); }