From a5972e7b48ca9a0da56f8e8fe548bb70a8863240 Mon Sep 17 00:00:00 2001 From: Maciej Suminski Date: Fri, 26 Dec 2014 18:07:45 +0100 Subject: [PATCH] Fixed crash on toggling the pad outline display mode in CvPcb. --- pcbnew/basepcbframe.cpp | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/pcbnew/basepcbframe.cpp b/pcbnew/basepcbframe.cpp index be3ee835a1..14bf5ab89b 100644 --- a/pcbnew/basepcbframe.cpp +++ b/pcbnew/basepcbframe.cpp @@ -433,20 +433,24 @@ void PCB_BASE_FRAME::OnTogglePolarCoords( wxCommandEvent& aEvent ) void PCB_BASE_FRAME::OnTogglePadDrawMode( wxCommandEvent& aEvent ) { m_DisplayPadFill = DisplayOpt.DisplayPadFill = !m_DisplayPadFill; + EDA_DRAW_PANEL_GAL* gal = GetGalCanvas(); - // Apply new display options to the GAL canvas - KIGFX::PCB_PAINTER* painter = - static_cast ( GetGalCanvas()->GetView()->GetPainter() ); - KIGFX::PCB_RENDER_SETTINGS* settings = - static_cast ( painter->GetSettings() ); - settings->LoadDisplayOptions( DisplayOpt ); - - // Update pads - BOARD* board = GetBoard(); - for( MODULE* module = board->m_Modules; module; module = module->Next() ) + if( gal ) { - for( D_PAD* pad = module->Pads(); pad; pad = pad->Next() ) - pad->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY ); + // Apply new display options to the GAL canvas + KIGFX::PCB_PAINTER* painter = + static_cast ( gal->GetView()->GetPainter() ); + KIGFX::PCB_RENDER_SETTINGS* settings = + static_cast ( painter->GetSettings() ); + settings->LoadDisplayOptions( DisplayOpt ); + + // Update pads + BOARD* board = GetBoard(); + for( MODULE* module = board->m_Modules; module; module = module->Next() ) + { + for( D_PAD* pad = module->Pads(); pad; pad = pad->Next() ) + pad->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY ); + } } m_canvas->Refresh();