forked from qt-creator/qt-creator
fix occasionally broken link to the modified state of the editor
This commit is contained in:
@@ -72,6 +72,9 @@ QList<IEditor *> OpenEditorsModel::editors() const
|
|||||||
|
|
||||||
void OpenEditorsModel::addEditor(IEditor *editor, bool isDuplicate)
|
void OpenEditorsModel::addEditor(IEditor *editor, bool isDuplicate)
|
||||||
{
|
{
|
||||||
|
if (!editor)
|
||||||
|
return;
|
||||||
|
|
||||||
if (isDuplicate) {
|
if (isDuplicate) {
|
||||||
m_duplicateEditors.append(editor);
|
m_duplicateEditors.append(editor);
|
||||||
return;
|
return;
|
||||||
@@ -195,7 +198,7 @@ int OpenEditorsModel::restoredEditorCount() const
|
|||||||
|
|
||||||
bool OpenEditorsModel::isDuplicate(IEditor *editor) const
|
bool OpenEditorsModel::isDuplicate(IEditor *editor) const
|
||||||
{
|
{
|
||||||
return m_duplicateEditors.contains(editor);
|
return editor && m_duplicateEditors.contains(editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
IEditor *OpenEditorsModel::originalForDuplicate(IEditor *duplicate) const
|
IEditor *OpenEditorsModel::originalForDuplicate(IEditor *duplicate) const
|
||||||
@@ -219,13 +222,15 @@ QList<IEditor *> OpenEditorsModel::duplicatesFor(IEditor *editor) const
|
|||||||
|
|
||||||
void OpenEditorsModel::makeOriginal(IEditor *duplicate)
|
void OpenEditorsModel::makeOriginal(IEditor *duplicate)
|
||||||
{
|
{
|
||||||
Q_ASSERT(isDuplicate(duplicate));
|
Q_ASSERT(duplicate && isDuplicate(duplicate));
|
||||||
IEditor *original = originalForDuplicate(duplicate);
|
IEditor *original = originalForDuplicate(duplicate);
|
||||||
Q_ASSERT(original);
|
Q_ASSERT(original);
|
||||||
int i = findEditor(original);
|
int i = findEditor(original);
|
||||||
m_editors[i].editor = duplicate;
|
m_editors[i].editor = duplicate;
|
||||||
m_duplicateEditors.removeOne(duplicate);
|
m_duplicateEditors.removeOne(duplicate);
|
||||||
m_duplicateEditors.append(original);
|
m_duplicateEditors.append(original);
|
||||||
|
disconnect(original, SIGNAL(changed()), this, SLOT(itemChanged()));
|
||||||
|
connect(duplicate, SIGNAL(changed()), this, SLOT(itemChanged()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenEditorsModel::emitDataChanged(IEditor *editor)
|
void OpenEditorsModel::emitDataChanged(IEditor *editor)
|
||||||
|
@@ -199,14 +199,14 @@ void OpenEditorsWindow::setEditors(EditorView *mainView, EditorView *view, OpenE
|
|||||||
|
|
||||||
QSet<IFile*> filesDone;
|
QSet<IFile*> filesDone;
|
||||||
foreach (const EditLocation &hi, view->editorHistory()) {
|
foreach (const EditLocation &hi, view->editorHistory()) {
|
||||||
if (hi.file == 0 || filesDone.contains(hi.file))
|
if (hi.file.isNull() || filesDone.contains(hi.file))
|
||||||
continue;
|
continue;
|
||||||
filesDone.insert(hi.file.data());
|
filesDone.insert(hi.file.data());
|
||||||
|
|
||||||
QTreeWidgetItem *item = new QTreeWidgetItem();
|
QTreeWidgetItem *item = new QTreeWidgetItem();
|
||||||
|
|
||||||
QString title = model->displayNameForFile(hi.file);
|
QString title = model->displayNameForFile(hi.file);
|
||||||
if (hi.file && hi.file->isModified())
|
if (hi.file->isModified())
|
||||||
title += tr("*");
|
title += tr("*");
|
||||||
item->setIcon(0, hi.file->isReadOnly() ? lockedIcon : emptyIcon);
|
item->setIcon(0, hi.file->isReadOnly() ? lockedIcon : emptyIcon);
|
||||||
item->setText(0, title);
|
item->setText(0, title);
|
||||||
@@ -226,20 +226,21 @@ void OpenEditorsWindow::setEditors(EditorView *mainView, EditorView *view, OpenE
|
|||||||
// add missing editors from the main view
|
// add missing editors from the main view
|
||||||
if (mainView != view) {
|
if (mainView != view) {
|
||||||
foreach (const EditLocation &hi, mainView->editorHistory()) {
|
foreach (const EditLocation &hi, mainView->editorHistory()) {
|
||||||
if (hi.file == 0 || filesDone.contains(hi.file))
|
if (hi.file.isNull() || filesDone.contains(hi.file))
|
||||||
continue;
|
continue;
|
||||||
filesDone.insert(hi.file.data());
|
filesDone.insert(hi.file.data());
|
||||||
|
|
||||||
QTreeWidgetItem *item = new QTreeWidgetItem();
|
QTreeWidgetItem *item = new QTreeWidgetItem();
|
||||||
|
|
||||||
QString title = model->displayNameForFile(hi.file);
|
QString title = model->displayNameForFile(hi.file);
|
||||||
if (hi.file && hi.file->isModified())
|
if (hi.file->isModified())
|
||||||
title += tr("*");
|
title += tr("*");
|
||||||
item->setIcon(0, hi.file->isReadOnly() ? lockedIcon : emptyIcon);
|
item->setIcon(0, hi.file->isReadOnly() ? lockedIcon : emptyIcon);
|
||||||
item->setText(0, title);
|
item->setText(0, title);
|
||||||
item->setToolTip(0, hi.file->fileName());
|
item->setToolTip(0, hi.file->fileName());
|
||||||
item->setData(0, Qt::UserRole, QVariant::fromValue(hi.file.data()));
|
item->setData(0, Qt::UserRole, QVariant::fromValue(hi.file.data()));
|
||||||
item->setData(0, Qt::UserRole+1, QVariant::fromValue(view));
|
item->setData(0, Qt::UserRole+1, QVariant::fromValue(view));
|
||||||
|
item->setData(0, Qt::UserRole+2, QVariant::fromValue(hi.kind));
|
||||||
item->setTextAlignment(0, Qt::AlignLeft);
|
item->setTextAlignment(0, Qt::AlignLeft);
|
||||||
|
|
||||||
m_editorList->addTopLevelItem(item);
|
m_editorList->addTopLevelItem(item);
|
||||||
|
Reference in New Issue
Block a user