diff --git a/cvpcb/class_components_listbox.cpp b/cvpcb/class_components_listbox.cpp index 2c09c5215d..9d0a7a721b 100644 --- a/cvpcb/class_components_listbox.cpp +++ b/cvpcb/class_components_listbox.cpp @@ -17,7 +17,7 @@ COMPONENTS_LISTBOX::COMPONENTS_LISTBOX( CVPCB_MAINFRAME* parent, wxWindowID id, const wxPoint& loc, const wxSize& size, int nbitems, wxString choice[] ) : - ITEMS_LISTBOX_BASE( parent, id, loc, size ) + ITEMS_LISTBOX_BASE( parent, id, loc, size, ~wxLC_SINGLE_SEL) { } diff --git a/cvpcb/cvstruct.h b/cvpcb/cvstruct.h index c95bfde9fe..5d7ed48187 100644 --- a/cvpcb/cvstruct.h +++ b/cvpcb/cvstruct.h @@ -18,7 +18,8 @@ class ITEMS_LISTBOX_BASE : public wxListView { public: ITEMS_LISTBOX_BASE( CVPCB_MAINFRAME* aParent, wxWindowID aId, - const wxPoint& aLocation, const wxSize& aSize ); + const wxPoint& aLocation, const wxSize& aSize, + long aStyle = wxLC_SINGLE_SEL); ~ITEMS_LISTBOX_BASE(); diff --git a/cvpcb/listboxes.cpp b/cvpcb/listboxes.cpp index a3b432c24d..65393727c3 100644 --- a/cvpcb/listboxes.cpp +++ b/cvpcb/listboxes.cpp @@ -19,11 +19,12 @@ ******************************************************************************/ #define LISTB_STYLE wxSUNKEN_BORDER | wxLC_NO_HEADER | \ - wxLC_SINGLE_SEL | wxLC_REPORT | wxLC_VIRTUAL + wxLC_REPORT | wxLC_VIRTUAL ITEMS_LISTBOX_BASE::ITEMS_LISTBOX_BASE( CVPCB_MAINFRAME* aParent, wxWindowID aId, - const wxPoint& aLocation, const wxSize& aSize ) : - wxListView( aParent, aId, aLocation, aSize, LISTB_STYLE ) + const wxPoint& aLocation, const wxSize& aSize, + long aStyle) : + wxListView( aParent, aId, aLocation, aSize, LISTB_STYLE | aStyle ) { InsertColumn( 0, wxEmptyString ); SetColumnWidth( 0, wxLIST_AUTOSIZE ); diff --git a/cvpcb/readwrite_dlgs.cpp b/cvpcb/readwrite_dlgs.cpp index 30f1c46a34..026b0ae77d 100644 --- a/cvpcb/readwrite_dlgs.cpp +++ b/cvpcb/readwrite_dlgs.cpp @@ -39,53 +39,58 @@ #define titleComponentLibErr _( "Component Library Error" ) - void CVPCB_MAINFRAME::SetNewPkg( const wxString& aFootprintName ) { COMPONENT_INFO* Component; bool isUndefined = false; int NumCmp; + int LastCmp; wxString msg; if( m_components.empty() ) return; - NumCmp = m_ListCmp->GetSelection(); - - if( NumCmp < 0 ) + if(m_ListCmp->GetFirstSelected() < 0) { NumCmp = 0; m_ListCmp->SetSelection( NumCmp, true ); } - Component = &m_components[ NumCmp ]; + while( (NumCmp = m_ListCmp->GetFirstSelected() ) != -1) + { + Component = &m_components[NumCmp]; - if( Component == NULL ) - return; + if( Component == NULL ) + return; - isUndefined = Component->m_Footprint.IsEmpty(); + isUndefined = Component->m_Footprint.IsEmpty(); - Component->m_Footprint = aFootprintName; + Component->m_Footprint = aFootprintName; + + msg.Printf( CMP_FORMAT, NumCmp + 1, + GetChars( Component->m_Reference ), + GetChars( Component->m_Value ), + GetChars( Component->m_Footprint ) ); + + if( isUndefined ) + m_undefinedComponentCnt -= 1; + + m_ListCmp->SetString( NumCmp, msg ); + m_ListCmp->SetSelection( NumCmp, false ); + + isUndefined = false; + LastCmp = NumCmp; + + DisplayStatus(); + } - msg.Printf( CMP_FORMAT, NumCmp + 1, - GetChars( Component->m_Reference ), - GetChars( Component->m_Value ), - GetChars( Component->m_Footprint ) ); m_modified = true; - if( isUndefined ) - m_undefinedComponentCnt -= 1; - - m_ListCmp->SetString( NumCmp, msg ); - m_ListCmp->SetSelection( NumCmp, false ); - - // We activate next component: - if( NumCmp < (m_ListCmp->GetCount() - 1) ) - NumCmp++; + if( LastCmp < (m_ListCmp->GetCount() - 1) ) + NumCmp = LastCmp + 1; m_ListCmp->SetSelection( NumCmp, true ); - DisplayStatus(); }