diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index af052bf4b08..a88ca731f94 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -752,6 +752,8 @@ IEditor *EditorManager::pickUnusedEditor() const void EditorManager::activateEditor(IEditor *editor, OpenEditorFlags flags) { SplitterOrView *splitterOrView = m_d->m_currentView; + if (splitterOrView && splitterOrView->splitter()) + splitterOrView = 0; // safety if currentView gets out of sync setCurrentView(0); if (editor && (flags & ActivateInPlace)) { @@ -765,9 +767,11 @@ void EditorManager::activateEditor(IEditor *editor, OpenEditorFlags flags) if (!splitterOrView) splitterOrView = m_d->m_splitter->findEmptyView(); - - if (!splitterOrView && m_d->m_currentEditor) + if (!splitterOrView && m_d->m_currentEditor) { splitterOrView = m_d->m_splitter->findView(m_d->m_currentEditor); + if (splitterOrView && !splitterOrView->isVisible()) // safety if currentEditor gets out of sync + splitterOrView = 0; + } if (!splitterOrView) splitterOrView = m_d->m_splitter->findFirstView(); @@ -1686,7 +1690,7 @@ void EditorManager::split(Qt::Orientation orientation) if (!view) view = m_d->m_currentEditor ? m_d->m_splitter->findView(m_d->m_currentEditor) : m_d->m_splitter->findFirstView(); - if (view) { + if (view && !view->splitter()) { view->split(orientation); updateEditorHistory(); } diff --git a/src/plugins/coreplugin/editormanager/editorview.h b/src/plugins/coreplugin/editormanager/editorview.h index 165983ee141..37f0ea6a5a6 100644 --- a/src/plugins/coreplugin/editormanager/editorview.h +++ b/src/plugins/coreplugin/editormanager/editorview.h @@ -179,6 +179,9 @@ public: SplitterOrView *findNextView(SplitterOrView *view); + QSize sizeHint() const { return QSize(32, 32); } + QSize minimumSizeHint() const { return QSize(32, 32); } + protected: void focusInEvent(QFocusEvent *); void paintEvent(QPaintEvent *);