diff --git a/GUI/coregui/Views/InstrumentWidgets/InstrumentViewActions.cpp b/GUI/coregui/Views/InstrumentWidgets/InstrumentViewActions.cpp index 34ea058883670a174920c849cd9abe24ab0977b4..8b7232fc1ad7953f0c70dbc7982ca5275d800f83 100644 --- a/GUI/coregui/Views/InstrumentWidgets/InstrumentViewActions.cpp +++ b/GUI/coregui/Views/InstrumentWidgets/InstrumentViewActions.cpp @@ -13,7 +13,9 @@ // ************************************************************************** // #include "InstrumentViewActions.h" +#include "GroupItem.h" #include "InstrumentItems.h" +#include "PointwiseAxisItem.h" #include "SessionModel.h" #include "ModelUtils.h" #include <QAction> @@ -125,6 +127,23 @@ void InstrumentViewActions::onCloneInstrument() m_model->copyItem(child, clone, tag); } clone->setItemName(nameOfClone); + + // copying non-uniform axis data + if (auto instrument = dynamic_cast<SpecularInstrumentItem*>(item)) { + auto axis_group = instrument->beamItem()->inclinationAxisGroup(); + + auto donor_axis = dynamic_cast<PointwiseAxisItem*>( + axis_group->getItemOfType(Constants::PointwiseAxisType)); + if (!donor_axis->containsNonXMLData()) + return; + + auto acceptor_axis = + dynamic_cast<PointwiseAxisItem*>(dynamic_cast<SpecularInstrumentItem*>(clone) + ->beamItem() + ->inclinationAxisGroup() + ->getItemOfType(Constants::PointwiseAxisType)); + acceptor_axis->init(*donor_axis->getAxis(), donor_axis->getUnitsLabel()); + } } }