From cabec6dbeb447cbcd4a278065febbe94fbd0c55a Mon Sep 17 00:00:00 2001 From: Maciej Suminski Date: Wed, 9 Jul 2014 10:57:32 +0200 Subject: [PATCH] Fixed switching between GAL canvases error. --- pcbnew/pcbframe.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/pcbnew/pcbframe.cpp b/pcbnew/pcbframe.cpp index 0add833fc1..272d951675 100644 --- a/pcbnew/pcbframe.cpp +++ b/pcbnew/pcbframe.cpp @@ -489,12 +489,15 @@ void PCB_EDIT_FRAME::SetBoard( BOARD* aBoard ) if( IsGalCanvasActive() ) { - static_cast( GetGalCanvas() )->DisplayBoard( aBoard ); + PCB_DRAW_PANEL_GAL* drawPanel = static_cast( GetGalCanvas() ); + + drawPanel->DisplayBoard( aBoard ); aBoard->GetRatsnest()->Recalculate(); // Prepare worksheet template - KIGFX::WORKSHEET_VIEWITEM* worksheet = new KIGFX::WORKSHEET_VIEWITEM( &aBoard->GetPageSettings(), - &aBoard->GetTitleBlock() ); + KIGFX::WORKSHEET_VIEWITEM* worksheet; + worksheet = new KIGFX::WORKSHEET_VIEWITEM( &aBoard->GetPageSettings(), + &aBoard->GetTitleBlock() ); worksheet->SetSheetName( std::string( GetScreenDesc().mb_str() ) ); BASE_SCREEN* screen = GetScreen(); @@ -506,13 +509,13 @@ void PCB_EDIT_FRAME::SetBoard( BOARD* aBoard ) } // PCB_DRAW_PANEL_GAL takes ownership of the worksheet - static_cast( GetGalCanvas() )->SetWorksheet( worksheet ); + drawPanel->SetWorksheet( worksheet ); // update the tool manager with the new board and its view. if( m_toolManager ) { - m_toolManager->SetEnvironment( aBoard, GetGalCanvas()->GetView(), - GetGalCanvas()->GetViewControls(), this ); + m_toolManager->SetEnvironment( aBoard, drawPanel->GetView(), + drawPanel->GetViewControls(), this ); m_toolManager->ResetTools( TOOL_BASE::MODEL_RELOAD ); } } @@ -638,7 +641,7 @@ void PCB_EDIT_FRAME::UseGalCanvas( bool aEnable ) if( aEnable ) { SetBoard( m_Pcb ); - + GetGalCanvas()->GetView()->RecacheAllItems( true ); GetGalCanvas()->StartDrawing(); } }