diff --git a/part.cpp b/part.cpp index 501113a0b..4b1d9c13a 100644 --- a/part.cpp +++ b/part.cpp @@ -1255,8 +1255,10 @@ void Part::slotShowFindBar() void Part::slotHideFindBar() { - m_findBar->hide(); - m_pageView->setFocus(); + if ( m_findBar->maybeHide() ) + { + m_pageView->setFocus(); + } } //BEGIN go to page dialog diff --git a/ui/findbar.cpp b/ui/findbar.cpp index 6f841d629..c70d5e796 100644 --- a/ui/findbar.cpp +++ b/ui/findbar.cpp @@ -106,6 +106,20 @@ void FindBar::focusAndSetCursor() m_search->lineEdit()->setFocus(); } +bool FindBar::maybeHide() +{ + if ( m_search->lineEdit()->isSearchRunning() ) + { + m_search->lineEdit()->stopSearch(); + return false; + } + else + { + hide(); + return true; + } +} + void FindBar::findNext() { m_search->lineEdit()->setSearchType( Okular::Document::NextMatch ); diff --git a/ui/findbar.h b/ui/findbar.h index 4047ab8d0..b63b1ba33 100644 --- a/ui/findbar.h +++ b/ui/findbar.h @@ -32,6 +32,7 @@ class FindBar Qt::CaseSensitivity caseSensitivity() const; void focusAndSetCursor(); + bool maybeHide(); public slots: void findNext();