diff --git a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp index 19c230483f6..cb279d2e89e 100644 --- a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp @@ -196,63 +196,12 @@ void OpenEditorsWindow::centerOnItem(int selectedIndex) void OpenEditorsWindow::setEditors(EditorView *mainView, EditorView *view, OpenEditorsModel *model) { m_editorList->clear(); - bool first = true; QSet documentsDone; - foreach (const EditLocation &hi, view->editorHistory()) { - if (hi.document.isNull() || documentsDone.contains(hi.document)) - continue; - QString title = model->displayNameForDocument(hi.document); - QTC_ASSERT(!title.isEmpty(), continue); - documentsDone.insert(hi.document.data()); - QTreeWidgetItem *item = new QTreeWidgetItem(); - if (hi.document->isModified()) - title += tr("*"); - item->setIcon(0, !hi.document->fileName().isEmpty() && hi.document->isFileReadOnly() - ? model->lockedIcon() : m_emptyIcon); - item->setText(0, title); - item->setToolTip(0, hi.document->fileName()); - item->setData(0, Qt::UserRole, QVariant::fromValue(hi.document.data())); - item->setData(0, Qt::UserRole+1, QVariant::fromValue(view)); - item->setTextAlignment(0, Qt::AlignLeft); - - m_editorList->addTopLevelItem(item); - - if (first){ - m_editorList->setCurrentItem(item); - first = false; - } - } - + addHistoryItems(view->editorHistory(), view, model, documentsDone); // add missing editors from the main view - if (mainView != view) { - foreach (const EditLocation &hi, mainView->editorHistory()) { - if (hi.document.isNull() || documentsDone.contains(hi.document)) - continue; - documentsDone.insert(hi.document.data()); - - QTreeWidgetItem *item = new QTreeWidgetItem(); - - QString title = model->displayNameForDocument(hi.document); - if (hi.document->isModified()) - title += tr("*"); - item->setIcon(0, !hi.document->fileName().isEmpty() && hi.document->isFileReadOnly() - ? model->lockedIcon() : m_emptyIcon); - item->setText(0, title); - item->setToolTip(0, hi.document->fileName()); - item->setData(0, Qt::UserRole, QVariant::fromValue(hi.document.data())); - item->setData(0, Qt::UserRole+1, QVariant::fromValue(view)); - item->setData(0, Qt::UserRole+2, QVariant::fromValue(hi.id)); - item->setTextAlignment(0, Qt::AlignLeft); - - m_editorList->addTopLevelItem(item); - - if (first){ - m_editorList->setCurrentItem(item); - first = false; - } - } - } + if (mainView != view) + addHistoryItems(mainView->editorHistory(), view, model, documentsDone); // add purely restored editors which are not initialised yet foreach (const OpenEditorsModel::Entry &entry, model->entries()) { @@ -300,3 +249,31 @@ void OpenEditorsWindow::ensureCurrentVisible() m_editorList->scrollTo(m_editorList->currentIndex(), QAbstractItemView::PositionAtCenter); } + +void OpenEditorsWindow::addHistoryItems(const QList &history, EditorView *view, + OpenEditorsModel *model, QSet &documentsDone) +{ + foreach (const EditLocation &hi, history) { + if (hi.document.isNull() || documentsDone.contains(hi.document)) + continue; + documentsDone.insert(hi.document.data()); + QString title = model->displayNameForDocument(hi.document); + QTC_ASSERT(!title.isEmpty(), continue); + QTreeWidgetItem *item = new QTreeWidgetItem(); + if (hi.document->isModified()) + title += tr("*"); + item->setIcon(0, !hi.document->fileName().isEmpty() && hi.document->isFileReadOnly() + ? model->lockedIcon() : m_emptyIcon); + item->setText(0, title); + item->setToolTip(0, hi.document->fileName()); + item->setData(0, Qt::UserRole, QVariant::fromValue(hi.document.data())); + item->setData(0, Qt::UserRole+1, QVariant::fromValue(view)); + item->setTextAlignment(0, Qt::AlignLeft); + + m_editorList->addTopLevelItem(item); + + if (m_editorList->topLevelItemCount() == 1){ + m_editorList->setCurrentItem(item); + } + } +} diff --git a/src/plugins/coreplugin/editormanager/openeditorswindow.h b/src/plugins/coreplugin/editormanager/openeditorswindow.h index e291723141f..1550351c6c3 100644 --- a/src/plugins/coreplugin/editormanager/openeditorswindow.h +++ b/src/plugins/coreplugin/editormanager/openeditorswindow.h @@ -30,8 +30,11 @@ #ifndef OPENEDITORSWINDOW_H #define OPENEDITORSWINDOW_H +#include "editorview.h" + #include #include +#include QT_BEGIN_NAMESPACE class QTreeWidgetItem; @@ -40,13 +43,13 @@ QT_END_NAMESPACE namespace Core { +class IDocument; class IEditor; class OpenEditorsModel; namespace Internal { class EditorHistoryItem; -class EditorView; class OpenEditorsWindow : public QFrame { @@ -74,6 +77,8 @@ private slots: private: static void updateItem(QTreeWidgetItem *item, IEditor *editor); + void addHistoryItems(const QList &history, EditorView *view, + OpenEditorsModel *model, QSet &documentsDone); void ensureCurrentVisible(); bool isCentering(); void centerOnItem(int selectedIndex);