diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp index 13ce08b7e0b96494d60e19cd79f2bdc67b4b263f..708ba87395db5d8e696cf9dbaa4ee174eb23c61b 100644 --- a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp +++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp @@ -454,7 +454,20 @@ namespace armarx::armem::gui::instance try { aron::data::VariantPtr element = currentInstance->data()->navigateAbsolute(path); - aron::type::VariantPtr elementType = currentAronType->navigateAbsolute(path); + aron::type::VariantPtr elementType = nullptr; + if (currentAronType) + { + // There doesn't seem to be a way to check whether the path exists + // without potentially throwing an exception. + try + { + elementType = currentAronType->navigateAbsolute(path); + } + catch (const aron::error::AronException& e) + { + // No type available, elementType remains nullptr. + } + } return makeCopyActions(element, elementType); } catch (const aron::error::AronException& e) diff --git a/source/RobotAPI/libraries/armem_gui/instance/tree_builders/TypedDataTreeBuilder.cpp b/source/RobotAPI/libraries/armem_gui/instance/tree_builders/TypedDataTreeBuilder.cpp index e2537e0c5f94b382ea00920eb79f168e50b73331..de85c11c08080c88c5f5d72f5b00900547a66fbc 100644 --- a/source/RobotAPI/libraries/armem_gui/instance/tree_builders/TypedDataTreeBuilder.cpp +++ b/source/RobotAPI/libraries/armem_gui/instance/tree_builders/TypedDataTreeBuilder.cpp @@ -249,6 +249,9 @@ namespace armarx::armem::gui::instance { this->setRowTexts(item, key, data); + item->setData(columnKey, Qt::UserRole, + data ? instance::serializePath(data->getPath()) : QStringList()); + if (auto cast = aron::data::Dict::DynamicCast(data)) { DataTreeBuilder builder;