changeset 27092:d1fe5bd5e005

wrap while searching in doc browser * documentation.cc (documentation): update signal connections to new find slots; (find_backward): just call the common find function with backward flag; (find): common find function with boolean parameter indicating a backward search, wrapping if no more occurrances of the search string is found; (find_forward): renamed into find and extended (find_forward_from_anchor): use movePosition for moving cursor to text begin * documentation.h: new common method find instead of find_forward
author Torsten Lilge <ttl-octave@mailbox.org>
date Sat, 18 May 2019 13:18:00 +0200
parents dcc3a8065ccd
children 6e18f0ce268c
files libgui/src/documentation.cc libgui/src/documentation.h
diffstat 2 files changed, 25 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/documentation.cc	Sat May 18 12:17:57 2019 +0200
+++ b/libgui/src/documentation.cc	Sat May 18 13:18:00 2019 +0200
@@ -133,7 +133,7 @@
     QLabel *find_label = new QLabel (tr ("Find:"), find_footer);
     m_find_line_edit = new QLineEdit (find_footer);
     connect (m_find_line_edit, SIGNAL (returnPressed (void)),
-             this, SLOT(find_forward (void)));
+             this, SLOT(find (void)));
     connect (m_find_line_edit, SIGNAL (textEdited (const QString&)),
              this, SLOT(find_forward_from_anchor (const QString&)));
     QToolButton *forward_button = new QToolButton (find_footer);
@@ -141,7 +141,7 @@
     forward_button->setToolTip (tr ("Search forward"));
     forward_button->setIcon (resource_manager::icon ("go-down"));
     connect (forward_button, SIGNAL (pressed (void)),
-             this, SLOT(find_forward (void)));
+             this, SLOT(find (void)));
     QToolButton *backward_button = new QToolButton (find_footer);
     backward_button->setText (tr ("Search backward"));
     backward_button->setToolTip (tr ("Search backward"));
@@ -166,7 +166,7 @@
 
     m_findnext_shortcut->setContext (Qt::WidgetWithChildrenShortcut);
     connect (m_findnext_shortcut, SIGNAL (activated (void)),
-             this, SLOT(find_forward (void)));
+             this, SLOT(find (void)));
     m_findprev_shortcut->setContext (Qt::WidgetWithChildrenShortcut);
     connect (m_findprev_shortcut, SIGNAL (activated (void)),
              this, SLOT(find_backward (void)));
@@ -687,21 +687,32 @@
     m_filter->setCurrentIndex (0);
   }
 
-  void documentation::find_forward (void)
+  void documentation::find_backward (void)
+  {
+    find (true);
+  }
+
+  void documentation::find (bool backward)
   {
     if (! m_help_engine)
       return;
 
-    m_doc_browser->find (m_find_line_edit->text ());
-    record_anchor_position ();
-  }
+    QTextDocument::FindFlags find_flags = 0;
+    if (backward)
+      find_flags = QTextDocument::FindBackward;
 
-  void documentation::find_backward (void)
-  {
-    if (! m_help_engine)
-      return;
+    if (! m_doc_browser->find (m_find_line_edit->text (), find_flags))
+    {
+      // Nothing was found, restart search from the begin or end of text
+      QTextCursor textcur = m_doc_browser->textCursor ();
+      if (backward)
+        textcur.movePosition (QTextCursor::End);
+      else
+        textcur.movePosition (QTextCursor::Start);
+      m_doc_browser->setTextCursor (textcur);
+      m_doc_browser->find (m_find_line_edit->text (), find_flags);
+    }
 
-    m_doc_browser->find (m_find_line_edit->text (), QTextDocument::FindBackward);
     record_anchor_position ();
   }
 
@@ -718,7 +729,7 @@
     if (! m_doc_browser->find (text))
       {
         // Nothing was found, restart search from the beginning
-        textcur.setPosition (0);
+        textcur.movePosition (QTextCursor::Start);
         m_doc_browser->setTextCursor (textcur);
         m_doc_browser->find (text);
       }
--- a/libgui/src/documentation.h	Sat May 18 12:17:57 2019 +0200
+++ b/libgui/src/documentation.h	Sat May 18 13:18:00 2019 +0200
@@ -115,7 +115,7 @@
     void global_search_finished (int hits);
     void filter_update (const QString& expression);
     void filter_update_history (void);
-    void find_forward (void);
+    void find (bool backward = false);
     void find_backward (void);
     void find_forward_from_anchor (const QString& text);
     void record_anchor_position (void);