diff --git a/src/notebook.cc b/src/notebook.cc index febf58f..cb5729f 100644 --- a/src/notebook.cc +++ b/src/notebook.cc @@ -69,18 +69,6 @@ Notebook::Notebook() : Gtk::HPaned(), notebooks(2) { if(on_switch_page) on_switch_page(); }); - notebook.signal_page_removed().connect([this](Gtk::Widget *widget, guint) { - if(on_page_removed) { - auto hbox=dynamic_cast(widget); - for(size_t c=0;c(widget); for(size_t c=0;c(source_view)) - source_clang_view->async_delete(); + if(on_close) + on_close(view); + + if(auto clang_view=dynamic_cast(view)) + clang_view->async_delete(); else - delete source_view; + delete view; source_views.erase(source_views.begin()+index); scrolled_windows.erase(scrolled_windows.begin()+index); hboxes.erase(hboxes.begin()+index); diff --git a/src/notebook.h b/src/notebook.h index fdfdfff..c2f4170 100644 --- a/src/notebook.h +++ b/src/notebook.h @@ -48,7 +48,7 @@ public: Gtk::Label status; std::function on_switch_page; - std::function on_page_removed; + std::function on_close; private: size_t get_index(Source::View *view); Source::View *get_view(size_t notebook_index, int page); diff --git a/src/window.cc b/src/window.cc index 1ca0775..916b68d 100644 --- a/src/window.cc +++ b/src/window.cc @@ -132,16 +132,16 @@ Window::Window() { #endif } }; - Notebook::get().on_page_removed=[](Source::View *removed_view) { + Notebook::get().on_close=[](Source::View *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()) { + if(Project::current && Project::debugging) { + auto iter=view->get_buffer()->begin(); + while(view->get_source_buffer()->forward_iter_to_source_mark(iter, "debug_breakpoint") || + 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); + view->get_source_buffer()->remove_source_marks(iter, end_iter, "debug_breakpoint"); + Project::current->debug_remove_breakpoint(view->file_path, iter.get_line()+1, view->get_buffer()->get_line_count()+1); } } #endif