From f2003d8dda676067d3900d820c5a89fd57e1e30d Mon Sep 17 00:00:00 2001 From: Thiadmer Riemersma Date: Sat, 20 Jul 2013 13:13:40 -0400 Subject: [PATCH] Eeschema: fix subtle find bug when at the end of the search list. (fixes lp 1199689) --- eeschema/sch_collectors.cpp | 24 +++++++++--------------- eeschema/sch_collectors.h | 10 +++++----- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/eeschema/sch_collectors.cpp b/eeschema/sch_collectors.cpp index edb897b8c4..a0f4554fad 100644 --- a/eeschema/sch_collectors.cpp +++ b/eeschema/sch_collectors.cpp @@ -338,7 +338,7 @@ bool SCH_COLLECTOR::IsDraggableJunction() const } -bool SCH_FIND_COLLECTOR::atEnd() const +bool SCH_FIND_COLLECTOR::PassedEnd() const { bool retv = false; @@ -351,12 +351,12 @@ bool SCH_FIND_COLLECTOR::atEnd() const { if( flags & wxFR_DOWN ) { - if( m_foundIndex >= (GetCount() - 1) ) + if( m_foundIndex >= GetCount() ) retv = true; } else { - if( m_foundIndex == 0 ) + if( m_foundIndex < 0 ) retv = true; } } @@ -390,21 +390,15 @@ void SCH_FIND_COLLECTOR::UpdateIndex() if( flags & wxFR_DOWN ) { - if( !(flags & FR_SEARCH_WRAP) && (m_foundIndex == (GetCount() - 1)) ) - return; - - m_foundIndex += 1; - + if( m_foundIndex < GetCount() ) + m_foundIndex += 1; if( (m_foundIndex >= GetCount()) && (flags & FR_SEARCH_WRAP) ) m_foundIndex = 0; } else { - if( !(flags & FR_SEARCH_WRAP) && (m_foundIndex == 0) ) - return; - - m_foundIndex -= 1; - + if( m_foundIndex >= 0 ) + m_foundIndex -= 1; if( (m_foundIndex < 0) && (flags & FR_SEARCH_WRAP) ) m_foundIndex = GetCount() - 1; } @@ -452,7 +446,7 @@ wxString SCH_FIND_COLLECTOR::GetText() EDA_ITEM* SCH_FIND_COLLECTOR::GetItem( SCH_FIND_COLLECTOR_DATA& aData ) { - if( atEnd() ) + if( PassedEnd() ) return NULL; aData = m_data[ m_foundIndex ]; @@ -462,7 +456,7 @@ EDA_ITEM* SCH_FIND_COLLECTOR::GetItem( SCH_FIND_COLLECTOR_DATA& aData ) bool SCH_FIND_COLLECTOR::ReplaceItem() { - if( atEnd() ) + if( PassedEnd() ) return false; wxCHECK_MSG( IsValidIndex( m_foundIndex ), false, diff --git a/eeschema/sch_collectors.h b/eeschema/sch_collectors.h index edda2a3b93..d8851e0d89 100644 --- a/eeschema/sch_collectors.h +++ b/eeschema/sch_collectors.h @@ -238,13 +238,13 @@ class SCH_FIND_COLLECTOR : public COLLECTOR bool m_forceSearch; /** - * Function atEnd - * tests if #m_foundIndex is at the end of the list give the current find/replace - * criterial in #m_findReplaceData. + * Function PassedEnd + * tests if #m_foundIndex is beyond the end of the list give the current + * find/replace criterial in #m_findReplaceData. * - * @return True if #m_foundIndex is at the end of the found item list. + * @return True if #m_foundIndex has crossed the end of the found item list. */ - bool atEnd() const; + bool PassedEnd() const; /** * Function dump