Make footprint text meta-control behavior more obvious

This commit is contained in:
Jon Evans 2020-10-14 20:06:05 -04:00
parent f0ef18fb9e
commit 0a8d67c45c
1 changed files with 12 additions and 3 deletions

View File

@ -338,7 +338,7 @@ const APPEARANCE_CONTROLS::APPEARANCE_SETTING APPEARANCE_CONTROLS::s_objectSetti
RR( _( "Through-hole Pads" ),LAYER_PADS_TH, _( "Show through-hole pads" ) ), RR( _( "Through-hole Pads" ),LAYER_PADS_TH, _( "Show through-hole pads" ) ),
RR( _( "Values" ), LAYER_MOD_VALUES, _( "Show footprint values" ) ), RR( _( "Values" ), LAYER_MOD_VALUES, _( "Show footprint values" ) ),
RR( _( "References" ), LAYER_MOD_REFERENCES, _( "Show footprint references" ) ), RR( _( "References" ), LAYER_MOD_REFERENCES, _( "Show footprint references" ) ),
RR( _( "Footprint Text" ), LAYER_MOD_TEXT_FR, _( "Show footprint text" ) ), RR( _( "Footprint Text" ), LAYER_MOD_TEXT_FR, _( "Show all footprint text" ) ),
RR( _( "Hidden Text" ), LAYER_MOD_TEXT_INVISIBLE, _( "Show footprint text marked as invisible" ) ), RR( _( "Hidden Text" ), LAYER_MOD_TEXT_INVISIBLE, _( "Show footprint text marked as invisible" ) ),
RR(), RR(),
RR(), RR(),
@ -1719,8 +1719,6 @@ void APPEARANCE_CONTROLS::onLayerVisibilityChanged( PCB_LAYER_ID aLayer, bool is
void APPEARANCE_CONTROLS::onObjectVisibilityChanged( GAL_LAYER_ID aLayer, bool isVisible, void APPEARANCE_CONTROLS::onObjectVisibilityChanged( GAL_LAYER_ID aLayer, bool isVisible,
bool isFinal ) bool isFinal )
{ {
GAL_SET visible = getVisibleObjects();
// Special-case controls // Special-case controls
switch( aLayer ) switch( aLayer )
{ {
@ -1747,10 +1745,21 @@ void APPEARANCE_CONTROLS::onObjectVisibilityChanged( GAL_LAYER_ID aLayer, bool i
syncLayerPresetSelection(); syncLayerPresetSelection();
break; break;
case LAYER_MOD_TEXT_FR:
// Because Footprint Text is a meta-control that also can disable values/references,
// drag them along here so that the user is less likely to be confused.
onObjectVisibilityChanged( LAYER_MOD_REFERENCES, isVisible, false );
onObjectVisibilityChanged( LAYER_MOD_VALUES, isVisible, false );
m_objectSettingsMap[LAYER_MOD_REFERENCES]->ctl_visibility->SetValue( isVisible );
m_objectSettingsMap[LAYER_MOD_VALUES]->ctl_visibility->SetValue( isVisible );
break;
default: default:
break; break;
} }
GAL_SET visible = getVisibleObjects();
if( visible.Contains( aLayer ) != isVisible ) if( visible.Contains( aLayer ) != isVisible )
{ {
visible.set( aLayer, isVisible ); visible.set( aLayer, isVisible );