CellFilters: Mirror source filter's name in the per-view wrapper

RimDataFilterInView previously copied the source filter's name once, in
setSourceFilter() and initAfterRead() via syncNameFromSource(). That
left the wrapper showing the default "Combined Filter" when the source
was renamed after the wrapper was created — typical for the Python
add_combined_filter(name=...) flow, where the wrapper is constructed
during addFilter() before the user-supplied name reaches the source.

Replace the wrapper's reliance on its inherited m_name field for
display with a caf::PdmProxyValueField<QString> that delegates the
read to m_sourceFilter()->name() and the write to setName(). Override
userDescriptionField() so the PDM tree label and property panel route
through the proxy — both directions of rename now propagate.

Matches the m_nameProxy pattern already established in RimCellFilter.
The inherited m_name is no longer the display source of truth but is
left in place so RimNamedObject's serialization stays unchanged.
This commit is contained in:
Kristian Bendiksen committed 2026-05-15 08:37:46 +02:00
1 parent eb70d32eb1
commit 74fde9edef
2 files changed
+27 -9

No files matched your search

@@ -36,7 +36,14 @@ RimDataFilterInView::RimDataFilterInView()
CAF_PDM_InitFieldNoDefault( &m_sourceFilter, "SourceFilter", "Source Filter" );
m_sourceFilter.uiCapability()->setUiHidden( true );
setCheckState( true );
// Proxy delegates the wrapper's user-visible name to the source filter in both directions.
// The inherited m_name (from RimNamedObject) is no longer the source of truth for display.
CAF_PDM_InitFieldNoDefault( &m_displayName, "DisplayName", "Name" );
m_displayName.registerGetMethod( this, &RimDataFilterInView::sourceName );
m_displayName.registerSetMethod( this, &RimDataFilterInView::setSourceName );
m_displayName.xmlCapability()->disableIO();
setCheckState( false );
}
//--------------------------------------------------------------------------------------------------
@@ -58,7 +65,7 @@ RimCellFilter* RimDataFilterInView::sourceFilter() const
void RimDataFilterInView::setSourceFilter( RimCellFilter* sourceFilter )
{
m_sourceFilter = sourceFilter;
syncNameFromSource();
updateConnectedEditors();
}
//--------------------------------------------------------------------------------------------------
@@ -102,7 +109,7 @@ void RimDataFilterInView::fieldChangedByUi( const caf::PdmFieldHandle* changedFi
//--------------------------------------------------------------------------------------------------
void RimDataFilterInView::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
{
uiOrdering.add( nameField() );
uiOrdering.add( &m_displayName );
uiOrdering.skipRemainingFields( true );
}
@@ -117,15 +124,23 @@ void RimDataFilterInView::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOr
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimDataFilterInView::initAfterRead()
caf::PdmFieldHandle* RimDataFilterInView::userDescriptionField()
{
syncNameFromSource();
return &m_displayName;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimDataFilterInView::syncNameFromSource()
QString RimDataFilterInView::sourceName() const
{
if ( m_sourceFilter() ) setName( m_sourceFilter()->name() );
return m_sourceFilter() ? m_sourceFilter()->name() : QString();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimDataFilterInView::setSourceName( const QString& name )
{
if ( m_sourceFilter() ) m_sourceFilter()->setName( name );
}
@@ -20,6 +20,7 @@
#include "RimCheckableNamedObject.h"
#include "cafPdmProxyValueField.h"
#include "cafPdmPtrField.h"
#include "cvfArray.h"
@@ -51,10 +52,12 @@ protected:
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override;
void initAfterRead() override;
caf::PdmFieldHandle* userDescriptionField() override;
private:
void syncNameFromSource();
QString sourceName() const;
void setSourceName( const QString& name );
caf::PdmPtrField<RimCellFilter*> m_sourceFilter;
caf::PdmProxyValueField<QString> m_displayName;
};