From be2f22d497dde7dc8f27c571c0a09a289ba21518 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Sat, 9 Apr 2011 12:52:14 +0200 Subject: [PATCH] Testing minor enhancements and fixes --- eeschema/getpart.cpp | 7 +++++-- eeschema/viewlib_frame.cpp | 20 ++++++++------------ pcbnew/files.cpp | 2 +- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/eeschema/getpart.cpp b/eeschema/getpart.cpp index 40e46a1e4b..0c326ae63c 100644 --- a/eeschema/getpart.cpp +++ b/eeschema/getpart.cpp @@ -70,6 +70,7 @@ static void abortMoveComponent( EDA_DRAW_PANEL* aPanel, wxDC* aDC ) wxString SCH_EDIT_FRAME::SelectFromLibBrowser( void ) { wxSemaphore semaphore( 0, 1 ); + wxString cmpname; /* Close the current Lib browser, if open, and open a new one, in "modal" mode */ if( m_ViewlibFrame ) @@ -80,7 +81,6 @@ wxString SCH_EDIT_FRAME::SelectFromLibBrowser( void ) m_ViewlibFrame = new LIB_VIEW_FRAME( this, NULL, &semaphore ); m_ViewlibFrame->AdjustScrollBars( wxPoint( 0 , 0 ) ); - // Show the library viewer frame until it is closed while( semaphore.TryWait() == wxSEMA_BUSY ) // Wait for viewer closing event { @@ -88,7 +88,10 @@ wxString SCH_EDIT_FRAME::SelectFromLibBrowser( void ) wxMilliSleep( 50 ); } - return m_ViewlibFrame->GetSelectedComponent(); + cmpname = m_ViewlibFrame->GetSelectedComponent(); + m_ViewlibFrame->Destroy(); + + return cmpname; } diff --git a/eeschema/viewlib_frame.cpp b/eeschema/viewlib_frame.cpp index 266daf4f7f..286d0383de 100644 --- a/eeschema/viewlib_frame.cpp +++ b/eeschema/viewlib_frame.cpp @@ -103,7 +103,7 @@ LIB_VIEW_FRAME::LIB_VIEW_FRAME( wxWindow* father, CMP_LIBRARY* Library, wxSemaph m_exportToEeschemaCmpName.Empty(); if( m_Semaphore ) - SetWindowStyle( GetWindowStyle() | wxFRAME_FLOAT_ON_PARENT ); + MakeModal(true); SetScreen( new SCH_SCREEN() ); GetScreen()->m_Center = true; // Center coordinate origins on screen. @@ -247,20 +247,16 @@ void LIB_VIEW_FRAME::OnCloseWindow( wxCloseEvent& Event ) { SaveSettings(); - if( m_Semaphore ) - m_Semaphore->Post(); - - Destroy(); - if( m_Semaphore ) { - // Raise EESchema above all other windows when the library viewer is being used - // to select a component. - wxWindow* parent = GetParent(); - - if( parent ) - parent->Raise(); + m_Semaphore->Post(); + MakeModal(false); + // This window will be destroyed by the calling function, + // to avoid side effects } + + else + Destroy(); } diff --git a/pcbnew/files.cpp b/pcbnew/files.cpp index 8a5a7aca4a..1c6570aa28 100644 --- a/pcbnew/files.cpp +++ b/pcbnew/files.cpp @@ -281,9 +281,9 @@ this file again." ) ); // Display the loaded board: Zoom_Automatique( false ); - wxSafeYield(); // Needed if we want to see the board now. // Compile ratsnest and displays net info + wxBusyCursor dummy; // Displays an Hourglass while building connectivity Compile_Ratsnest( NULL, true ); GetBoard()->DisplayInfo( this );