Don't allow updates to shown_text outside of cacheShownText().
But also don't use cacheShownText() in c'tors, as it will not call the subclass's version.
This commit is contained in:
parent
feb887fe8f
commit
7b71e55ab9
|
@ -95,7 +95,17 @@ EDA_TEXT::EDA_TEXT( const EDA_IU_SCALE& aIuScale, const wxString& aText ) :
|
||||||
{
|
{
|
||||||
SetTextSize( VECTOR2I( EDA_UNIT_UTILS::Mils2IU( m_IuScale, DEFAULT_SIZE_TEXT ),
|
SetTextSize( VECTOR2I( EDA_UNIT_UTILS::Mils2IU( m_IuScale, DEFAULT_SIZE_TEXT ),
|
||||||
EDA_UNIT_UTILS::Mils2IU( m_IuScale, DEFAULT_SIZE_TEXT ) ) );
|
EDA_UNIT_UTILS::Mils2IU( m_IuScale, DEFAULT_SIZE_TEXT ) ) );
|
||||||
cacheShownText();
|
|
||||||
|
if( m_text.IsEmpty() )
|
||||||
|
{
|
||||||
|
m_shown_text = wxEmptyString;
|
||||||
|
m_shown_text_has_text_var_refs = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_shown_text = UnescapeString( m_text );
|
||||||
|
m_shown_text_has_text_var_refs = m_shown_text.Contains( wxT( "${" ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -170,22 +180,14 @@ EDA_TEXT& EDA_TEXT::operator=( const EDA_TEXT& aText )
|
||||||
void EDA_TEXT::SetText( const wxString& aText )
|
void EDA_TEXT::SetText( const wxString& aText )
|
||||||
{
|
{
|
||||||
m_text = aText;
|
m_text = aText;
|
||||||
|
|
||||||
cacheShownText();
|
cacheShownText();
|
||||||
|
|
||||||
ClearRenderCache();
|
|
||||||
m_bounding_box_cache_valid = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void EDA_TEXT::CopyText( const EDA_TEXT& aSrc )
|
void EDA_TEXT::CopyText( const EDA_TEXT& aSrc )
|
||||||
{
|
{
|
||||||
m_text = aSrc.m_text;
|
m_text = aSrc.m_text;
|
||||||
m_shown_text = aSrc.m_shown_text;
|
cacheShownText();
|
||||||
m_shown_text_has_text_var_refs = aSrc.m_shown_text_has_text_var_refs;
|
|
||||||
|
|
||||||
ClearRenderCache();
|
|
||||||
m_bounding_box_cache_valid = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -280,11 +282,7 @@ void EDA_TEXT::SetAttributes( const EDA_TEXT& aSrc )
|
||||||
void EDA_TEXT::SwapText( EDA_TEXT& aTradingPartner )
|
void EDA_TEXT::SwapText( EDA_TEXT& aTradingPartner )
|
||||||
{
|
{
|
||||||
std::swap( m_text, aTradingPartner.m_text );
|
std::swap( m_text, aTradingPartner.m_text );
|
||||||
std::swap( m_shown_text, aTradingPartner.m_shown_text );
|
cacheShownText();
|
||||||
std::swap( m_shown_text_has_text_var_refs, aTradingPartner.m_shown_text_has_text_var_refs );
|
|
||||||
|
|
||||||
ClearRenderCache();
|
|
||||||
m_bounding_box_cache_valid = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -161,7 +161,10 @@ SCH_LABEL_BASE::SCH_LABEL_BASE( const VECTOR2I& aPos, const wxString& aText, KIC
|
||||||
m_lastResolvedColor( COLOR4D::UNSPECIFIED )
|
m_lastResolvedColor( COLOR4D::UNSPECIFIED )
|
||||||
{
|
{
|
||||||
SetMultilineAllowed( false );
|
SetMultilineAllowed( false );
|
||||||
ClearFieldsAutoplaced(); // fiels are not yet autoplaced.
|
ClearFieldsAutoplaced(); // fields are not yet autoplaced.
|
||||||
|
|
||||||
|
if( !HasTextVars() )
|
||||||
|
m_cached_driver_name = EscapeString( EDA_TEXT::GetShownText( true, 0 ), CTX_NETNAME );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -170,7 +173,8 @@ SCH_LABEL_BASE::SCH_LABEL_BASE( const SCH_LABEL_BASE& aLabel ) :
|
||||||
m_shape( aLabel.m_shape ),
|
m_shape( aLabel.m_shape ),
|
||||||
m_connectionType( aLabel.m_connectionType ),
|
m_connectionType( aLabel.m_connectionType ),
|
||||||
m_isDangling( aLabel.m_isDangling ),
|
m_isDangling( aLabel.m_isDangling ),
|
||||||
m_lastResolvedColor( aLabel.m_lastResolvedColor )
|
m_lastResolvedColor( aLabel.m_lastResolvedColor ),
|
||||||
|
m_cached_driver_name( aLabel.m_cached_driver_name )
|
||||||
{
|
{
|
||||||
SetMultilineAllowed( false );
|
SetMultilineAllowed( false );
|
||||||
|
|
||||||
|
@ -181,6 +185,16 @@ SCH_LABEL_BASE::SCH_LABEL_BASE( const SCH_LABEL_BASE& aLabel ) :
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SCH_LABEL_BASE& SCH_LABEL_BASE::operator=( const SCH_LABEL_BASE& aLabel )
|
||||||
|
{
|
||||||
|
SCH_TEXT::operator=( aLabel );
|
||||||
|
|
||||||
|
m_cached_driver_name = aLabel.m_cached_driver_name;
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const wxString SCH_LABEL_BASE::GetDefaultFieldName( const wxString& aName, bool aUseDefaultName )
|
const wxString SCH_LABEL_BASE::GetDefaultFieldName( const wxString& aName, bool aUseDefaultName )
|
||||||
{
|
{
|
||||||
if( aName == wxT( "Intersheetrefs" ) )
|
if( aName == wxT( "Intersheetrefs" ) )
|
||||||
|
|
|
@ -38,6 +38,8 @@ public:
|
||||||
|
|
||||||
SCH_LABEL_BASE( const SCH_LABEL_BASE& aLabel );
|
SCH_LABEL_BASE( const SCH_LABEL_BASE& aLabel );
|
||||||
|
|
||||||
|
SCH_LABEL_BASE& operator=( const SCH_LABEL_BASE& aLabel );
|
||||||
|
|
||||||
// Abstract class
|
// Abstract class
|
||||||
virtual wxString GetClass() const override = 0;
|
virtual wxString GetClass() const override = 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue