Browse Source

Move NC pin logic so we set it before we need it.

Also fixes drawing the dangling symbol in the Pin Properties dialog
and when printing.

Fixes https://gitlab.com/kicad/code/kicad/issues/9962
6.0.7
Jeff Young 4 years ago
parent
commit
653c7b78d7
  1. 4
      eeschema/dialogs/dialog_pin_properties.cpp
  2. 10
      eeschema/lib_pin.cpp
  3. 2
      eeschema/sch_painter.cpp
  4. 9
      eeschema/sch_pin.h

4
eeschema/dialogs/dialog_pin_properties.cpp

@ -377,8 +377,8 @@ void DIALOG_PIN_PROPERTIES::OnPaintShowPanel( wxPaintEvent& event )
double yscale = (double) dc_size.y / bBox.GetHeight();
double scale = std::min( xscale, yscale );
// Give a 10% margin and limit to no more than 100% zoom
scale = std::min( scale * 0.9, 1.0 );
// Give a 7% margin (each side) and limit to no more than 100% zoom
scale = std::min( scale * 0.85, 1.0 );
dc.SetUserScale( scale, scale );
GRResetPenAndBrush( &dc );

10
eeschema/lib_pin.cpp

@ -195,9 +195,9 @@ void LIB_PIN::print( const RENDER_SETTINGS* aSettings, const wxPoint& aOffset, v
const TRANSFORM& aTransform )
{
LIB_SYMBOL_OPTIONS* opts = (LIB_SYMBOL_OPTIONS*) aData;
bool drawHiddenFields = opts ? opts->draw_hidden_fields : false;
bool showPinType = opts ? opts->show_elec_type : false;
bool show_connect_point = opts ? opts->show_connect_point : false;
bool drawHiddenFields = opts ? opts->draw_hidden_fields : false;
bool showPinType = opts ? opts->show_elec_type : false;
bool show_connect_point = opts ? opts->show_connect_point : false;
LIB_SYMBOL* part = GetParent();
@ -217,7 +217,9 @@ void LIB_PIN::print( const RENDER_SETTINGS* aSettings, const wxPoint& aOffset, v
if( showPinType )
printPinElectricalTypeName( aSettings, pos1, orient );
if( show_connect_point )
if( show_connect_point
&& m_type != ELECTRICAL_PINTYPE::PT_NC
&& m_type != ELECTRICAL_PINTYPE::PT_NIC )
{
wxDC* DC = aSettings->GetPrintDC();
COLOR4D color = aSettings->GetLayerColor( IsVisible() ? LAYER_PIN : LAYER_HIDDEN );

2
eeschema/sch_painter.cpp

@ -842,8 +842,6 @@ void SCH_PAINTER::draw( LIB_PIN *aPin, int aLayer )
pos + VECTOR2D( 1, 1 ) * TARGET_PIN_RADIUS );
m_gal->DrawLine( pos + VECTOR2D( 1, -1 ) * TARGET_PIN_RADIUS ,
pos + VECTOR2D( -1, 1 ) * TARGET_PIN_RADIUS );
aPin->ClearFlags( IS_DANGLING ); // PIN_NC pin type is always not connected and dangling.
}
else
{

9
eeschema/sch_pin.h

@ -88,7 +88,14 @@ public:
bool IsConnectable() const override { return true; }
bool IsDangling() const override { return m_isDangling; }
bool IsDangling() const override
{
if( GetType() == ELECTRICAL_PINTYPE::PT_NC || GetType() == ELECTRICAL_PINTYPE::PT_NIC )
return false;
return m_isDangling;
}
void SetIsDangling( bool isDangling ) { m_isDangling = isDangling; }
bool IsPointClickableAnchor( const wxPoint& aPos ) const override

Loading…
Cancel
Save