From f0218b8ff40aef693c9a554bfee2bc7673e315c8 Mon Sep 17 00:00:00 2001 From: mae <qt-info@nokia.com> Date: Wed, 5 Aug 2009 15:55:31 +0200 Subject: [PATCH] fix occasionally broken link to the modified state of the editor --- .../coreplugin/editormanager/openeditorsmodel.cpp | 9 +++++++-- .../coreplugin/editormanager/openeditorswindow.cpp | 9 +++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/plugins/coreplugin/editormanager/openeditorsmodel.cpp b/src/plugins/coreplugin/editormanager/openeditorsmodel.cpp index 601900b288b..f5e0f383ba1 100644 --- a/src/plugins/coreplugin/editormanager/openeditorsmodel.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorsmodel.cpp @@ -72,6 +72,9 @@ QList<IEditor *> OpenEditorsModel::editors() const void OpenEditorsModel::addEditor(IEditor *editor, bool isDuplicate) { + if (!editor) + return; + if (isDuplicate) { m_duplicateEditors.append(editor); return; @@ -195,7 +198,7 @@ int OpenEditorsModel::restoredEditorCount() const bool OpenEditorsModel::isDuplicate(IEditor *editor) const { - return m_duplicateEditors.contains(editor); + return editor && m_duplicateEditors.contains(editor); } IEditor *OpenEditorsModel::originalForDuplicate(IEditor *duplicate) const @@ -219,13 +222,15 @@ QList<IEditor *> OpenEditorsModel::duplicatesFor(IEditor *editor) const void OpenEditorsModel::makeOriginal(IEditor *duplicate) { - Q_ASSERT(isDuplicate(duplicate)); + Q_ASSERT(duplicate && isDuplicate(duplicate)); IEditor *original = originalForDuplicate(duplicate); Q_ASSERT(original); int i = findEditor(original); m_editors[i].editor = duplicate; m_duplicateEditors.removeOne(duplicate); m_duplicateEditors.append(original); + disconnect(original, SIGNAL(changed()), this, SLOT(itemChanged())); + connect(duplicate, SIGNAL(changed()), this, SLOT(itemChanged())); } void OpenEditorsModel::emitDataChanged(IEditor *editor) diff --git a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp index 4db7b369af8..c86e5da5549 100644 --- a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp @@ -199,14 +199,14 @@ void OpenEditorsWindow::setEditors(EditorView *mainView, EditorView *view, OpenE QSet<IFile*> filesDone; foreach (const EditLocation &hi, view->editorHistory()) { - if (hi.file == 0 || filesDone.contains(hi.file)) + if (hi.file.isNull() || filesDone.contains(hi.file)) continue; filesDone.insert(hi.file.data()); QTreeWidgetItem *item = new QTreeWidgetItem(); QString title = model->displayNameForFile(hi.file); - if (hi.file && hi.file->isModified()) + if (hi.file->isModified()) title += tr("*"); item->setIcon(0, hi.file->isReadOnly() ? lockedIcon : emptyIcon); item->setText(0, title); @@ -226,20 +226,21 @@ void OpenEditorsWindow::setEditors(EditorView *mainView, EditorView *view, OpenE // add missing editors from the main view if (mainView != view) { foreach (const EditLocation &hi, mainView->editorHistory()) { - if (hi.file == 0 || filesDone.contains(hi.file)) + if (hi.file.isNull() || filesDone.contains(hi.file)) continue; filesDone.insert(hi.file.data()); QTreeWidgetItem *item = new QTreeWidgetItem(); QString title = model->displayNameForFile(hi.file); - if (hi.file && hi.file->isModified()) + if (hi.file->isModified()) title += tr("*"); item->setIcon(0, hi.file->isReadOnly() ? lockedIcon : emptyIcon); item->setText(0, title); item->setToolTip(0, hi.file->fileName()); item->setData(0, Qt::UserRole, QVariant::fromValue(hi.file.data())); item->setData(0, Qt::UserRole+1, QVariant::fromValue(view)); + item->setData(0, Qt::UserRole+2, QVariant::fromValue(hi.kind)); item->setTextAlignment(0, Qt::AlignLeft); m_editorList->addTopLevelItem(item); -- GitLab