From 291b000e094b6d2a10130de0c687f4cf3f67b885 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Tue, 9 Dec 2014 20:37:20 +0100 Subject: [PATCH] Allow modifying the name attribute fixes #8033 --- lib/config/configitem.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/config/configitem.cpp b/lib/config/configitem.cpp index 966d3000d..7b4c43d56 100644 --- a/lib/config/configitem.cpp +++ b/lib/config/configitem.cpp @@ -177,24 +177,32 @@ DynamicObject::Ptr ConfigItem::Commit(bool discard) if (discard) m_Expression.reset(); - String name = m_Name; + String item_name; + String short_name = dobj->GetShortName(); + + if (!short_name.IsEmpty()) { + item_name = short_name; + dobj->SetName(short_name); + } else + item_name = m_Name; + + String name = item_name; NameComposer *nc = dynamic_cast(type.get()); if (nc) { - name = nc->MakeName(m_Name, dobj); + name = nc->MakeName(name, dobj); if (name.IsEmpty()) BOOST_THROW_EXCEPTION(std::runtime_error("Could not determine name for object")); } - if (name != m_Name) - dobj->SetShortName(m_Name); + if (name != item_name) + dobj->SetShortName(item_name); dobj->SetName(name); dobj->OnConfigLoaded(); - { boost::mutex::scoped_lock lock(m_Mutex); m_CommittedItems.push_back(this); -- 2.40.0