diff --git a/src/source.cc b/src/source.cc index d5d4358..1caa724 100644 --- a/src/source.cc +++ b/src/source.cc @@ -1776,7 +1776,7 @@ bool Source::View::on_key_press_event_basic(GdkEventKey* key) { 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; if(do_smart_backspace) { auto previous_line_end_iter=iter; diff --git a/tests/source_key_test.cc b/tests/source_key_test.cc index 898fa9a..bbc13d2 100644 --- a/tests/source_key_test.cc +++ b/tests/source_key_test.cc @@ -890,5 +890,24 @@ int main() { " }"); 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); + } } }