// уд¤л¤ет неудачника void Gui::_destroyChildWidget(WidgetPtr _widget) { MYGUI_ASSERT(null != _widget, "invalid widget pointer"); VectorWidgetPtr::iterator iter = std::find(mWidgetChild.begin(), mWidgetChild.end(), _widget); if (iter != mWidgetChild.end()) { // сохран¤ем указатель MyGUI::WidgetPtr widget = *iter; // удал¤ем из списка *iter = mWidgetChild.back(); mWidgetChild.pop_back(); // отписываем от всех mWidgetManager->unlinkFromUnlinkers(_widget); // непосредственное удаление _deleteWidget(widget); } else MYGUI_EXCEPT("Widget '" << _widget->getName() << "' not found"); }
void WidgetManager::_unlinkWidget(WidgetPtr _widget) { if (_widget == null) return; MapWidgetPtr::iterator iter = mWidgets.find(_widget->getName()); if (iter != mWidgets.end()) mWidgets.erase(iter); }