Browse Source

Find dialog will now use selection from active view as initial text.

merge-requests/390/head
ckurz 7 years ago
parent
commit
fc5c11f61e
  1. 8
      src/source_base.cc
  2. 2
      src/source_base.h
  3. 6
      src/window.cc

8
src/source_base.cc

@ -806,6 +806,14 @@ void Source::BaseView::paste() {
scroll_to_cursor_delayed(this, false, false); scroll_to_cursor_delayed(this, false, false);
} }
std::string Source::BaseView::get_selected_text() {
Gtk::TextIter start, end;
if(!get_buffer()->get_selection_bounds(start, end)) {
return {};
}
return get_buffer()->get_text(start, end);
}
void Source::BaseView::search_highlight(const std::string &text, bool case_sensitive, bool regex) { void Source::BaseView::search_highlight(const std::string &text, bool case_sensitive, bool regex) {
gtk_source_search_settings_set_case_sensitive(search_settings, case_sensitive); gtk_source_search_settings_set_case_sensitive(search_settings, case_sensitive);
gtk_source_search_settings_set_regex_enabled(search_settings, regex); gtk_source_search_settings_set_regex_enabled(search_settings, regex);

2
src/source_base.h

@ -64,6 +64,8 @@ namespace Source {
void paste(); void paste();
std::string get_selected_text();
void search_highlight(const std::string &text, bool case_sensitive, bool regex); void search_highlight(const std::string &text, bool case_sensitive, bool regex);
void search_forward(); void search_forward();
void search_backward(); void search_backward();

6
src/window.cc

@ -1446,6 +1446,12 @@ void Window::search_and_replace_entry() {
}); });
auto search_entry_it = EntryBox::get().entries.begin(); auto search_entry_it = EntryBox::get().entries.begin();
search_entry_it->set_placeholder_text("Find"); 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()) { if(auto view = Notebook::get().get_current_view()) {
view->update_search_occurrences = [label_it](int number) { view->update_search_occurrences = [label_it](int number) {
label_it->update(0, std::to_string(number)); label_it->update(0, std::to_string(number));

Loading…
Cancel
Save