diff --git a/src/notebook.cc b/src/notebook.cc index 509a1d0..62e7659 100644 --- a/src/notebook.cc +++ b/src/notebook.cc @@ -228,11 +228,15 @@ void Notebook::open(const boost::filesystem::path &file_path, size_t notebook_in auto start_iter=source_view->get_buffer()->get_iter_at_line(line_nr); auto end_iter=source_view->get_iter_at_line_end(line_nr); source_view->get_source_buffer()->remove_source_marks(start_iter, end_iter, "debug_breakpoint"); + source_view->get_source_buffer()->remove_source_marks(start_iter, end_iter, "debug_breakpoint_and_stop"); if(Project::current && Project::debugging) Project::current->debug_remove_breakpoint(source_view->file_path, line_nr+1, source_view->get_buffer()->get_line_count()+1); } else { - source_view->get_source_buffer()->create_source_mark("debug_breakpoint", source_view->get_buffer()->get_iter_at_line(line_nr)); + auto iter=source_view->get_buffer()->get_iter_at_line(line_nr); + source_view->get_source_buffer()->create_source_mark("debug_breakpoint", iter); + if(source_view->get_source_buffer()->get_source_marks_at_line(line_nr, "debug_stop").size()>0) + source_view->get_source_buffer()->create_source_mark("debug_breakpoint_and_stop", iter); if(Project::current && Project::debugging) Project::current->debug_add_breakpoint(source_view->file_path, line_nr+1); } diff --git a/src/project.cc b/src/project.cc index 655deef..d8d8108 100644 --- a/src/project.cc +++ b/src/project.cc @@ -98,6 +98,7 @@ void Project::debug_update_stop() { auto view=Notebook::get().get_view(c); if(view->file_path==debug_last_stop_file_path) { view->get_source_buffer()->remove_source_marks(view->get_buffer()->begin(), view->get_buffer()->end(), "debug_stop"); + view->get_source_buffer()->remove_source_marks(view->get_buffer()->begin(), view->get_buffer()->end(), "debug_breakpoint_and_stop"); break; } } @@ -108,7 +109,10 @@ void Project::debug_update_stop() { auto view=Notebook::get().get_view(c); if(view->file_path==debug_stop.first) { if(debug_stop.second.firstget_buffer()->get_line_count()) { - view->get_source_buffer()->create_source_mark("debug_stop", view->get_buffer()->get_iter_at_line(debug_stop.second.first)); + auto iter=view->get_buffer()->get_iter_at_line(debug_stop.second.first); + view->get_source_buffer()->create_source_mark("debug_stop", iter); + if(view->get_source_buffer()->get_source_marks_at_iter(iter, "debug_breakpoint").size()>0) + view->get_source_buffer()->create_source_mark("debug_breakpoint_and_stop", iter); debug_last_stop_file_path=debug_stop.first; } break; diff --git a/src/source.cc b/src/source.cc index c0cbacc..3b39d2c 100644 --- a/src/source.cc +++ b/src/source.cc @@ -139,6 +139,12 @@ Source::View::View(const boost::filesystem::path &file_path, Glib::RefPtrset_background(rgba); set_mark_attributes("debug_stop", mark_attr_debug_stop, 101); + auto mark_attr_debug_breakpoint_and_stop=Gsv::MarkAttributes::create(); + rgba.set_red(0.75); + rgba.set_green(0.5); + rgba.set_blue(0.75); + mark_attr_debug_breakpoint_and_stop->set_background(rgba); + set_mark_attributes("debug_breakpoint_and_stop", mark_attr_debug_breakpoint_and_stop, 102); get_buffer()->signal_changed().connect([this](){ set_info(info);