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

2
src/source_base.hpp

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

Loading…
Cancel
Save