diff --git a/src/plugins/coreplugin/documentmanager.cpp b/src/plugins/coreplugin/documentmanager.cpp index b6ddfee841d..bde6f8a4a8c 100644 --- a/src/plugins/coreplugin/documentmanager.cpp +++ b/src/plugins/coreplugin/documentmanager.cpp @@ -153,7 +153,6 @@ public: QSet m_expectedFileNames; // set of file names without normalization QList m_recentFiles; - static const int m_maxRecentFiles = 8; bool m_postponeAutoReload = false; bool m_blockActivated = false; @@ -1278,7 +1277,7 @@ void DocumentManager::addToRecentFiles(const QString &fileName, Id editorId) if (fileKey == recentFileKey) it.remove(); } - if (d->m_recentFiles.count() == d->m_maxRecentFiles) + while (d->m_recentFiles.count() >= EditorManagerPrivate::maxRecentFiles()) d->m_recentFiles.removeLast(); d->m_recentFiles.prepend(RecentFile(fileName, editorId)); } diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index f1073e6bb2c..a3b44939912 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -121,6 +121,7 @@ static const char autoSuspendEnabledKey[] = "EditorManager/AutoSuspendEnabled"; static const char autoSuspendMinDocumentCountKey[] = "EditorManager/AutoSuspendMinDocuments"; static const char warnBeforeOpeningBigTextFilesKey[] = "EditorManager/WarnBeforeOpeningBigTextFiles"; static const char bigTextFileSizeLimitKey[] = "EditorManager/BigTextFileSizeLimitInMB"; +static const char maxRecentFilesKey[] = "EditorManager/MaxRecentFiles"; static const char fileSystemCaseSensitivityKey[] = "Core/FileSystemCaseSensitivity"; static const char preferredEditorFactoriesKey[] = "EditorManager/PreferredEditorFactories"; @@ -1020,6 +1021,7 @@ void EditorManagerPrivate::saveSettings() qsettings->setValue(warnBeforeOpeningBigTextFilesKey, d->m_warnBeforeOpeningBigFilesEnabled); qsettings->setValue(bigTextFileSizeLimitKey, d->m_bigFileSizeLimitInMB); + qsettings->setValue(maxRecentFilesKey, d->m_maxRecentFiles); Qt::CaseSensitivity defaultSensitivity = OsSpecificAspects::fileNameCaseSensitivity(HostOsInfo::hostOs()); @@ -1040,6 +1042,10 @@ void EditorManagerPrivate::readSettings() d->m_bigFileSizeLimitInMB = qs->value(bigTextFileSizeLimitKey).toInt(); } + const int maxRecentFiles = qs->value(maxRecentFilesKey).toInt(); + if (maxRecentFiles > 0) + d->m_maxRecentFiles = maxRecentFiles; + if (qs->contains(fileSystemCaseSensitivityKey)) { Qt::CaseSensitivity defaultSensitivity = OsSpecificAspects::fileNameCaseSensitivity(HostOsInfo::hostOs()); @@ -1155,6 +1161,16 @@ int EditorManagerPrivate::bigFileSizeLimit() return d->m_bigFileSizeLimitInMB; } +void EditorManagerPrivate::setMaxRecentFiles(int count) +{ + d->m_maxRecentFiles = count; +} + +int EditorManagerPrivate::maxRecentFiles() +{ + return d->m_maxRecentFiles; +} + void EditorManagerPrivate::setBigFileSizeLimit(int limitInMB) { d->m_bigFileSizeLimitInMB = limitInMB; diff --git a/src/plugins/coreplugin/editormanager/editormanager_p.h b/src/plugins/coreplugin/editormanager/editormanager_p.h index 4dd7f62e31d..ac6ac6f7f8c 100644 --- a/src/plugins/coreplugin/editormanager/editormanager_p.h +++ b/src/plugins/coreplugin/editormanager/editormanager_p.h @@ -124,6 +124,8 @@ public: static bool warnBeforeOpeningBigFilesEnabled(); static void setBigFileSizeLimit(int limitInMB); static int bigFileSizeLimit(); + static void setMaxRecentFiles(int count); + static int maxRecentFiles(); static EditorWindow *createEditorWindow(); static void splitNewWindow(Internal::EditorView *view); @@ -276,6 +278,7 @@ private: bool m_warnBeforeOpeningBigFilesEnabled = true; int m_bigFileSizeLimitInMB = 5; + int m_maxRecentFiles = 8; QString m_placeholderText; QList> m_closeEditorListeners; diff --git a/src/plugins/coreplugin/systemsettings.cpp b/src/plugins/coreplugin/systemsettings.cpp index b6a435d36ab..a6199cfd235 100644 --- a/src/plugins/coreplugin/systemsettings.cpp +++ b/src/plugins/coreplugin/systemsettings.cpp @@ -118,6 +118,9 @@ QWidget *SystemSettings::widget() m_page->warnBeforeOpeningBigFiles->setChecked( EditorManagerPrivate::warnBeforeOpeningBigFilesEnabled()); m_page->bigFilesLimitSpinBox->setValue(EditorManagerPrivate::bigFileSizeLimit()); + m_page->maxRecentFilesSpinBox->setMinimum(1); + m_page->maxRecentFilesSpinBox->setMaximum(99); + m_page->maxRecentFilesSpinBox->setValue(EditorManagerPrivate::maxRecentFiles()); if (HostOsInfo::isAnyUnixHost()) { connect(m_page->resetTerminalButton, &QAbstractButton::clicked, @@ -183,6 +186,7 @@ void SystemSettings::apply() EditorManagerPrivate::setWarnBeforeOpeningBigFilesEnabled( m_page->warnBeforeOpeningBigFiles->isChecked()); EditorManagerPrivate::setBigFileSizeLimit(m_page->bigFilesLimitSpinBox->value()); + EditorManagerPrivate::setMaxRecentFiles(m_page->maxRecentFilesSpinBox->value()); if (HostOsInfo::isMacHost()) { Qt::CaseSensitivity defaultSensitivity diff --git a/src/plugins/coreplugin/systemsettings.ui b/src/plugins/coreplugin/systemsettings.ui index 172e773657a..1aee69e9e3d 100644 --- a/src/plugins/coreplugin/systemsettings.ui +++ b/src/plugins/coreplugin/systemsettings.ui @@ -6,8 +6,8 @@ 0 0 - 527 - 469 + 599 + 545 @@ -17,7 +17,138 @@ System - + + + + Terminal: + + + + + + + + + + 3 + 0 + + + + + 100 + 0 + + + + true + + + + + + + + + + Command line arguments used for "Run in terminal". + + + + + + + + + Reset to default. + + + Reset + + + + + + + External file browser: + + + + + + + + + + Reset to default. + + + Reset + + + + + + + ? + + + + + + + Patch command: + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Influences how file names are matched to decide if they are the same. + + + File system case sensitivity: + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + @@ -63,21 +194,7 @@ - - - - External file browser: - - - - - - - ? - - - - + @@ -137,17 +254,7 @@ - - - - Patch command: - - - - - - - + @@ -213,17 +320,7 @@ - - - - Reset to default. - - - Reset - - - - + @@ -266,100 +363,30 @@ - - - - - - - Reset to default. - - - Reset - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Influences how file names are matched to decide if they are the same. - - - File system case sensitivity: - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Terminal: - - - - - + + - - - - 3 - 0 - + + + Maximum number of entries in "Recent Files": - + + + + + + + + + Qt::Horizontal + + - 100 - 0 + 40 + 20 - - true - - - - - - - - - - Command line arguments used for "Run in terminal". - - +