From 56ac2acf4474fc5facc6ab3f4a1db20e993c606b Mon Sep 17 00:00:00 2001 From: Simon Gomizelj Date: Thu, 11 Apr 2013 21:05:06 -0400 Subject: [PATCH] if the search fails, clear selection and try again This really smells like we're working around a vte bug/limitation. Thanks to @numerical. This closes #76 --- termite.cc | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/termite.cc b/termite.cc index aa0d5d2..59ad50d 100644 --- a/termite.cc +++ b/termite.cc @@ -922,16 +922,27 @@ GtkTreeModel *create_completion_model(VteTerminal *vte) { } void search(VteTerminal *vte, const char *pattern, bool reverse) { + std::function terminal_search; + if (!reverse) { + terminal_search = [vte]() { + return vte_terminal_search_find_next(vte); + }; + } else { + terminal_search = [vte]() { + return vte_terminal_search_find_previous(vte); + }; + }; + GRegex *regex = vte_terminal_search_get_gregex(vte); if (regex) g_regex_unref(regex); regex = g_regex_new(pattern, (GRegexCompileFlags)0, (GRegexMatchFlags)0, nullptr); vte_terminal_search_set_gregex(vte, regex); - if (!reverse) { - vte_terminal_search_find_next(vte); - } else { - vte_terminal_search_find_previous(vte); + if (!terminal_search()) { + vte_terminal_select_none(vte); + terminal_search(); } + vte_terminal_copy_primary(vte); }