Kicad manager: fix an issue when starting eeschema from its button: if the library editor was previously running, and if the quasimodal field editor dialog was called, eeschema dis not start on Windows, or started but dis not load the schematic project on Linux.

Enhancement: if a tool is running but is iconized, clicking on its button bring the window on screen.
This commit is contained in:
jean-pierre charras 2014-09-16 10:34:51 +02:00
parent 3a5097f0d7
commit fe4c01a6f2
2 changed files with 30 additions and 1 deletions

View File

@ -106,7 +106,7 @@ private:
void setRowItem( int aFieldNdx, const SCH_FIELD& aField ); void setRowItem( int aFieldNdx, const SCH_FIELD& aField );
// event handlers // event handlers
void OnCloseDialog( wxCloseEvent& event ); void OnCloseDialog( wxCloseEvent& event );
void OnListItemDeselected( wxListEvent& event ); void OnListItemDeselected( wxListEvent& event );
void OnListItemSelected( wxListEvent& event ); void OnListItemSelected( wxListEvent& event );
void OnCancelButtonClick( wxCommandEvent& event ); void OnCancelButtonClick( wxCommandEvent& event );

View File

@ -278,12 +278,25 @@ void KICAD_MANAGER_FRAME::Execute( wxWindow* frame, const wxString& execFile,
void KICAD_MANAGER_FRAME::RunEeschema( const wxString& aProjectSchematicFileName ) void KICAD_MANAGER_FRAME::RunEeschema( const wxString& aProjectSchematicFileName )
{ {
KIWAY_PLAYER* frame = Kiway.Player( FRAME_SCH, false ); KIWAY_PLAYER* frame = Kiway.Player( FRAME_SCH, false );
// Please: note: DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::initBuffers() calls
// Kiway.Player( FRAME_SCH, true )
// therefore, the schematic editor is sometimes running, but the schematic project
// is not loaded, if the library editor was called, and the dialog field editor was used.
if( !frame ) if( !frame )
{ {
frame = Kiway.Player( FRAME_SCH, true ); frame = Kiway.Player( FRAME_SCH, true );
}
if( !frame->IsShown() ) // the frame exists, but no project loaded.
{
frame->OpenProjectFiles( std::vector<wxString>( 1, aProjectSchematicFileName ) ); frame->OpenProjectFiles( std::vector<wxString>( 1, aProjectSchematicFileName ) );
frame->Show( true ); frame->Show( true );
} }
if( frame->IsIconized() )
frame->Iconize( false );
frame->Raise(); frame->Raise();
} }
@ -301,12 +314,17 @@ void KICAD_MANAGER_FRAME::OnRunEeschema( wxCommandEvent& event )
void KICAD_MANAGER_FRAME::OnRunSchLibEditor( wxCommandEvent& event ) void KICAD_MANAGER_FRAME::OnRunSchLibEditor( wxCommandEvent& event )
{ {
KIWAY_PLAYER* frame = Kiway.Player( FRAME_SCH_LIB_EDITOR, false ); KIWAY_PLAYER* frame = Kiway.Player( FRAME_SCH_LIB_EDITOR, false );
if( !frame ) if( !frame )
{ {
frame = Kiway.Player( FRAME_SCH_LIB_EDITOR, true ); frame = Kiway.Player( FRAME_SCH_LIB_EDITOR, true );
// frame->OpenProjectFiles( std::vector<wxString>( 1, aProjectSchematicFileName ) ); // frame->OpenProjectFiles( std::vector<wxString>( 1, aProjectSchematicFileName ) );
frame->Show( true ); frame->Show( true );
} }
if( frame->IsIconized() )
frame->Iconize( false );
frame->Raise(); frame->Raise();
} }
@ -331,6 +349,10 @@ void KICAD_MANAGER_FRAME::RunPcbNew( const wxString& aProjectBoardFileName )
} }
#endif #endif
if( frame->IsIconized() )
frame->Iconize( false );
frame->Raise(); frame->Raise();
} }
@ -358,6 +380,9 @@ void KICAD_MANAGER_FRAME::OnRunPcbFpEditor( wxCommandEvent& event )
frame->Show( true ); frame->Show( true );
} }
if( frame->IsIconized() )
frame->Iconize( false );
frame->Raise(); frame->Raise();
} }
@ -392,6 +417,10 @@ void KICAD_MANAGER_FRAME::OnRunCvpcb( wxCommandEvent& event )
frame->OpenProjectFiles( std::vector<wxString>( 1, fn.GetFullPath() ) ); frame->OpenProjectFiles( std::vector<wxString>( 1, fn.GetFullPath() ) );
frame->Show( true ); frame->Show( true );
} }
if( frame->IsIconized() )
frame->Iconize( false );
frame->Raise(); frame->Raise();
} }