Browse Source

Fixes backspace key when insert is after spaces or tabs at start of the first line in buffer

merge-requests/365/head
eidheim 8 years ago
parent
commit
cf67686fc9
  1. 2
      src/source.cc
  2. 19
      tests/source_key_test.cc

2
src/source.cc

@ -1776,7 +1776,7 @@ bool Source::View::on_key_press_event_basic(GdkEventKey* key) {
break; break;
} }
} }
if(get_buffer()->size()==1) // special case due to backward_char(s) returning false when moving to start of buffer if(iter.get_line()==0) // Special case since there are no previous line
do_smart_backspace=false; do_smart_backspace=false;
if(do_smart_backspace) { if(do_smart_backspace) {
auto previous_line_end_iter=iter; auto previous_line_end_iter=iter;

19
tests/source_key_test.cc

@ -890,5 +890,24 @@ int main() {
" }"); " }");
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end());
} }
event.keyval = GDK_KEY_BackSpace;
{
view.get_buffer()->set_text(" int main()\n");
auto iter=view.get_buffer()->begin();
iter.forward_chars(2);
view.get_buffer()->place_cursor(iter);
assert(view.on_key_press_event_basic(&event)==false);
assert(view.on_key_press_event_bracket_language(&event)==false);
}
{
view.get_buffer()->set_text(" int main()");
auto iter=view.get_buffer()->begin();
iter.forward_chars(2);
view.get_buffer()->place_cursor(iter);
assert(view.on_key_press_event_basic(&event)==false);
assert(view.on_key_press_event_bracket_language(&event)==false);
}
} }
} }

Loading…
Cancel
Save