From 04a80864b1d515f8474b67583b743a669e0f08e3 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Fri, 1 Dec 2017 21:20:39 +0100 Subject: [PATCH] AppFwk : Make sure uiOrdering is not called more than once --- .../cafPdmUiToolBarEditor.cpp | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiToolBarEditor.cpp b/Fwk/AppFwk/cafUserInterface/cafPdmUiToolBarEditor.cpp index 1647d760d3..5841cc4ff7 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiToolBarEditor.cpp +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiToolBarEditor.cpp @@ -74,15 +74,14 @@ PdmUiToolBarEditor::~PdmUiToolBarEditor() } //-------------------------------------------------------------------------------------------------- -/// +/// //-------------------------------------------------------------------------------------------------- bool PdmUiToolBarEditor::isEditorDataValid(const std::vector& fields) const { - if (m_fields.size() == fields.size() && - m_fieldViews.size() == fields.size()) + if (m_fields.size() == fields.size() && m_fieldViews.size() == fields.size()) { bool equalContent = true; - + for (size_t i = 0; i < m_fields.size(); i++) { if (m_fields[i] != fields[i]) @@ -105,17 +104,31 @@ bool PdmUiToolBarEditor::isEditorDataValid(const std::vector ownerUiObjects; + + for (PdmFieldHandle* field : m_fields) + { + caf::PdmUiObjectHandle* ownerUiObject = field->ownerObject()->uiCapability(); + if (ownerUiObject) + { + ownerUiObjects.insert(ownerUiObject); + } + } + + PdmUiOrdering config; + for (caf::PdmUiObjectHandle* ownerUiObject : ownerUiObjects) + { + ownerUiObject->uiOrdering(uiConfigName, config); + } + } + for (PdmFieldHandle* field : m_fields) { PdmUiFieldEditorHandle* fieldEditor = nullptr; - caf::PdmUiObjectHandle* ownerUiObject = uiObj(field->ownerObject()); - if (ownerUiObject) - { - PdmUiOrdering config; - ownerUiObject->uiOrdering(uiConfigName, config); - } - // Find or create FieldEditor std::map::iterator it; it = m_fieldViews.find(field->keyword()); @@ -213,7 +226,7 @@ void PdmUiToolBarEditor::clear() } //-------------------------------------------------------------------------------------------------- -/// +/// //-------------------------------------------------------------------------------------------------- void PdmUiToolBarEditor::show() { @@ -224,7 +237,7 @@ void PdmUiToolBarEditor::show() } //-------------------------------------------------------------------------------------------------- -/// +/// //-------------------------------------------------------------------------------------------------- void PdmUiToolBarEditor::hide() {