Implement find & select

master
Melroy van den Berg 2021-03-11 23:53:02 +01:00
parent f019198d4d
commit 345d19c94f
1 changed files with 21 additions and 1 deletions

View File

@ -544,7 +544,27 @@ void MainWindow::go_home()
*/
void MainWindow::do_search()
{
std::cout << "Search for: " << m_searchEntry.get_text() << std::endl;
// Forward search, find and select
std::string text = m_searchEntry.get_text();
auto buffer = m_draw_main.get_buffer();
Gtk::TextBuffer::iterator iter = buffer->get_iter_at_mark(buffer->get_mark("insert"));
Gtk::TextBuffer::iterator start, end;
if (iter.forward_search(text, Gtk::TextSearchFlags::TEXT_SEARCH_TEXT_ONLY, start, end))
{
buffer->select_range(end, start);
m_draw_main.scroll_to(start);
}
else
{
buffer->place_cursor(buffer->begin());
// Try another search directly from the top
Gtk::TextBuffer::iterator secondIter = buffer->get_iter_at_mark(buffer->get_mark("insert"));
if (secondIter.forward_search(text, Gtk::TextSearchFlags::TEXT_SEARCH_TEXT_ONLY, start, end))
{
buffer->select_range(end, start);
m_draw_main.scroll_to(start);
}
}
}
/**