diff --git a/ui/searchlineedit.cpp b/ui/searchlineedit.cpp index f750a83d4..cacc89c2b 100644 --- a/ui/searchlineedit.cpp +++ b/ui/searchlineedit.cpp @@ -18,7 +18,8 @@ SearchLineEdit::SearchLineEdit( QWidget * parent, Okular::Document * document ) : KLineEdit( parent ), m_document( document ), m_minLength( 0 ), m_caseSensitivity( Qt::CaseInsensitive ), - m_searchType( Okular::Document::AllDocument ), m_id( -1 ) + m_searchType( Okular::Document::AllDocument ), m_id( -1 ), + m_changed( false ) { setObjectName( "SearchLineEdit" ); @@ -39,32 +40,49 @@ void SearchLineEdit::clearText() void SearchLineEdit::setSearchCaseSensitivity( Qt::CaseSensitivity cs ) { m_caseSensitivity = cs; + m_changed = true; } void SearchLineEdit::setSearchMinimumLength( int length ) { m_minLength = length; + m_changed = true; } void SearchLineEdit::setSearchType( Okular::Document::SearchType type ) { m_searchType = type; + m_changed = true; } void SearchLineEdit::setSearchId( int id ) { m_id = id; + m_changed = true; } void SearchLineEdit::setSearchColor( const QColor &color ) { m_color = color; + m_changed = true; } void SearchLineEdit::restartSearch() { m_inputDelayTimer->stop(); m_inputDelayTimer->start( 500 ); + m_changed = true; +} + +void SearchLineEdit::findNext() +{ + if ( m_id == -1 || m_searchType != Okular::Document::NextMatch ) + return; + + if ( !m_changed ) + m_document->continueSearch( m_id ); + else + startSearch(); } void SearchLineEdit::slotTextChanged( const QString & text ) @@ -84,6 +102,11 @@ void SearchLineEdit::startSearch() if ( m_id == -1 || !m_color.isValid() ) return; + if ( m_changed && m_searchType == Okular::Document::NextMatch ) + { + m_document->resetSearch( m_id ); + } + m_changed = false; // search text if have more than 3 chars or else clear search QString thistext = text(); bool ok = true; diff --git a/ui/searchlineedit.h b/ui/searchlineedit.h index 310d6b485..49f1d6b7a 100644 --- a/ui/searchlineedit.h +++ b/ui/searchlineedit.h @@ -35,6 +35,7 @@ class SearchLineEdit : public KLineEdit void setSearchColor( const QColor &color ); void restartSearch(); + void findNext(); private: Okular::Document * m_document; @@ -44,6 +45,7 @@ class SearchLineEdit : public KLineEdit Okular::Document::SearchType m_searchType; int m_id; QColor m_color; + bool m_changed; private slots: void slotTextChanged( const QString & text );