From 236c22be5cf13ea85c5a29b035ffc994e40b831a Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Thu, 12 Aug 2021 07:46:02 +0200
Subject: [PATCH] Fix types not showing in memory tree widget

---
 .../libraries/armem_gui/memory/TreeWidget.cpp        | 12 +++++++-----
 .../RobotAPI/libraries/armem_gui/memory/TreeWidget.h |  4 ++--
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp
index 49c9b9807..314cd4d4a 100644
--- a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp
+++ b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp
@@ -299,16 +299,18 @@ namespace armarx::armem::gui::memory
         (void) level, (void) item;
     }
 
-    template <class... T>
-    void TreeWidget::updateContainerItem(
-        const base::detail::MemoryContainerBase<T...>& container, QTreeWidgetItem* item)
+    template <class ContainerT>
+    void TreeWidget::updateContainerItem(const ContainerT& container, QTreeWidgetItem* item)
     {
+        ARMARX_IMPORTANT << "Updating container " << container.id();
         updateItemItem(container, item);
         item->setText(int(Columns::SIZE), QString::number(container.size()));
 
-        if constexpr(std::is_base_of_v<base::detail::AronTyped, base::detail::MemoryContainerBase<T...>>)
+        // Does not work
+        if constexpr(std::is_base_of_v<base::detail::AronTyped, ContainerT>)
         {
-            const base::detail::AronTyped& cast = dynamic_cast<const base::detail::AronTyped&>(container);
+            ARMARX_IMPORTANT << "Updating type of container " << container.id();
+            const base::detail::AronTyped& cast = static_cast<const base::detail::AronTyped&>(container);
             std::string typeName;
             if (cast.aronType())
             {
diff --git a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h
index 94b1f6a4e..75f56c9ac 100644
--- a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h
+++ b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h
@@ -71,8 +71,8 @@ namespace armarx::armem::gui::memory
         QTreeWidgetItem* makeItem(const std::string& key, const std::string& levelName, const MemoryID& id);
 
         void updateItemItem(const armem::base::detail::MemoryItem& level, QTreeWidgetItem* item);
-        template <class... T>
-        void updateContainerItem(const armem::base::detail::MemoryContainerBase<T...>& container, QTreeWidgetItem* item);
+        template <class ContainerT>
+        void updateContainerItem(const ContainerT& container, QTreeWidgetItem* item);
 
 
     private:
-- 
GitLab