From 638ac3838c499d1c4d1780e21233a327047fd147 Mon Sep 17 00:00:00 2001 From: Jon Evans Date: Sun, 26 May 2019 20:20:18 -0400 Subject: [PATCH] PcbNew: Fix layer alpha overrides being overwritten by color changes Fixes: lp:1827518 * https://bugs.launchpad.net/kicad/+bug/1827518 (cherry picked from commit cb3edf260773a5a26b8553ced826a49d09b7b921) --- pcbnew/tools/pcbnew_control.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/pcbnew/tools/pcbnew_control.cpp b/pcbnew/tools/pcbnew_control.cpp index 6d2df3cf9a..d698da80dd 100644 --- a/pcbnew/tools/pcbnew_control.cpp +++ b/pcbnew/tools/pcbnew_control.cpp @@ -492,17 +492,19 @@ int PCBNEW_CONTROL::LayerToggle( const TOOL_EVENT& aEvent ) int PCBNEW_CONTROL::LayerAlphaInc( const TOOL_EVENT& aEvent ) { - auto painter = static_cast( getView()->GetPainter() ); - auto settings = painter->GetSettings(); + auto& settings = m_frame->Settings().Colors(); LAYER_NUM currentLayer = m_frame->GetActiveLayer(); - KIGFX::COLOR4D currentColor = settings->GetLayerColor( currentLayer ); + KIGFX::COLOR4D currentColor = settings.GetLayerColor( currentLayer ); if( currentColor.a <= ALPHA_MAX - ALPHA_STEP ) { currentColor.a += ALPHA_STEP; - settings->SetLayerColor( currentLayer, currentColor ); - m_frame->GetGalCanvas()->GetView()->UpdateLayerColor( currentLayer ); + settings.SetLayerColor( currentLayer, currentColor ); + + KIGFX::VIEW* view = m_frame->GetGalCanvas()->GetView(); + view->GetPainter()->GetSettings()->ImportLegacyColors( &settings ); + view->UpdateLayerColor( currentLayer ); wxUpdateUIEvent dummy; static_cast( m_frame )->OnUpdateLayerAlpha( dummy ); @@ -516,17 +518,19 @@ int PCBNEW_CONTROL::LayerAlphaInc( const TOOL_EVENT& aEvent ) int PCBNEW_CONTROL::LayerAlphaDec( const TOOL_EVENT& aEvent ) { - auto painter = static_cast( getView()->GetPainter() ); - auto settings = painter->GetSettings(); + auto& settings = m_frame->Settings().Colors(); LAYER_NUM currentLayer = m_frame->GetActiveLayer(); - KIGFX::COLOR4D currentColor = settings->GetLayerColor( currentLayer ); + KIGFX::COLOR4D currentColor = settings.GetLayerColor( currentLayer ); if( currentColor.a >= ALPHA_MIN + ALPHA_STEP ) { currentColor.a -= ALPHA_STEP; - settings->SetLayerColor( currentLayer, currentColor ); - m_frame->GetGalCanvas()->GetView()->UpdateLayerColor( currentLayer ); + settings.SetLayerColor( currentLayer, currentColor ); + + KIGFX::VIEW* view = m_frame->GetGalCanvas()->GetView(); + view->GetPainter()->GetSettings()->ImportLegacyColors( &settings ); + view->UpdateLayerColor( currentLayer ); wxUpdateUIEvent dummy; static_cast( m_frame )->OnUpdateLayerAlpha( dummy );