diff --git a/src/notebook.cc b/src/notebook.cc index ad329ab..f8f6feb 100644 --- a/src/notebook.cc +++ b/src/notebook.cc @@ -113,6 +113,15 @@ bool Notebook::save(int page) { auto view=get_view(page); if (view->file_path != "" && view->get_buffer()->get_modified()) { if(juci::filesystem::write(view->file_path, view->get_buffer())) { + if(auto clang_view=dynamic_cast(view)) { + for(auto a_view: source_views) { + if(auto a_clang_view=dynamic_cast(a_view)) { + if(clang_view!=a_clang_view) + a_clang_view->start_reparse_needed=true; + } + } + } + view->get_buffer()->set_modified(false); Singleton::terminal()->print("File saved to: " +view->file_path.string()+"\n"); diff --git a/src/source.h b/src/source.h index 32bdb0d..3abf39b 100644 --- a/src/source.h +++ b/src/source.h @@ -126,6 +126,7 @@ namespace Source { ClangViewParse(const boost::filesystem::path &file_path, const boost::filesystem::path& project_path); boost::filesystem::path project_path; void start_reparse(); + bool start_reparse_needed=false; protected: void init_parse(); bool on_key_press_event(GdkEventKey* key); diff --git a/src/window.cc b/src/window.cc index 23f6adc..c00581b 100644 --- a/src/window.cc +++ b/src/window.cc @@ -93,8 +93,12 @@ Window::Window() : box(Gtk::ORIENTATION_VERTICAL), notebook(directories), compil directories.select(notebook.get_current_view()->file_path); - if(auto source_view=dynamic_cast(notebook.get_current_view())) - source_view->start_reparse(); + if(auto source_view=dynamic_cast(notebook.get_current_view())) { + if(source_view->start_reparse_needed) { + source_view->start_reparse(); + source_view->start_reparse_needed=false; + } + } Singleton::status()->set_text(notebook.get_current_view()->status); }