void ShellPool::ShellClosed(const ShellEvent::Pointer& e) { if (e->doit) { Shell::Pointer s = e->GetSource(); IShellListener* l = s->GetExtraShellListener(); if (l != 0) { s->SetExtraShellListener(NULL); l->ShellClosed(e); // The shell can 'cancel' the close by setting // the 'doit' to false...if so, do nothing if (e->doit) { availableShells.push_back(s); s->SetVisible(false); } else { // Restore the listener s->SetExtraShellListener(l); } } } e->doit = false; }
void ShellPool::ShellClosed(ShellEvent::Pointer e) { if (e->doit) { Shell::Pointer s = e->GetSource(); IShellListener::Pointer l = s->GetData(CLOSE_LISTENER).Cast<IShellListener> (); if (l != 0) { s->SetData(Object::Pointer(0), CLOSE_LISTENER); l->ShellClosed(e); // The shell can 'cancel' the close by setting // the 'doit' to false...if so, do nothing if (e->doit) { availableShells.push_back(s); s->SetVisible(false); } else { // Restore the listener s->SetData(l, CLOSE_LISTENER); } } } e->doit = false; }