Browse Source

Fixed snippet bug that caused the backspace key not to work as expected

pipelines/235045657
eidheim 6 years ago
parent
commit
7c021dc50d
  1. 13
      src/source_base.cpp
  2. 2
      src/source_base.hpp

13
src/source_base.cpp

@ -1161,6 +1161,7 @@ void Source::BaseView::setup_extra_cursor_signals() {
extra_cursor.offset = extra_cursor_iter.get_line_offset(); extra_cursor.offset = extra_cursor_iter.get_line_offset();
} }
for(auto &extra_cursor : extra_snippet_cursors) { for(auto &extra_cursor : extra_snippet_cursors) {
extra_cursor.initial_forward_erase_size = std::numeric_limits<int>::max();
auto iter = extra_cursor.mark->get_iter(); auto iter = extra_cursor.mark->get_iter();
iter.forward_chars(offset); iter.forward_chars(offset);
get_buffer()->insert(iter, text); get_buffer()->insert(iter, text);
@ -1194,15 +1195,13 @@ void Source::BaseView::setup_extra_cursor_signals() {
for(auto &extra_cursor : extra_snippet_cursors) { for(auto &extra_cursor : extra_snippet_cursors) {
auto start_iter = extra_cursor.mark->get_iter(); auto start_iter = extra_cursor.mark->get_iter();
auto end_iter = start_iter; auto end_iter = start_iter;
if(extra_cursor.parameter_size != std::numeric_limits<int>::max()) { // In case of different sized placeholders start_iter.backward_chars(*erase_backward_length);
if(*erase_backward_length == 0) if(extra_cursor.initial_forward_erase_size != std::numeric_limits<int>::max()) { // In case of different sized placeholders
end_iter.forward_chars(extra_cursor.parameter_size); end_iter.forward_chars(extra_cursor.initial_forward_erase_size);
extra_cursor.parameter_size = std::numeric_limits<int>::max(); extra_cursor.initial_forward_erase_size = std::numeric_limits<int>::max();
} }
else { else
start_iter.backward_chars(*erase_backward_length);
end_iter.forward_chars(*erase_forward_length); end_iter.forward_chars(*erase_forward_length);
}
get_buffer()->erase(start_iter, end_iter); get_buffer()->erase(start_iter, end_iter);
} }
enable_multiple_cursors = true; enable_multiple_cursors = true;

2
src/source_base.hpp

@ -148,7 +148,7 @@ namespace Source {
std::vector<ExtraCursor> extra_cursors; std::vector<ExtraCursor> extra_cursors;
struct ExtraSnippetCursor { struct ExtraSnippetCursor {
Glib::RefPtr<Gtk::TextBuffer::Mark> mark; Glib::RefPtr<Gtk::TextBuffer::Mark> mark;
int parameter_size; int initial_forward_erase_size;
}; };
bool on_key_press_event_extra_cursors(GdkEventKey *key); bool on_key_press_event_extra_cursors(GdkEventKey *key);

Loading…
Cancel
Save