Added missing childObjects() for PtrField and fixed legend tree view visibility for PtrFields

This commit is contained in:
Magne Sjaastad 2015-08-06 07:35:52 +02:00
parent f45c50fb43
commit ac45fb111b
3 changed files with 23 additions and 18 deletions

View File

@ -61,6 +61,10 @@ public:
bool operator==(const DataTypePtr& fieldValue) { return m_fieldValue == fieldValue; }
// Child objects
virtual void childObjects(std::vector<PdmObjectHandle*>*);
// Ptr referenced objects
virtual void ptrReferencedObjects(std::vector<PdmObjectHandle*>* objectsToFill);
@ -70,6 +74,7 @@ private:
friend class PdmFieldXmlCap< PdmPtrField <DataType*> >;
void setRawPtr(PdmObjectHandle* obj);
PdmPointer<DataType> m_fieldValue;
};

View File

@ -72,6 +72,22 @@ caf::PdmPtrField<DataType*>& PdmPtrField<DataType*>::operator=(const FieldDataTy
return *this;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
template<typename DataType >
void caf::PdmPtrField<DataType*>::childObjects(std::vector<PdmObjectHandle*>* objects)
{
assert(objects);
PdmObjectHandle* obj = m_fieldValue.rawPtr();
if (obj)
{
objects->push_back(obj);
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -638,23 +638,7 @@ PdmUiTreeItem* UiTreeItemBuilderPdm::buildViewItems(PdmUiTreeItem* parentTreeIte
return NULL;
}
PdmUiTreeItem* objectTreeItem = NULL;
// Ignore this particular object if the field it resides in is hidden.
// Child objects of this object, however, is not hidden
// Todo: This is a Hack to make oilField disappear. Must be rewritten when
// a more general ui tree building method is in place.
caf::PdmFieldHandle* parentField = object->parentField();
if (parentField && parentField->uiCapability() && parentField->uiCapability()->isUiHidden())
{
objectTreeItem = parentTreeItem;
}
else
{
objectTreeItem = new PdmUiTreeItem(parentTreeItem, position, object);
}
PdmUiTreeItem* objectTreeItem = new PdmUiTreeItem(parentTreeItem, position, object);
std::vector<caf::PdmFieldHandle*> fields;
object->fields(fields);