Browse Source

Debug: now removes breakpoints in a file that is closed

merge-requests/365/head
eidheim 10 years ago
parent
commit
7755b4d148
  1. 14
      src/notebook.cc
  2. 2
      src/notebook.h
  3. 14
      src/window.cc

14
src/notebook.cc

@ -69,9 +69,17 @@ Notebook::Notebook() : Gtk::HPaned(), notebooks(2) {
if(on_switch_page)
on_switch_page();
});
notebook.signal_page_removed().connect([this](Gtk::Widget*, guint) {
if(on_page_removed)
on_page_removed();
notebook.signal_page_removed().connect([this](Gtk::Widget *widget, guint) {
if(on_page_removed) {
auto hbox=dynamic_cast<Gtk::HBox*>(widget);
for(size_t c=0;c<hboxes.size();++c) {
if(hboxes[c].get()==hbox) {
on_page_removed(source_views[c]);
return;
}
}
on_page_removed(nullptr);
}
});
notebook.signal_page_added().connect([this](Gtk::Widget* widget, guint) {
auto hbox=dynamic_cast<Gtk::HBox*>(widget);

2
src/notebook.h

@ -48,7 +48,7 @@ public:
Gtk::Label status;
std::function<void()> on_switch_page;
std::function<void()> on_page_removed;
std::function<void(Source::View*)> on_page_removed;
private:
size_t get_index(Source::View *view);
Source::View *get_view(size_t notebook_index, int page);

14
src/window.cc

@ -132,7 +132,19 @@ Window::Window() {
#endif
}
};
Notebook::get().on_page_removed=[] {
Notebook::get().on_page_removed=[](Source::View *removed_view) {
#ifdef JUCI_ENABLE_DEBUG
if(Project::current && Project::debugging && removed_view) {
auto iter=removed_view->get_buffer()->begin();
while(removed_view->get_source_buffer()->forward_iter_to_source_mark(iter, "debug_breakpoint") ||
removed_view->get_source_buffer()->get_source_marks_at_iter(iter, "debug_breakpoint").size()) {
auto end_iter=iter;
while(!end_iter.ends_line() && end_iter.forward_char()) {}
removed_view->get_source_buffer()->remove_source_marks(iter, end_iter, "debug_breakpoint");
Project::current->debug_remove_breakpoint(removed_view->file_path, iter.get_line()+1, removed_view->get_buffer()->get_line_count()+1);
}
}
#endif
EntryBox::get().hide();
};

Loading…
Cancel
Save