From b1a3943da4e6908e15eec67dd2b2a1dcf59797e4 Mon Sep 17 00:00:00 2001 From: eidheim Date: Wed, 29 Aug 2018 13:08:28 +0200 Subject: [PATCH] Correction to Find dialog, related to !390: last_search variable is now correctly updated when search entry is set to current selection. Also reverted history workaround. --- src/entrybox.cc | 8 +------- src/window.cc | 13 +++++++------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/entrybox.cc b/src/entrybox.cc index 64b107e..abe6800 100644 --- a/src/entrybox.cc +++ b/src/entrybox.cc @@ -21,13 +21,7 @@ EntryBox::Entry::Entry(const std::string &content, std::functionkeyval == GDK_KEY_Up || key->keyval == GDK_KEY_KP_Up) { auto &history = entry_histories[get_placeholder_text()]; if(history.size() > 0) { - if(selected_history == 0 && history.front() != get_text()) { - // This restores correct history behavior with find text initialized - // from a source view selection. - } - else { - selected_history++; - } + selected_history++; if(selected_history >= history.size()) selected_history = history.size() - 1; set_text(history[selected_history]); diff --git a/src/window.cc b/src/window.cc index 20bca22..9d83d4a 100644 --- a/src/window.cc +++ b/src/window.cc @@ -1440,18 +1440,19 @@ void Window::search_and_replace_entry() { } } }; + + if(auto view = Notebook::get().get_current_view()) { + auto const selected = view->get_selected_text(); + if(!selected.empty()) { + last_search = selected; + } + } EntryBox::get().entries.emplace_back(last_search, [](const std::string &content) { if(auto view = Notebook::get().get_current_view()) view->search_forward(); }); auto search_entry_it = EntryBox::get().entries.begin(); search_entry_it->set_placeholder_text("Find"); - if(auto view = Notebook::get().get_current_view()) { - auto const selected = view->get_selected_text(); - if(!selected.empty()) { - search_entry_it->set_text(selected); - } - } if(auto view = Notebook::get().get_current_view()) { view->update_search_occurrences = [label_it](int number) { label_it->update(0, std::to_string(number));