diff --git a/common/plotters/plotter.cpp b/common/plotters/plotter.cpp index c24b0123c0..b6d6bb6bb4 100644 --- a/common/plotters/plotter.cpp +++ b/common/plotters/plotter.cpp @@ -63,6 +63,7 @@ PLOTTER::PLOTTER( ) m_mirrorIsHorizontal = true; m_yaxisReversed = false; outputFile = 0; + m_colors = nullptr; colorMode = false; // Starts as a BW plot negativeMode = false; // Temporary init to avoid not initialized vars, will be set later diff --git a/eeschema/dialogs/dialog_choose_component.cpp b/eeschema/dialogs/dialog_choose_component.cpp index f66030ffdd..451376356b 100644 --- a/eeschema/dialogs/dialog_choose_component.cpp +++ b/eeschema/dialogs/dialog_choose_component.cpp @@ -143,7 +143,6 @@ DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT( SCH_BASE_FRAME* aParent, const Layout(); EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() ); - wxASSERT( cfg ); if( cfg ) { @@ -212,6 +211,8 @@ DIALOG_CHOOSE_COMPONENT::~DIALOG_CHOOSE_COMPONENT() auto cfg = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() ); + wxCHECK( cfg, /*void*/ ); + cfg->m_SymChooserPanel.width = GetSize().x; cfg->m_SymChooserPanel.height = GetSize().y; @@ -263,12 +264,12 @@ wxPanel* DIALOG_CHOOSE_COMPONENT::ConstructRightPanel( wxWindow* aParent ) m_keepSymbol = new wxCheckBox( panel, 1000, _("Multi-Symbol Placement"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT ); - m_keepSymbol->SetValue( cfg->m_SymChooserPanel.keep_symbol ); + m_keepSymbol->SetValue( cfg ? cfg->m_SymChooserPanel.keep_symbol : true ); m_keepSymbol->SetToolTip( _( "Place multiple copies of the symbol." ) ); m_useUnits = new wxCheckBox( panel, 1000, _("Place all units"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT ); - m_useUnits->SetValue( cfg->m_SymChooserPanel.place_all_units ); + m_useUnits->SetValue( cfg ? cfg->m_SymChooserPanel.place_all_units : true ); m_useUnits->SetToolTip( _( "Sequentially place all units of the symbol." ) ); auto fgSizer = new wxFlexGridSizer( 0, 2, 0, 1 ); diff --git a/eeschema/dialogs/dialog_edit_component_in_schematic.cpp b/eeschema/dialogs/dialog_edit_component_in_schematic.cpp index 2b04d7aa20..704c5b445e 100644 --- a/eeschema/dialogs/dialog_edit_component_in_schematic.cpp +++ b/eeschema/dialogs/dialog_edit_component_in_schematic.cpp @@ -78,7 +78,10 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( SCH_EDIT // Show/hide columns according to user's preference auto cfg = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() ); - m_shownColumns = cfg->m_Appearance.edit_component_visible_columns; + + if( cfg ) + m_shownColumns = cfg->m_Appearance.edit_component_visible_columns; + m_grid->ShowHideColumns( m_shownColumns ); wxToolTip::Enable( true ); @@ -110,7 +113,9 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( SCH_EDIT DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::~DIALOG_EDIT_COMPONENT_IN_SCHEMATIC() { auto cfg = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() ); - cfg->m_Appearance.edit_component_visible_columns = m_grid->GetShownColumns(); + + if( cfg ) + cfg->m_Appearance.edit_component_visible_columns = m_grid->GetShownColumns(); // Prevents crash bug in wxGrid's d'tor m_grid->DestroyTable( m_fields ); diff --git a/eeschema/dialogs/dialog_fields_editor_global.cpp b/eeschema/dialogs/dialog_fields_editor_global.cpp index 40db962dd5..f5b8031ab0 100644 --- a/eeschema/dialogs/dialog_fields_editor_global.cpp +++ b/eeschema/dialogs/dialog_fields_editor_global.cpp @@ -932,7 +932,8 @@ void DIALOG_FIELDS_EDITOR_GLOBAL::LoadFieldNames() // Force References to always be shown auto cfg = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() ); - wxASSERT( cfg ); + wxCHECK( cfg, /*void*/ ); + cfg->m_FieldEditorPanel.fields_show["Reference"] = true; // *DO NOT* use translated mandatory field names: diff --git a/eeschema/dialogs/dialog_rescue_each.cpp b/eeschema/dialogs/dialog_rescue_each.cpp index 1918aa6177..7fc56e3c33 100644 --- a/eeschema/dialogs/dialog_rescue_each.cpp +++ b/eeschema/dialogs/dialog_rescue_each.cpp @@ -293,7 +293,10 @@ void DIALOG_RESCUE_EACH::OnNeverShowClick( wxCommandEvent& aEvent ) if( resp == wxID_YES ) { auto cfg = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() ); - cfg->m_RescueNeverShow = true; + + if( cfg ) + cfg->m_RescueNeverShow = true; + m_Rescuer->m_chosen_candidates.clear(); Close(); } diff --git a/eeschema/libedit/lib_edit_frame.cpp b/eeschema/libedit/lib_edit_frame.cpp index e8f194a3b1..f9cc1eaa07 100644 --- a/eeschema/libedit/lib_edit_frame.cpp +++ b/eeschema/libedit/lib_edit_frame.cpp @@ -224,15 +224,18 @@ void LIB_EDIT_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg ) auto cfg = dynamic_cast<LIBEDIT_SETTINGS*>( aCfg ); wxASSERT( cfg ); - SetDefaultLineThickness( Mils2iu( cfg->m_Defaults.line_width ) ); - SetDefaultPinLength( Mils2iu( cfg->m_Defaults.pin_length ) ); - m_textPinNameDefaultSize = Mils2iu( cfg->m_Defaults.pin_name_size ); - m_textPinNumDefaultSize = Mils2iu( cfg->m_Defaults.pin_num_size ); - SetRepeatDeltaLabel( cfg->m_Repeat.label_delta ); - SetRepeatPinStep( Mils2iu( cfg->m_Repeat.pin_step ) ); - SetRepeatStep( wxPoint( cfg->m_Repeat.x_step, cfg->m_Repeat.y_step ) ); - m_showPinElectricalTypeName = cfg->m_ShowPinElectricalType; - m_defaultLibWidth = cfg->m_LibWidth; + if( cfg ) + { + SetDefaultLineThickness( Mils2iu( cfg->m_Defaults.line_width ) ); + SetDefaultPinLength( Mils2iu( cfg->m_Defaults.pin_length ) ); + m_textPinNameDefaultSize = Mils2iu( cfg->m_Defaults.pin_name_size ); + m_textPinNumDefaultSize = Mils2iu( cfg->m_Defaults.pin_num_size ); + SetRepeatDeltaLabel( cfg->m_Repeat.label_delta ); + SetRepeatPinStep( Mils2iu( cfg->m_Repeat.pin_step ) ); + SetRepeatStep( wxPoint( cfg->m_Repeat.x_step, cfg->m_Repeat.y_step ) ); + m_showPinElectricalTypeName = cfg->m_ShowPinElectricalType; + m_defaultLibWidth = cfg->m_LibWidth; + } // TODO(JE) does libedit need its own TemplateFieldNames? auto ee_settings = Pgm().GetSettingsManager().GetAppSettings<EESCHEMA_SETTINGS>(); diff --git a/eeschema/sch_field.cpp b/eeschema/sch_field.cpp index 731a908548..02b2200bd5 100644 --- a/eeschema/sch_field.cpp +++ b/eeschema/sch_field.cpp @@ -525,7 +525,8 @@ void SCH_FIELD::SetPosition( const wxPoint& aPosition ) SCH_COMPONENT* parentComponent = static_cast<SCH_COMPONENT*>( m_Parent ); wxPoint relativePos = aPosition - parentComponent->GetPosition(); - parentComponent->GetTransform().InverseTransform().TransformCoordinate( relativePos ); + relativePos = parentComponent->GetTransform(). + InverseTransform().TransformCoordinate( relativePos ); SetTextPos( relativePos + parentComponent->GetPosition() ); } @@ -541,7 +542,7 @@ wxPoint SCH_FIELD::GetPosition() const SCH_COMPONENT* parentComponent = static_cast<SCH_COMPONENT*>( m_Parent ); wxPoint relativePos = GetTextPos() - parentComponent->GetPosition(); - parentComponent->GetTransform().TransformCoordinate( relativePos ); + relativePos = parentComponent->GetTransform().TransformCoordinate( relativePos ); return relativePos + parentComponent->GetPosition(); } diff --git a/kicad/kicad_manager_frame.cpp b/kicad/kicad_manager_frame.cpp index f2bb8bbb77..7cd8f1eb45 100644 --- a/kicad/kicad_manager_frame.cpp +++ b/kicad/kicad_manager_frame.cpp @@ -504,6 +504,9 @@ void KICAD_MANAGER_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg ) EDA_BASE_FRAME::LoadSettings( aCfg ); auto settings = dynamic_cast<KICAD_SETTINGS*>( aCfg ); + + wxCHECK( settings, /*void*/); + m_leftWinWidth = settings->m_LeftWinWidth; } @@ -513,6 +516,9 @@ void KICAD_MANAGER_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg ) EDA_BASE_FRAME::SaveSettings( aCfg ); auto settings = dynamic_cast<KICAD_SETTINGS*>( aCfg ); + + wxCHECK( settings, /*void*/); + settings->m_LeftWinWidth = m_leftWin->GetSize().x; } diff --git a/pcbnew/class_zone.cpp b/pcbnew/class_zone.cpp index bb626f8cba..6d46524f93 100644 --- a/pcbnew/class_zone.cpp +++ b/pcbnew/class_zone.cpp @@ -182,6 +182,8 @@ void ZONE_CONTAINER::initDataFromSrcInCopyCtor( const ZONE_CONTAINER& aZone ) // (has meaning only for copper zones) m_netinfo = aZone.m_netinfo; + m_area = aZone.m_area; + SetNeedRefill( aZone.NeedRefill() ); } diff --git a/pcbnew/router/pns_kicad_iface.cpp b/pcbnew/router/pns_kicad_iface.cpp index fd911e909c..ea39fdb2f2 100644 --- a/pcbnew/router/pns_kicad_iface.cpp +++ b/pcbnew/router/pns_kicad_iface.cpp @@ -532,6 +532,7 @@ PNS_KICAD_IFACE_BASE::PNS_KICAD_IFACE_BASE() m_board = nullptr; m_router = nullptr; m_debugDecorator = nullptr; + m_router = nullptr; } @@ -1458,7 +1459,7 @@ void PNS_KICAD_IFACE::SetView( KIGFX::VIEW* aView ) m_view = aView; m_previewItems = new KIGFX::VIEW_GROUP( m_view ); m_previewItems->SetLayer( LAYER_SELECT_OVERLAY ) ; - + if(m_view) m_view->Add( m_previewItems );