From ca47896204482bf4a6979e3838bf7f09f61cebeb Mon Sep 17 00:00:00 2001
From: giy <giy@omp-system.ru>
Date: Fri, 02 Sep 2022 14:16:56 +0300
Subject: [PATCH] Обновление до версии 2.9.0

---
 QtVsTools.Package/QtMsBuild/QtProjectIntelliSense.cs |   32 +++++++++++++++++++++++---------
 1 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/QtVsTools.Package/QtMsBuild/QtProjectIntelliSense.cs b/QtVsTools.Package/QtMsBuild/QtProjectIntelliSense.cs
index 605763f..46ff9d4 100644
--- a/QtVsTools.Package/QtMsBuild/QtProjectIntelliSense.cs
+++ b/QtVsTools.Package/QtMsBuild/QtProjectIntelliSense.cs
@@ -31,12 +31,15 @@
 using System.Linq;
 using System.Threading.Tasks;
 using Microsoft.Build.Framework;
+using Microsoft.VisualStudio.Shell;
 using Microsoft.VisualStudio.Threading;
+
+using Task = System.Threading.Tasks.Task;
+using Thread = System.Threading.Thread;
 
 namespace QtVsTools.QtMsBuild
 {
     using Core;
-    using Thread = System.Threading.Thread;
 
     static class QtProjectIntellisense
     {
@@ -45,25 +48,31 @@
             string configId = null,
             IEnumerable<string> selectedFiles = null)
         {
-            if (project == null || !QtProjectTracker.IsTracked(project))
+            ThreadHelper.ThrowIfNotOnUIThread();
+
+            if (project == null || !QtProjectTracker.IsTracked(project.FullName))
                 return;
+
             if (QtVsToolsPackage.Instance.Options.BuildDebugInformation) {
                 Messages.Print(string.Format(
                     "{0:HH:mm:ss.FFF} QtProjectIntellisense({1}): Refreshing: [{2}] {3}",
                     DateTime.Now, Thread.CurrentThread.ManagedThreadId,
                     (configId != null) ? configId : "(all configs)", project.FullName));
             }
-            Task.Run(() => RefreshAsync(project, configId, selectedFiles));
+            string projectPath = project.FullName;
+            _ = Task.Run(() => RefreshAsync(project, projectPath, configId, selectedFiles, false));
         }
 
         public static async Task RefreshAsync(
             EnvDTE.Project project,
+            string projectPath,
             string configId = null,
-            IEnumerable<string> selectedFiles = null)
+            IEnumerable<string> selectedFiles = null,
+            bool refreshQtVars = false)
         {
-            if (project == null || !QtProjectTracker.IsTracked(project))
+            if (project == null || !QtProjectTracker.IsTracked(projectPath))
                 return;
-            var tracker = QtProjectTracker.Get(project);
+            var tracker = QtProjectTracker.Get(project, projectPath);
             await tracker.Initialized;
 
             var properties = new Dictionary<string, string>();
@@ -84,9 +93,14 @@
             }
 
             foreach (var config in configs) {
-                await QtProjectBuild.StartBuildAsync(
-                    project, config, properties, targets,
-                    LoggerVerbosity.Quiet);
+                if (refreshQtVars) {
+                    await QtProjectBuild.StartBuildAsync(
+                        project, projectPath, config, properties, targets,
+                        LoggerVerbosity.Quiet);
+                } else {
+                    await QtProjectBuild.SetOutdatedAsync(
+                        project, projectPath, config, LoggerVerbosity.Quiet);
+                }
             }
         }
     }

--
Gitblit v1.9.1