solved: bug in libedit which crashes pcbnew when closing the footprint properties dialog

This commit is contained in:
charras 2008-09-21 13:32:33 +00:00
parent 26c607d9b9
commit 2ea76d3132
1 changed files with 17 additions and 9 deletions

View File

@ -171,6 +171,9 @@ void WinEDA_ModulePropertiesFrame::BuildPanelModuleProperties( bool FullOptions
wxStaticText* XPositionStatic = new wxStaticText(m_PanelProperties, -1, _("X")); wxStaticText* XPositionStatic = new wxStaticText(m_PanelProperties, -1, _("X"));
wxStaticText* YPositionStatic = new wxStaticText(m_PanelProperties, -1, _("Y")); wxStaticText* YPositionStatic = new wxStaticText(m_PanelProperties, -1, _("Y"));
m_ModPositionX = NULL;
m_ModPositionY = NULL;
/* Create a sizer for controls in the left column */ /* Create a sizer for controls in the left column */
PropLeftSizer = new wxBoxSizer( wxVERTICAL ); PropLeftSizer = new wxBoxSizer( wxVERTICAL );
m_PanelPropertiesBoxSizer->Add( PropLeftSizer, 0, wxGROW | wxALL, 5 ); m_PanelPropertiesBoxSizer->Add( PropLeftSizer, 0, wxGROW | wxALL, 5 );
@ -522,16 +525,20 @@ void WinEDA_ModulePropertiesFrame::OnOkClick( wxCommandEvent& event )
bool change_layer = FALSE; bool change_layer = FALSE;
wxPoint modpos; wxPoint modpos;
// Set Module Position if( m_DC )
{
m_Parent->DrawPanel->CursorOff( m_DC );
m_CurrentModule->Draw( m_Parent->DrawPanel, m_DC, GR_XOR );
}
// Set Module Position, if the dialog is called from the board editor
// if the dialog is called from the footprint editor, do nothing because the footprint is always in position 0,0
if ( m_ModPositionX && m_ModPositionY )
{
modpos.x = ReturnValueFromTextCtrl( *m_ModPositionX, PCB_INTERNAL_UNIT ); modpos.x = ReturnValueFromTextCtrl( *m_ModPositionX, PCB_INTERNAL_UNIT );
modpos.y = ReturnValueFromTextCtrl( *m_ModPositionY, PCB_INTERNAL_UNIT ); modpos.y = ReturnValueFromTextCtrl( *m_ModPositionY, PCB_INTERNAL_UNIT );
m_CurrentModule->SetPosition(modpos); m_CurrentModule->SetPosition(modpos);
}
if( m_DC )
m_Parent->DrawPanel->CursorOff( m_DC );
if( m_DC )
m_Parent->DrawPanel->CursorOff( m_DC );
if( m_OrientValue ) if( m_OrientValue )
{ {
@ -621,9 +628,10 @@ void WinEDA_ModulePropertiesFrame::OnOkClick( wxCommandEvent& event )
EndModal( 1 ); EndModal( 1 );
if( m_DC ) if( m_DC )
{
m_CurrentModule->Draw( m_Parent->DrawPanel, m_DC, GR_OR ); m_CurrentModule->Draw( m_Parent->DrawPanel, m_DC, GR_OR );
if( m_DC )
m_Parent->DrawPanel->CursorOn( m_DC ); m_Parent->DrawPanel->CursorOn( m_DC );
}
} }