// ----------------------------------------------------------------------------- EnterGPNameDialog::~EnterGPNameDialog() { // FIXME: what is this code for? TextBoxWidget* textCtrl = getWidget<TextBoxWidget>("textfield"); textCtrl->getIrrlichtElement()->remove(); textCtrl->clearListeners(); }
// ----------------------------------------------------------------------------- void EnterGPNameDialog::onUpdate(float dt) { // It's unsafe to delete from inside the event handler so we do it here if (m_self_destroy) { TextBoxWidget* textCtrl = getWidget<TextBoxWidget>("textfield"); stringw name = textCtrl->getText().trim(); // irrLicht is too stupid to remove focus from deleted widgets // so do it by hand GUIEngine::getGUIEnv()->removeFocus( textCtrl->getIrrlichtElement() ); GUIEngine::getGUIEnv()->removeFocus( m_irrlicht_window ); // we will destroy the dialog before notifying the listener to be safer. // but in order not to crash we must make a local copy of the listern // otherwise we will crash INewGPListener* listener = m_listener; ModalDialog::dismiss(); if (listener != NULL) listener->onNewGPWithName(name); } }