[gnote] Create find next/prev buttons on demand



commit ac695bebc23081b39ac672b48ce80a59d624ab61
Author: Aurimas Černius <aurisc4 gmail com>
Date:   Sat Jan 2 12:43:19 2021 +0200

    Create find next/prev buttons on demand

 src/recentchanges.cpp | 28 ++++++++++++++++++++++------
 src/recentchanges.hpp |  1 +
 2 files changed, 23 insertions(+), 6 deletions(-)
---
diff --git a/src/recentchanges.cpp b/src/recentchanges.cpp
index d443005b..f8d456ca 100644
--- a/src/recentchanges.cpp
+++ b/src/recentchanges.cpp
@@ -245,6 +245,17 @@ namespace gnote {
     grid->set_margin_right(5);
     grid->set_hexpand(false);
     grid->attach(m_search_entry, 0, 0, 1, 1);
+    grid->show();
+
+    m_search_box.add(*grid);
+    m_search_box.set_hexpand(true);
+  }
+
+  void NoteRecentChanges::make_find_next_prev()
+  {
+    if(m_find_next_prev_box) {
+      return;
+    }
 
     m_find_next_prev_box = manage(new Gtk::Grid);
     m_find_next_prev_box->set_margin_left(5);
@@ -273,11 +284,13 @@ namespace gnote {
     find_prev_button->show();
     m_find_next_prev_box->attach(*find_prev_button, 1, 0, 1, 1);
 
-    grid->attach(*m_find_next_prev_box, 1, 0, 1, 1);
-    grid->show();
-
-    m_search_box.add(*grid);
-    m_search_box.set_hexpand(true);
+    auto grid = dynamic_cast<Gtk::Grid*>(m_search_entry.get_parent());
+    if(grid) {
+      grid->attach(*m_find_next_prev_box, 1, 0, 1, 1);
+    }
+    else {
+      ERR_OUT(_("Parent of search entry is not Gtk::Grid, please report a bug!"));
+    }
   }
 
   void NoteRecentChanges::on_search_button_toggled()
@@ -334,10 +347,13 @@ namespace gnote {
     if(searchable_item) {
       m_search_button.show();
       if(searchable_item->supports_goto_result()) {
+        make_find_next_prev();
         m_find_next_prev_box->show();
       }
       else {
-        m_find_next_prev_box->hide();
+        if(m_find_next_prev_box) {
+          m_find_next_prev_box->hide();
+        }
       }
       if(perform_search) {
         searchable_item->perform_search(m_search_button.get_active() ? m_search_entry.get_text() : "");
diff --git a/src/recentchanges.hpp b/src/recentchanges.hpp
index c84eb7e5..93be1773 100644
--- a/src/recentchanges.hpp
+++ b/src/recentchanges.hpp
@@ -76,6 +76,7 @@ private:
   EmbeddableWidget *currently_embedded();
   void make_header_bar();
   void make_search_box();
+  void make_find_next_prev();
   bool on_entry_key_pressed(GdkEventKey *);
   void on_entry_changed();
   void on_entry_activated();


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]