From fde603d88778e8836edc568bc227998cc1d2e881 Mon Sep 17 00:00:00 2001 From: con Date: Tue, 9 Jun 2009 11:55:00 +0200 Subject: [PATCH 1/8] Install data files to right location (Mac). Reviewed-by: Oswald Buddenhagen --- share/qtcreator/static.pro | 3 +-- share/qtcreator/translations/translations.pro | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/static.pro b/share/qtcreator/static.pro index 009d712ee3c..40ce205ff88 100644 --- a/share/qtcreator/static.pro +++ b/share/qtcreator/static.pro @@ -37,9 +37,8 @@ DATA_DIRS = \ FILES += $$files } - copy2build.target = $$IDE_DATA_PATH copy2build.input = FILES - copy2build.output = ${QMAKE_FUNC_FILE_IN_stripSrcDir} + copy2build.output = $$IDE_DATA_PATH/${QMAKE_FUNC_FILE_IN_stripSrcDir} isEmpty(vcproj):copy2build.variable_out = PRE_TARGETDEPS copy2build.commands = $$QMAKE_COPY \"${QMAKE_FILE_IN}\" \"${QMAKE_FILE_OUT}\" copy2build.name = COPY ${QMAKE_FILE_IN} diff --git a/share/qtcreator/translations/translations.pro b/share/qtcreator/translations/translations.pro index 63c968332b7..6fda4f73fd7 100644 --- a/share/qtcreator/translations/translations.pro +++ b/share/qtcreator/translations/translations.pro @@ -23,9 +23,8 @@ CONFIG -= qt QT = LIBS = -updateqm.target = $$IDE_DATA_PATH/translations updateqm.input = TS_FILES -updateqm.output = ${QMAKE_FILE_BASE}.qm +updateqm.output = $$IDE_DATA_PATH/translations/${QMAKE_FILE_BASE}.qm isEmpty(vcproj):updateqm.variable_out = PRE_TARGETDEPS updateqm.commands = $$LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT} updateqm.name = LRELEASE ${QMAKE_FILE_IN} From 1d50f02494b3929f0729562e995c87ba8a8d7866 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Tue, 9 Jun 2009 13:50:37 +0200 Subject: [PATCH 2/8] Remove Q_DISABLE_COPY from generated classes. QObject already defines it. Revieved-By: dt --- src/plugins/designer/cpp/formclasswizardparameters.cpp | 1 - src/plugins/qt4projectmanager/wizards/libraryparameters.cpp | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/plugins/designer/cpp/formclasswizardparameters.cpp b/src/plugins/designer/cpp/formclasswizardparameters.cpp index c21dbb2b7c4..0132f85bd24 100644 --- a/src/plugins/designer/cpp/formclasswizardparameters.cpp +++ b/src/plugins/designer/cpp/formclasswizardparameters.cpp @@ -114,7 +114,6 @@ bool FormClassWizardParameters::generateCpp(QString *header, QString *source, in headerStr << ", private " << uiClassName; } headerStr << " {\n" << namespaceIndent << indent << "Q_OBJECT\n" - << namespaceIndent << indent << "Q_DISABLE_COPY(" << unqualifiedClassName << ")\n" << namespaceIndent << "public:\n" << namespaceIndent << indent << "explicit " << unqualifiedClassName << "(QWidget *parent = 0);\n"; if (embedding == PointerAggregatedUiClass) diff --git a/src/plugins/qt4projectmanager/wizards/libraryparameters.cpp b/src/plugins/qt4projectmanager/wizards/libraryparameters.cpp index 05d6fa83b53..a0ad471643a 100644 --- a/src/plugins/qt4projectmanager/wizards/libraryparameters.cpp +++ b/src/plugins/qt4projectmanager/wizards/libraryparameters.cpp @@ -113,8 +113,7 @@ void LibraryParameters::generateCode(QtProjectParameters:: Type t, // Is this a QObject (plugin) const bool inheritsQObject = t == QtProjectParameters::Qt4Plugin; if (inheritsQObject) { - headerStr << namespaceIndent << indent << "Q_OBJECT\n" - << namespaceIndent << indent << "Q_DISABLE_COPY(" << unqualifiedClassName << ")\n"; + headerStr << namespaceIndent << indent << "Q_OBJECT\n"; } headerStr << namespaceIndent << "public:\n"; if (inheritsQObject) { From e5ec0645c37bff1ca3329ed34ee2eb1fa5e3d610 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Tue, 9 Jun 2009 13:54:23 +0200 Subject: [PATCH 3/8] Use native separators on Windows. Reviewed-By: Thorbjorn Lindeijer --- src/plugins/projectexplorer/removefiledialog.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/removefiledialog.cpp b/src/plugins/projectexplorer/removefiledialog.cpp index 20e7eb8333d..75715861004 100644 --- a/src/plugins/projectexplorer/removefiledialog.cpp +++ b/src/plugins/projectexplorer/removefiledialog.cpp @@ -30,6 +30,8 @@ #include "removefiledialog.h" #include "ui_removefiledialog.h" +#include + using namespace ProjectExplorer::Internal; RemoveFileDialog::RemoveFileDialog(const QString &filePath, QWidget *parent) : @@ -37,7 +39,7 @@ RemoveFileDialog::RemoveFileDialog(const QString &filePath, QWidget *parent) : m_ui(new Ui::RemoveFileDialog) { m_ui->setupUi(this); - m_ui->fileNameLabel->setText(filePath); + m_ui->fileNameLabel->setText(QDir::toNativeSeparators(filePath)); // TODO m_ui->removeVCCheckBox->setVisible(false); From 97717b60e66d49b657727f5e0376b9b4c105d8fd Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Tue, 9 Jun 2009 15:52:58 +0200 Subject: [PATCH 4/8] class wizards: Do not qualify constructors with explicit, do not use "virtual". Again, consistency with other existing code generators. explicit is only useful for libraries and confuses new users. virtual is not repeated for subclasses in Qt. by other generators either. --- src/plugins/designer/cpp/formclasswizardparameters.cpp | 6 +++--- src/plugins/qt4projectmanager/wizards/libraryparameters.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plugins/designer/cpp/formclasswizardparameters.cpp b/src/plugins/designer/cpp/formclasswizardparameters.cpp index 0132f85bd24..74c6000a287 100644 --- a/src/plugins/designer/cpp/formclasswizardparameters.cpp +++ b/src/plugins/designer/cpp/formclasswizardparameters.cpp @@ -115,13 +115,13 @@ bool FormClassWizardParameters::generateCpp(QString *header, QString *source, in } headerStr << " {\n" << namespaceIndent << indent << "Q_OBJECT\n" << namespaceIndent << "public:\n" - << namespaceIndent << indent << "explicit " << unqualifiedClassName << "(QWidget *parent = 0);\n"; + << namespaceIndent << indent << unqualifiedClassName << "(QWidget *parent = 0);\n"; if (embedding == PointerAggregatedUiClass) - headerStr << namespaceIndent << indent << "virtual ~" << unqualifiedClassName << "();\n"; + headerStr << namespaceIndent << indent << "~" << unqualifiedClassName << "();\n"; // retranslation if (languageChange) headerStr << '\n' << namespaceIndent << "protected:\n" - << namespaceIndent << indent << "virtual void changeEvent(QEvent *e);\n"; + << namespaceIndent << indent << "void changeEvent(QEvent *e);\n"; // Member variable if (embedding != InheritedUiClass) { headerStr << '\n' << namespaceIndent << "private:\n" diff --git a/src/plugins/qt4projectmanager/wizards/libraryparameters.cpp b/src/plugins/qt4projectmanager/wizards/libraryparameters.cpp index a0ad471643a..203382561e6 100644 --- a/src/plugins/qt4projectmanager/wizards/libraryparameters.cpp +++ b/src/plugins/qt4projectmanager/wizards/libraryparameters.cpp @@ -117,7 +117,7 @@ void LibraryParameters::generateCode(QtProjectParameters:: Type t, } headerStr << namespaceIndent << "public:\n"; if (inheritsQObject) { - headerStr << namespaceIndent << indent << "explicit " << unqualifiedClassName << "(QObject *parent = 0);\n"; + headerStr << namespaceIndent << indent << unqualifiedClassName << "(QObject *parent = 0);\n"; } else { headerStr << namespaceIndent << indent << unqualifiedClassName << "();\n"; } From f61a28a081ab24a786437e65093a4cd2e250987f Mon Sep 17 00:00:00 2001 From: mae Date: Tue, 9 Jun 2009 16:27:52 +0200 Subject: [PATCH 5/8] go back to emacs-like splitting behaviour after popular requests --- .../editormanager/editormanager.cpp | 200 +++++++++--------- .../coreplugin/editormanager/editormanager.h | 5 +- .../coreplugin/editormanager/editorview.cpp | 13 +- 3 files changed, 110 insertions(+), 108 deletions(-) diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index b8ddd1bc134..e7e717d3352 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -499,7 +499,9 @@ void EditorManager::handleContextChange(Core::IContext *context) void EditorManager::setCurrentEditor(IEditor *editor, bool ignoreNavigationHistory) { - setCurrentView(0); + if (editor) + setCurrentView(0); + if (m_d->m_currentEditor == editor) return; if (m_d->m_currentEditor && !ignoreNavigationHistory) @@ -535,7 +537,10 @@ void EditorManager::setCurrentView(Core::Internal::SplitterOrView *view) Core::Internal::SplitterOrView *EditorManager::currentView() const { - return m_d->m_currentView; + SplitterOrView *view = m_d->m_currentView; + if (!view) + view = m_d->m_splitter->findView(m_d->m_currentEditor); + return view; } QList EditorManager::editorsForFileName(const QString &filename) const @@ -555,14 +560,6 @@ IEditor *EditorManager::currentEditor() const } -// SLOT connected to action -// since this is potentially called in the event handler of the editor -// we simply postpone it with a single shot timer -void EditorManager::closeEditor() -{ - closeEditor(m_d->m_currentEditor); -} - void EditorManager::emptyView(Core::Internal::EditorView *view) { if (!view) @@ -619,13 +616,6 @@ void EditorManager::closeView(Core::Internal::EditorView *view) updateEditorHistory(); } -void EditorManager::closeEditor(Core::IEditor *editor) -{ - if (!editor) - return; - closeEditors(QList() << editor); -} - QList EditorManager::editorsForFiles(QList files) const { @@ -674,10 +664,39 @@ void EditorManager::closeOtherEditors() closeEditors(editors, true); } + +// SLOT connected to action +// since this is potentially called in the event handler of the editor +// we simply postpone it with a single shot timer +void EditorManager::closeEditor() +{ + closeEditor(m_d->m_currentEditor); +} + +void EditorManager::closeEditor(Core::IEditor *editor) +{ + if (!editor) + return; + closeEditors(QList() << editor); +} + +void EditorManager::closeEditor(const QModelIndex &index) +{ + IEditor *editor = index.data(Qt::UserRole).value(); + if (editor) + closeEditor(editor); + else + m_d->m_editorModel->removeEditor(index); +} + + bool EditorManager::closeEditors(const QList editorsToClose, bool askAboutModifiedEditors) { if (editorsToClose.isEmpty()) return true; + + SplitterOrView *currentSplitterOrView = currentView(); + bool closingFailed = false; QList acceptedEditors; //ask all core listeners to check whether the editor can be closed @@ -719,8 +738,7 @@ bool EditorManager::closeEditors(const QList editorsToClose, bool askA foreach(IEditor *editor, acceptedEditors) acceptedEditors += m_d->m_editorModel->duplicatesFor(editor); - QList currentViews; - EditorView *currentView = 0; + QList closedViews; // remove the editors foreach (IEditor *editor, acceptedEditors) { @@ -733,39 +751,22 @@ bool EditorManager::closeEditors(const QList editorsToClose, bool askA removeEditor(editor); if (SplitterOrView *view = m_d->m_splitter->findView(editor)) { - if (editor == view->view()->currentEditor()) { - currentViews += view->view(); - if (editor == m_d->m_currentEditor) - currentView = view->view(); - } + if (editor == view->view()->currentEditor()) + closedViews += view->view(); view->view()->removeEditor(editor); } } - foreach (EditorView *view, currentViews) { + foreach (EditorView *view, closedViews) { IEditor *newCurrent = view->currentEditor(); -#if 0 if (!newCurrent) newCurrent = pickUnusedEditor(); - if (!newCurrent) { - // pick the first one that can be duplicated - foreach (IEditor *e, m_d->m_editorHistory) { - if (e->duplicateSupported()) { - newCurrent = e; - break; - } - } - } -#else - if (!newCurrent && view == m_d->m_view) - newCurrent = pickUnusedEditor(); -#endif if (newCurrent) { activateEditor(view, newCurrent, NoActivate); } else { QModelIndex idx = m_d->m_editorModel->firstRestoredEditor(); if (idx.isValid()) - activateEditor(idx, view); + activateEditor(idx, view, NoActivate); } } @@ -775,17 +776,60 @@ bool EditorManager::closeEditors(const QList editorsToClose, bool askA delete editor; } - if (currentView) { - setCurrentView(m_d->m_splitter->findView(currentView)); - if (IEditor *e = currentView->currentEditor()) - activateEditor(currentView, e); - else - emit currentEditorChanged(0); + if (currentSplitterOrView) { + if (IEditor *editor = currentSplitterOrView->editor()) + activateEditor(currentSplitterOrView->view(), editor); } + if (!currentEditor()) + emit currentEditorChanged(0); + return !closingFailed; } +void EditorManager::closeDuplicate(Core::IEditor *editor) +{ + + IEditor *original = editor; + if (m_d->m_editorModel->isDuplicate(editor)) + original= m_d->m_editorModel->originalForDuplicate(editor); + QList duplicates = m_d->m_editorModel->duplicatesFor(original); + + if (duplicates.isEmpty()) { + closeEditor(editor); + return; + } + + if (original== editor) + m_d->m_editorModel->makeOriginal(duplicates.first()); + + SplitterOrView *currentSplitterOrView = currentView(); + + emit editorAboutToClose(editor); + + EditorView *view = m_d->m_splitter->findView(editor)->view(); + removeEditor(editor); + view->removeEditor(editor); + + IEditor *newCurrent = view->currentEditor(); + if (!newCurrent) + newCurrent = pickUnusedEditor(); + if (newCurrent) { + activateEditor(view, newCurrent, NoActivate); + } else { + QModelIndex idx = m_d->m_editorModel->firstRestoredEditor(); + if (idx.isValid()) + activateEditor(idx, view, NoActivate); + } + + emit editorsClosed(QList() << editor); + delete editor; + if (currentSplitterOrView) { + if (IEditor *currentEditor = currentSplitterOrView->editor()) + activateEditor(currentSplitterOrView->view(), currentEditor); + } +} + IEditor *EditorManager::pickUnusedEditor() const { foreach (IEditor *editor, m_d->m_editorHistory) { @@ -797,65 +841,19 @@ IEditor *EditorManager::pickUnusedEditor() const } -void EditorManager::closeEditor(const QModelIndex &index) -{ - IEditor *editor = index.data(Qt::UserRole).value(); - if (editor) - closeEditor(editor); - else - m_d->m_editorModel->removeEditor(index); -} - -void EditorManager::activateEditor(const QModelIndex &index, Internal::EditorView *view) +void EditorManager::activateEditor(const QModelIndex &index, Internal::EditorView *view, OpenEditorFlags flags) { IEditor *editor = index.data(Qt::UserRole).value(); if (editor) { - if (view) - activateEditor(view, editor); - else - activateEditor(editor); + activateEditor(view, editor, flags); return; } - if (view) setCurrentView(m_d->m_splitter->findView(view)); QString fileName = index.data(Qt::UserRole + 1).toString(); QByteArray kind = index.data(Qt::UserRole + 2).toByteArray(); - openEditor(fileName, kind); -} - -void EditorManager::activateEditor(IEditor *editor, OpenEditorFlags flags) -{ - SplitterOrView *splitterOrView = m_d->m_currentView; - if (splitterOrView && splitterOrView->splitter()) - splitterOrView = 0; // safety if currentView gets out of sync - setCurrentView(0); - if (!editor) - return; - - SplitterOrView *place = m_d->m_splitter->findView(editor); - if (place && !place->isSplitter()) { - splitterOrView = place; - } - - - if (!splitterOrView) - splitterOrView = m_d->m_splitter->findEmptyView(); - - if (!splitterOrView && m_d->m_currentEditor) { - splitterOrView = m_d->m_splitter->findView(m_d->m_currentEditor); - if (splitterOrView && !splitterOrView->isVisible()) // safety if currentEditor gets out of sync - splitterOrView = 0; - } - - if (!splitterOrView) - splitterOrView = m_d->m_splitter->findFirstView(); - if (!splitterOrView) { - splitterOrView = m_d->m_splitter; - } - - activateEditor(splitterOrView->view(), editor, flags); + openEditor(fileName, kind, flags); } Core::IEditor *EditorManager::placeEditor(Core::Internal::EditorView *view, Core::IEditor *editor) @@ -868,13 +866,11 @@ Core::IEditor *EditorManager::placeEditor(Core::Internal::EditorView *view, Core sourceView->view()->removeEditor(editor); view->addEditor(editor); view->setCurrentEditor(editor); -#if 0 if (!sourceView->editor()) { if (IEditor *replacement = pickUnusedEditor()) { sourceView->view()->addEditor(replacement); } } -#endif return editor; } else if (duplicateSupported) { editor = duplicateEditor(editor); @@ -887,9 +883,17 @@ Core::IEditor *EditorManager::placeEditor(Core::Internal::EditorView *view, Core return editor; } +void EditorManager::activateEditor(Core::IEditor *editor, OpenEditorFlags flags) +{ + activateEditor(0, editor, flags); +} + void EditorManager::activateEditor(Core::Internal::EditorView *view, Core::IEditor *editor, OpenEditorFlags flags) { - Q_ASSERT(view) ; + if (!view) + view = currentView()->view(); + + Q_ASSERT(view); if (!editor && !m_d->m_currentEditor) { setCurrentEditor(0, (flags & IgnoreNavigationHistory)); diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h index 60276f9f92b..1a855ab9f27 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.h +++ b/src/plugins/coreplugin/editormanager/editormanager.h @@ -129,7 +129,7 @@ public: QList openedEditors() const; Internal::EditorModel *openedEditorsModel() const; - void activateEditor(const QModelIndex &index, Internal::EditorView *view = 0); + void activateEditor(const QModelIndex &index, Internal::EditorView *view = 0, OpenEditorFlags = 0); void closeEditor(const QModelIndex &index); @@ -235,9 +235,10 @@ private: Core::IEditor *duplicateEditor(IEditor *editor); void setCurrentEditor(IEditor *editor, bool ignoreNavigationHistory = false); void setCurrentView(Core::Internal::SplitterOrView *view); - Core::Internal::SplitterOrView *currentView() const; void activateEditor(Core::Internal::EditorView *view, Core::IEditor *editor, OpenEditorFlags flags = 0); + Core::Internal::SplitterOrView *currentView() const; void closeEditor(Core::IEditor *editor); + void closeDuplicate(Core::IEditor *editor); void closeView(Core::Internal::EditorView *view); void emptyView(Core::Internal::EditorView *view); Core::Internal::EditorView *currentEditorView(); diff --git a/src/plugins/coreplugin/editormanager/editorview.cpp b/src/plugins/coreplugin/editormanager/editorview.cpp index 8fec6a24639..592cddb776e 100644 --- a/src/plugins/coreplugin/editormanager/editorview.cpp +++ b/src/plugins/coreplugin/editormanager/editorview.cpp @@ -571,12 +571,9 @@ bool EditorView::hasEditor(IEditor *editor) const void EditorView::closeView() { EditorManager *em = CoreImpl::instance()->editorManager(); -#if 1 - if (IEditor *editor = currentEditor()) - em->closeEditor(editor); -#else - em->closeView(this); -#endif + if (IEditor *editor = currentEditor()) { + em->closeDuplicate(editor); + } } void EditorView::removeEditor(IEditor *editor) @@ -943,7 +940,7 @@ void SplitterOrView::split(Qt::Orientation orientation) m_view->removeEditor(e); m_splitter->addWidget(new SplitterOrView(e)); -#if 0 +#if 1 if (e->duplicateSupported()) { Core::IEditor *duplicate = em->duplicateEditor(e); m_splitter->addWidget(new SplitterOrView(duplicate)); @@ -967,7 +964,7 @@ void SplitterOrView::split(Qt::Orientation orientation) } em->setCurrentView(view); -#if 0 +#if 1 if (e) em->activateEditor(e); #endif From d7b1e5ee8f8b1e3face419c97379910eff5f0510 Mon Sep 17 00:00:00 2001 From: con Date: Tue, 9 Jun 2009 16:47:11 +0200 Subject: [PATCH 6/8] "Automatic" search term must be escaped in case of regexp being used. So selecting something and pressing ctrl+f now puts the correct search term in. --- src/plugins/find/findtoolbar.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/find/findtoolbar.cpp b/src/plugins/find/findtoolbar.cpp index 2dff2fdc378..3b8102848fc 100644 --- a/src/plugins/find/findtoolbar.cpp +++ b/src/plugins/find/findtoolbar.cpp @@ -349,7 +349,10 @@ QString FindToolBar::getReplaceText() void FindToolBar::setFindText(const QString &text) { disconnect(m_ui.findEdit, SIGNAL(textChanged(const QString&)), this, SLOT(invokeFindIncremental())); - m_ui.findEdit->setText(text); + if (hasFindFlag(IFindSupport::FindRegularExpression)) + m_ui.findEdit->setText(QRegExp::escape(text)); + else + m_ui.findEdit->setText(text); connect(m_ui.findEdit, SIGNAL(textChanged(const QString&)), this, SLOT(invokeFindIncremental())); } From fa3ea57e910a81cbe4461144b40fd5dc4eb2516c Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Tue, 9 Jun 2009 17:11:34 +0200 Subject: [PATCH 7/8] Fixes: Remove custom button fonts Details: The custom fonts set in the style sheet breaks for japanese (and other) translations. And now that we use widgets for the design, there is really no reason to use anything but the system font here. --- src/plugins/coreplugin/welcomemode.ui | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/plugins/coreplugin/welcomemode.ui b/src/plugins/coreplugin/welcomemode.ui index a1c612de3a6..fb2397b0ef2 100644 --- a/src/plugins/coreplugin/welcomemode.ui +++ b/src/plugins/coreplugin/welcomemode.ui @@ -20,7 +20,6 @@ QToolButton, QPushButton, QComboBox { border-width: 4; padding: 0px 6px; font-size: 12px; - font-family: lucida sans, dejavu sans, sans serif; } *{ @@ -265,7 +264,6 @@ QToolButton:pressed { - lucida sans ,dejavu sans ,sans serif -1 @@ -302,7 +300,6 @@ QToolButton:pressed { - lucida sans ,dejavu sans ,sans serif -1 @@ -333,7 +330,6 @@ QToolButton:pressed { - lucida sans ,dejavu sans ,sans serif -1 From 5d11453c1dd680b90b8ba608103db8cda0bbd201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Tue, 9 Jun 2009 17:10:48 +0200 Subject: [PATCH 8/8] Fixed relative include paths specified for the generic project We forgot to convert them to absolute. Also removed two calls to removeDuplicates, since the convertToAbsoluteFiles already does that. Reviewed-by: Roberto Raggi --- src/plugins/genericprojectmanager/genericproject.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 35c24b6cdd9..238bd5f07d0 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -171,14 +171,11 @@ static QStringList readLines(const QString &absoluteFileName) void GenericProject::parseProject(RefreshOptions options) { - if (options & Files) { + if (options & Files) m_files = convertToAbsoluteFiles(readLines(filesFileName())); - m_files.removeDuplicates(); - } if (options & Configuration) { - m_projectIncludePaths = readLines(includesFileName()); - m_projectIncludePaths.removeDuplicates(); + m_projectIncludePaths = convertToAbsoluteFiles(readLines(includesFileName())); QSettings projectInfo(m_fileName, QSettings::IniFormat); m_generated = convertToAbsoluteFiles(projectInfo.value(QLatin1String("generated")).toStringList());