summaryrefslogtreecommitdiff
path: root/src/plugins/coreplugin/editormanager/editorview.cpp
diff options
context:
space:
mode:
authormae <qt-info@nokia.com>2009-04-03 15:12:28 +0200
committermae <qt-info@nokia.com>2009-04-03 15:12:28 +0200
commitbe736eddf2fab11e1a4ca41685177849b8faecff (patch)
tree1c84ab0113945a585abf380c1fa557f47f9f34d6 /src/plugins/coreplugin/editormanager/editorview.cpp
parent62d5b16a5b315d2197f89c8356b86bd2543f810e (diff)
downloadqt-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.cpp41
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();
+ }
}
}
}