From 330e3843d285d1d4694936c6553ce8e594908e48 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tobias=20Gr=C3=B6ger?= <tobias.groeger@student.kit.edu>
Date: Sat, 13 Jul 2024 17:54:31 +0200
Subject: [PATCH] ScenarioManager: ignore any file changes made by us

---
 .../ScenarioManager/gui/detailedapplicationview.cpp    | 10 +++++++++-
 .../ScenarioManager/gui/detailedapplicationview.h      |  1 +
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.cpp
index 9a22dc14..839e2ac1 100644
--- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.cpp
+++ b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.cpp
@@ -1049,8 +1049,10 @@ DetailedApplicationView::on_fileUpdate()
             lastAppInstance->save();
         }
 
-
+        // we want to ignore any file changes made by us to avoid unnecessarily updating the GUI
+        ignoreFileChanges = true;
         emit saveScenario(lastAppInstance);
+        ignoreFileChanges = false;
     }
     else if (lastScenario.get() != nullptr)
     {
@@ -1097,6 +1099,12 @@ DetailedApplicationView::on_makeLocalButton_clicked()
 void
 DetailedApplicationView::on_fileWatcherUpdate(const QString& path)
 {
+    if (ignoreFileChanges)
+    {
+        ARMARX_VERBOSE << "Ignoring file change from: " << path.toStdString();
+        return;
+    }
+
     ARMARX_VERBOSE << "File changed: " << path.toStdString() << " -> reloading config";
 
     if (lastAppInstance.get() != nullptr)
diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.h b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.h
index 227e46c7..86133728 100644
--- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.h
+++ b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.h
@@ -155,6 +155,7 @@ private:
     QTimer updateTimer;
 
     QFileSystemWatcher fileSystemWatcher;
+    bool ignoreFileChanges = false;
 };
 
 using DetailedApplicationViewPtr = std::shared_ptr<DetailedApplicationView>;
-- 
GitLab