mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
AppFwk : Make sure uiOrdering is not called more than once
This commit is contained in:
@@ -74,15 +74,14 @@ PdmUiToolBarEditor::~PdmUiToolBarEditor()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool PdmUiToolBarEditor::isEditorDataValid(const std::vector<caf::PdmFieldHandle*>& fields) const
|
bool PdmUiToolBarEditor::isEditorDataValid(const std::vector<caf::PdmFieldHandle*>& fields) const
|
||||||
{
|
{
|
||||||
if (m_fields.size() == fields.size() &&
|
if (m_fields.size() == fields.size() && m_fieldViews.size() == fields.size())
|
||||||
m_fieldViews.size() == fields.size())
|
|
||||||
{
|
{
|
||||||
bool equalContent = true;
|
bool equalContent = true;
|
||||||
|
|
||||||
for (size_t i = 0; i < m_fields.size(); i++)
|
for (size_t i = 0; i < m_fields.size(); i++)
|
||||||
{
|
{
|
||||||
if (m_fields[i] != fields[i])
|
if (m_fields[i] != fields[i])
|
||||||
@@ -105,17 +104,31 @@ bool PdmUiToolBarEditor::isEditorDataValid(const std::vector<caf::PdmFieldHandle
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void PdmUiToolBarEditor::configureAndUpdateUi(const QString& uiConfigName)
|
void PdmUiToolBarEditor::configureAndUpdateUi(const QString& uiConfigName)
|
||||||
{
|
{
|
||||||
|
{
|
||||||
|
// Find set of owner objects. Can be several objects, make a set to avoid calling uiOrdering more than once for an object
|
||||||
|
|
||||||
|
std::set<caf::PdmUiObjectHandle*> 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)
|
for (PdmFieldHandle* field : m_fields)
|
||||||
{
|
{
|
||||||
PdmUiFieldEditorHandle* fieldEditor = nullptr;
|
PdmUiFieldEditorHandle* fieldEditor = nullptr;
|
||||||
|
|
||||||
caf::PdmUiObjectHandle* ownerUiObject = uiObj(field->ownerObject());
|
|
||||||
if (ownerUiObject)
|
|
||||||
{
|
|
||||||
PdmUiOrdering config;
|
|
||||||
ownerUiObject->uiOrdering(uiConfigName, config);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find or create FieldEditor
|
// Find or create FieldEditor
|
||||||
std::map<QString, PdmUiFieldEditorHandle*>::iterator it;
|
std::map<QString, PdmUiFieldEditorHandle*>::iterator it;
|
||||||
it = m_fieldViews.find(field->keyword());
|
it = m_fieldViews.find(field->keyword());
|
||||||
@@ -213,7 +226,7 @@ void PdmUiToolBarEditor::clear()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void PdmUiToolBarEditor::show()
|
void PdmUiToolBarEditor::show()
|
||||||
{
|
{
|
||||||
@@ -224,7 +237,7 @@ void PdmUiToolBarEditor::show()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void PdmUiToolBarEditor::hide()
|
void PdmUiToolBarEditor::hide()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user