diff options
author | mae <qt-info@nokia.com> | 2009-04-03 15:12:28 +0200 |
---|---|---|
committer | mae <qt-info@nokia.com> | 2009-04-03 15:12:28 +0200 |
commit | be736eddf2fab11e1a4ca41685177849b8faecff (patch) | |
tree | 1c84ab0113945a585abf380c1fa557f47f9f34d6 /src/plugins/coreplugin/editormanager/editorview.cpp | |
parent | 62d5b16a5b315d2197f89c8356b86bd2543f810e (diff) | |
download | qt-creator-be736eddf2fab11e1a4ca41685177849b8faecff.tar.gz |
Make emacs-like splitting more emacs like. Introduction of Ctrl+E,1 for
delete-other-windows
Diffstat (limited to 'src/plugins/coreplugin/editormanager/editorview.cpp')
-rw-r--r-- | src/plugins/coreplugin/editormanager/editorview.cpp | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/src/plugins/coreplugin/editormanager/editorview.cpp b/src/plugins/coreplugin/editormanager/editorview.cpp index 15d7f19fb1..d77fa22b04 100644 --- a/src/plugins/coreplugin/editormanager/editorview.cpp +++ b/src/plugins/coreplugin/editormanager/editorview.cpp @@ -520,6 +520,7 @@ void EditorView::removeEditor(IEditor *editor) m_container->removeWidget(editor->widget()); m_widgetEditorMap.remove(editor->widget()); + qDebug() << "EditorView::removeEditor" << editor << " set 0 parent on widget" << editor->widget(); editor->widget()->setParent(0); disconnect(editor, SIGNAL(changed()), this, SLOT(updateEditorStatus())); QToolBar *toolBar = editor->toolBar(); @@ -657,6 +658,18 @@ SplitterOrView::SplitterOrView(Core::IEditor *editor) setFocusPolicy(Qt::ClickFocus); } +SplitterOrView::~SplitterOrView() +{ + delete m_layout; + m_layout = 0; + delete m_view; + m_view = 0; + delete m_splitter; + m_splitter = 0; +} + + + void SplitterOrView::focusInEvent(QFocusEvent *) { CoreImpl::instance()->editorManager()->setCurrentView(this); @@ -861,24 +874,24 @@ void SplitterOrView::split(Qt::Orientation orientation) em->activateEditor(e); } -void SplitterOrView::close() +void SplitterOrView::unsplitAll() { - Q_ASSERT(!m_isRoot); - if (m_view) { - CoreImpl::instance()->editorManager()->emptyView(m_view); - delete m_view; - m_view = 0; - } - closeSplitterEditors(); + m_splitter->hide(); + m_layout->removeWidget(m_splitter); // workaround Qt bug + unsplitAll_helper(); + delete m_splitter; + m_splitter = 0; } -void SplitterOrView::closeSplitterEditors() +void SplitterOrView::unsplitAll_helper() { - if (!m_splitter) - return; - for (int i = 0; i < m_splitter->count(); ++i) { - if (SplitterOrView *splitterOrView = qobject_cast<SplitterOrView*>(m_splitter->widget(i))) { - splitterOrView->close(); + if (!m_isRoot && m_view) + CoreImpl::instance()->editorManager()->emptyView(m_view); + if (m_splitter) { + for (int i = 0; i < m_splitter->count(); ++i) { + if (SplitterOrView *splitterOrView = qobject_cast<SplitterOrView*>(m_splitter->widget(i))) { + splitterOrView->unsplitAll_helper(); + } } } } |