From 724573324cdd7dfa57dad50dbb22ed5db23b2a8e Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Thu, 27 Jul 2017 11:02:25 +0200 Subject: Clang: Track visibility timepoint of documents This enables determination of "most recenlty used" documents, which is needed for a follow-up change. Change-Id: I7b2c9001fd00173044983780e99817b4416e280e Reviewed-by: Ivan Donchevskii Reviewed-by: Marco Bubke --- src/tools/clangbackend/ipcsource/clangdocument.cpp | 13 ++++++++++++- src/tools/clangbackend/ipcsource/clangdocument.h | 3 ++- src/tools/clangbackend/ipcsource/clangdocuments.cpp | 3 ++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/tools/clangbackend/ipcsource/clangdocument.cpp b/src/tools/clangbackend/ipcsource/clangdocument.cpp index 3cfcfabe09..933bf61276 100644 --- a/src/tools/clangbackend/ipcsource/clangdocument.cpp +++ b/src/tools/clangbackend/ipcsource/clangdocument.cpp @@ -71,6 +71,8 @@ public: uint documentRevision = 0; + TimePoint visibleTimePoint; + TimePoint isDirtyChangeTimePoint; bool isDirty = false; @@ -245,13 +247,22 @@ bool Document::isVisibleInEditor() const return d->isVisibleInEditor; } -void Document::setIsVisibleInEditor(bool isVisibleInEditor) +void Document::setIsVisibleInEditor(bool isVisibleInEditor, const TimePoint &timePoint) { checkIfNull(); + if (isVisibleInEditor) + d->visibleTimePoint = timePoint; d->isVisibleInEditor = isVisibleInEditor; } +TimePoint Document::visibleTimePoint() const +{ + checkIfNull(); + + return d->visibleTimePoint;; +} + bool Document::isDirty() const { checkIfNull(); diff --git a/src/tools/clangbackend/ipcsource/clangdocument.h b/src/tools/clangbackend/ipcsource/clangdocument.h index 15555ace10..48dc32acee 100644 --- a/src/tools/clangbackend/ipcsource/clangdocument.h +++ b/src/tools/clangbackend/ipcsource/clangdocument.h @@ -97,7 +97,8 @@ public: void setIsUsedByCurrentEditor(bool isUsedByCurrentEditor); bool isVisibleInEditor() const; - void setIsVisibleInEditor(bool isVisibleInEditor); + void setIsVisibleInEditor(bool isVisibleInEditor, const TimePoint &timePoint); + TimePoint visibleTimePoint() const; bool isDirty() const; TimePoint isDirtyTimeChangePoint() const; diff --git a/src/tools/clangbackend/ipcsource/clangdocuments.cpp b/src/tools/clangbackend/ipcsource/clangdocuments.cpp index 7ae7106cc8..5fc8f294a7 100644 --- a/src/tools/clangbackend/ipcsource/clangdocuments.cpp +++ b/src/tools/clangbackend/ipcsource/clangdocuments.cpp @@ -117,8 +117,9 @@ void Documents::setUsedByCurrentEditor(const Utf8String &filePath) void Documents::setVisibleInEditors(const Utf8StringVector &filePaths) { + const TimePoint timePoint = Clock::now(); for (Document &document : documents_) - document.setIsVisibleInEditor(filePaths.contains(document.filePath())); + document.setIsVisibleInEditor(filePaths.contains(document.filePath()), timePoint); } const Document &Documents::document(const Utf8String &filePath, const Utf8String &projectPartId) const -- cgit v1.2.1