From 0a8d67c45ce293d70214ac0ea542f32c0dc5a2fc Mon Sep 17 00:00:00 2001 From: Jon Evans Date: Wed, 14 Oct 2020 20:06:05 -0400 Subject: [PATCH] Make footprint text meta-control behavior more obvious --- pcbnew/widgets/appearance_controls.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/pcbnew/widgets/appearance_controls.cpp b/pcbnew/widgets/appearance_controls.cpp index f21bb54618..d97c2ad7d2 100644 --- a/pcbnew/widgets/appearance_controls.cpp +++ b/pcbnew/widgets/appearance_controls.cpp @@ -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( _( "Values" ), LAYER_MOD_VALUES, _( "Show footprint values" ) ), 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(), 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, bool isFinal ) { - GAL_SET visible = getVisibleObjects(); - // Special-case controls switch( aLayer ) { @@ -1747,10 +1745,21 @@ void APPEARANCE_CONTROLS::onObjectVisibilityChanged( GAL_LAYER_ID aLayer, bool i syncLayerPresetSelection(); 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: break; } + GAL_SET visible = getVisibleObjects(); + if( visible.Contains( aLayer ) != isVisible ) { visible.set( aLayer, isVisible );