From e027ed5e964e3e9b4e9a87cf76bcb4f821f616c6 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 14 Aug 2019 10:49:09 +0200 Subject: [PATCH] Utils: Split FilePath::fileName Into the regular case, and a fileNameWithPathComponents() function handling the rarely used case with argument. This saves a few cycles in the regular case and makes the function usable by member function pointer in e.g. Utils::transform. Change-Id: Ic4469198c3f8a44f59e50d70e67b864d876700d5 Reviewed-by: Eike Ziller --- src/libs/utils/fileutils.cpp | 8 +++++++- src/libs/utils/fileutils.h | 3 ++- src/plugins/coreplugin/editormanager/documentmodel.cpp | 3 ++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index 50ff572580a..e4d303659f3 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -736,7 +736,13 @@ QString FilePath::toUserOutput() const return m_url.toString(); } -QString FilePath::fileName(int pathComponents) const +QString FilePath::fileName() const +{ + const QChar slash = QLatin1Char('/'); + return m_data.mid(m_data.lastIndexOf(slash) + 1); +} + +QString FilePath::fileNameWithPathComponents(int pathComponents) const { if (pathComponents < 0) return m_data; diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h index ae691fe4c32..224ef7730ee 100644 --- a/src/libs/utils/fileutils.h +++ b/src/libs/utils/fileutils.h @@ -80,7 +80,8 @@ public: QString toUserOutput() const; QString shortNativePath() const; - QString fileName(int pathComponents = 0) const; + QString fileName() const; + QString fileNameWithPathComponents(int pathComponents) const; bool exists() const; bool isWritablePath() const; diff --git a/src/plugins/coreplugin/editormanager/documentmodel.cpp b/src/plugins/coreplugin/editormanager/documentmodel.cpp index b3cec42210d..c51dc81a674 100644 --- a/src/plugins/coreplugin/editormanager/documentmodel.cpp +++ b/src/plugins/coreplugin/editormanager/documentmodel.cpp @@ -504,7 +504,8 @@ DocumentModel::Entry *DocumentModelPrivate::DynamicEntry::operator->() const void DocumentModelPrivate::DynamicEntry::disambiguate() { - entry->document->setUniqueDisplayName(entry->fileName().fileName(++pathComponents)); + const QString display = entry->fileName().fileNameWithPathComponents(++pathComponents); + entry->document->setUniqueDisplayName(display); } void DocumentModelPrivate::DynamicEntry::setNumberedName(int number)