From 8ffad4b375e810292cee2b9577c162bcc9272165 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Fri, 4 Sep 2020 10:57:33 +0100 Subject: [PATCH] Only override color if net or netclass color is set. Fixes https://gitlab.com/kicad/code/kicad/issues/5368 --- pcbnew/pcb_painter.cpp | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/pcbnew/pcb_painter.cpp b/pcbnew/pcb_painter.cpp index 8c5f2e50ab..87ea2feec6 100644 --- a/pcbnew/pcb_painter.cpp +++ b/pcbnew/pcb_painter.cpp @@ -268,23 +268,38 @@ COLOR4D PCB_RENDER_SETTINGS::GetColor( const VIEW_ITEM* aItem, int aLayer ) cons // Apply net color overrides if( conItem && m_netColorMode == NET_COLOR_MODE::ALL && IsNetCopperLayer( aLayer ) ) { - if( m_netColors.count( netCode ) ) - color = m_netColors.at( netCode ); - else if( m_netclassColors.count( conItem->GetNetClassName() ) ) - color = m_netclassColors.at( conItem->GetNetClassName() ); + COLOR4D netColor = COLOR4D::UNSPECIFIED; - if( item->IsSelected() ) + auto ii = m_netColors.find( netCode ); + + if( ii != m_netColors.end() ) + netColor = ii->second; + + if( netColor == COLOR4D::UNSPECIFIED ) { - // Selection brightening overrides highlighting - color.Brighten( m_selectFactor ); + auto jj = m_netclassColors.find( conItem->GetNetClassName() ); + + if( jj != m_netclassColors.end() ) + netColor = jj->second; } - else if( m_highlightEnabled ) + + if( netColor != COLOR4D::UNSPECIFIED ) { - // Highlight brightens objects on all layers and darkens everything else for contrast - if( highlighted ) - color.Brighten( m_highlightFactor ); - else - color.Darken( 1.0 - m_highlightFactor ); + if( item->IsSelected() ) + { + // Selection brightening overrides highlighting + netColor.Brighten( m_selectFactor ); + } + else if( m_highlightEnabled ) + { + // Highlight brightens objects on all layers and darkens everything else for contrast + if( highlighted ) + netColor.Brighten( m_highlightFactor ); + else + netColor.Darken( 1.0 - m_highlightFactor ); + } + + color = netColor; } } else if( !item->IsSelected() && m_highlightEnabled )