Fix crash with opening find dialog twice.
Fixes: lp:1830224 * https://bugs.launchpad.net/kicad/+bug/1830224
This commit is contained in:
parent
ebd8c44eee
commit
39bb4b639f
|
@ -632,11 +632,14 @@ void SCH_EDIT_FRAME::OnCloseWindow( wxCloseEvent& aEvent )
|
||||||
{
|
{
|
||||||
m_findStringHistoryList = m_findReplaceDialog->GetFindEntries();
|
m_findStringHistoryList = m_findReplaceDialog->GetFindEntries();
|
||||||
m_replaceStringHistoryList = m_findReplaceDialog->GetReplaceEntries();
|
m_replaceStringHistoryList = m_findReplaceDialog->GetReplaceEntries();
|
||||||
m_findReplaceDialog->Destroy();
|
|
||||||
m_findReplaceDialog = nullptr;
|
|
||||||
|
|
||||||
m_findReplaceStatusPopup->Destroy();
|
m_findReplaceStatusPopup->Destroy();
|
||||||
m_findReplaceStatusPopup = nullptr;
|
m_findReplaceStatusPopup = nullptr;
|
||||||
|
|
||||||
|
// Must destroy statusPopup first as it holds a pointer to the dialog
|
||||||
|
|
||||||
|
m_findReplaceDialog->Destroy();
|
||||||
|
m_findReplaceDialog = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
SCH_SCREENS screens;
|
SCH_SCREENS screens;
|
||||||
|
@ -834,19 +837,16 @@ wxFindReplaceData* SCH_EDIT_FRAME::GetFindReplaceData()
|
||||||
|
|
||||||
void SCH_EDIT_FRAME::ShowFindReplaceDialog( bool aReplace )
|
void SCH_EDIT_FRAME::ShowFindReplaceDialog( bool aReplace )
|
||||||
{
|
{
|
||||||
|
if( m_findReplaceStatusPopup )
|
||||||
|
m_findReplaceStatusPopup->Destroy();
|
||||||
|
|
||||||
|
// Must destroy statup popup first as it holds a pointer to the dialog
|
||||||
|
|
||||||
if( m_findReplaceDialog )
|
if( m_findReplaceDialog )
|
||||||
{
|
m_findReplaceDialog->Destroy();
|
||||||
delete m_findReplaceDialog;
|
|
||||||
delete m_findReplaceStatusPopup;
|
|
||||||
}
|
|
||||||
|
|
||||||
int style = 0;
|
m_findReplaceDialog= new DIALOG_SCH_FIND( this, m_findReplaceData, wxDefaultPosition,
|
||||||
|
wxDefaultSize, aReplace ? wxFR_REPLACEDIALOG : 0 );
|
||||||
if( aReplace )
|
|
||||||
style = wxFR_REPLACEDIALOG;
|
|
||||||
|
|
||||||
m_findReplaceDialog = new DIALOG_SCH_FIND( this, m_findReplaceData, wxDefaultPosition,
|
|
||||||
wxDefaultSize, style );
|
|
||||||
|
|
||||||
m_findReplaceDialog->SetFindEntries( m_findStringHistoryList );
|
m_findReplaceDialog->SetFindEntries( m_findStringHistoryList );
|
||||||
m_findReplaceDialog->SetReplaceEntries( m_replaceStringHistoryList );
|
m_findReplaceDialog->SetReplaceEntries( m_replaceStringHistoryList );
|
||||||
|
@ -877,8 +877,14 @@ void SCH_EDIT_FRAME::OnFindDialogClose()
|
||||||
{
|
{
|
||||||
m_findStringHistoryList = m_findReplaceDialog->GetFindEntries();
|
m_findStringHistoryList = m_findReplaceDialog->GetFindEntries();
|
||||||
m_replaceStringHistoryList = m_findReplaceDialog->GetReplaceEntries();
|
m_replaceStringHistoryList = m_findReplaceDialog->GetReplaceEntries();
|
||||||
|
|
||||||
|
m_findReplaceStatusPopup->Destroy();
|
||||||
|
m_findReplaceStatusPopup = nullptr;
|
||||||
|
|
||||||
|
// Must destroy statusPopup first as it holds a pointer to the dialog
|
||||||
|
|
||||||
m_findReplaceDialog->Destroy();
|
m_findReplaceDialog->Destroy();
|
||||||
m_findReplaceDialog = NULL;
|
m_findReplaceDialog = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue