IWorkbenchPart::Pointer WorkbenchIntroManager::GetIntroAdapterPart() const { QList<IWorkbenchWindow::Pointer> windows(this->workbench->GetWorkbenchWindows()); for (int i = 0; i < windows.size(); i++) { IWorkbenchWindow::Pointer window = windows[i]; WorkbenchPage::Pointer page = window->GetActivePage().Cast<WorkbenchPage>(); if (!page) { continue; } if (IntroIsView()) { QList<IPerspectiveDescriptor::Pointer> perspDescs(page->GetOpenPerspectives()); for (int j = 0; j < perspDescs.size(); j++) { IPerspectiveDescriptor::Pointer descriptor = perspDescs[j]; IViewReference::Pointer reference = page->FindPerspective(descriptor)->FindView( IntroConstants::INTRO_VIEW_ID); if (reference) { return reference->GetView(false); } } } else { QList<IEditorReference::Pointer> references(page->FindEditors(IEditorInput::Pointer(nullptr), IntroConstants::INTRO_EDITOR_ID, IWorkbenchPage::MATCH_ID)); Q_ASSERT(references.size() < 2); if (references.size() == 1) return references.front()->GetEditor(false); } } return IWorkbenchPart::Pointer(nullptr); }