From 26996d640f3837ecb4dd7bac28656e178138c794 Mon Sep 17 00:00:00 2001 From: Maciej Suminski Date: Wed, 9 Jul 2014 16:57:01 +0200 Subject: [PATCH] Fixed the Module viewer crash when there is no footprint loaded. --- common/gal/cairo/cairo_compositor.cpp | 3 +++ pcbnew/modview_frame.cpp | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/common/gal/cairo/cairo_compositor.cpp b/common/gal/cairo/cairo_compositor.cpp index e749c4db9a..5afa67d55a 100644 --- a/common/gal/cairo/cairo_compositor.cpp +++ b/common/gal/cairo/cairo_compositor.cpp @@ -55,6 +55,9 @@ void CAIRO_COMPOSITOR::Resize( unsigned int aWidth, unsigned int aHeight ) { clean(); + assert( m_width > 0 ); + assert( m_height > 0 ); + m_width = aWidth; m_height = aHeight; diff --git a/pcbnew/modview_frame.cpp b/pcbnew/modview_frame.cpp index 3404a5b349..d83e220234 100644 --- a/pcbnew/modview_frame.cpp +++ b/pcbnew/modview_frame.cpp @@ -168,11 +168,11 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent ReCreateLibraryList(); UpdateTitle(); - EDA_DRAW_FRAME* drawFrame = static_cast( aParent ); + PCB_BASE_FRAME* parentFrame = static_cast( Kiway().Player( FRAME_PCB, true ) ); // Create GAL canvas PCB_DRAW_PANEL_GAL* drawPanel = new PCB_DRAW_PANEL_GAL( this, -1, wxPoint( 0, 0 ), m_FrameSize, - drawFrame->GetGalCanvas()->GetBackend() ); + parentFrame->GetGalCanvas()->GetBackend() ); SetGalCanvas( drawPanel ); // Create the manager and dispatcher & route draw panel events to the dispatcher @@ -193,9 +193,11 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent id.SetLibNickname( getCurNickname() ); id.SetFootprintName( getCurFootprintName() ); GetBoard()->Add( loadFootprint( id ) ); - drawPanel->DisplayBoard( m_Pcb ); } + drawPanel->DisplayBoard( m_Pcb ); + updateView(); + if( m_canvas ) m_canvas->SetAcceleratorTable( table ); @@ -273,7 +275,7 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent Show( true ); - UseGalCanvas( drawFrame->IsGalCanvasActive() ); + UseGalCanvas( parentFrame->IsGalCanvasActive() ); }