diff --git a/src/directories.cc b/src/directories.cc index 9aa8421..21c23d8 100644 --- a/src/directories.cc +++ b/src/directories.cc @@ -21,26 +21,24 @@ namespace sigc { #endif } -Directories::Directories() : stop_update_thread(false) { - add(tree_view); - set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); +Directories::Directories() : Gtk::TreeView(), stop_update_thread(false) { tree_store = Gtk::TreeStore::create(column_record); - tree_view.set_model(tree_store); - tree_view.append_column("", column_record.name); - auto renderer=dynamic_cast(tree_view.get_column(0)->get_first_cell()); - tree_view.get_column(0)->add_attribute(renderer->property_foreground_rgba(), column_record.color); + set_model(tree_store); + append_column("", column_record.name); + auto renderer=dynamic_cast(get_column(0)->get_first_cell()); + get_column(0)->add_attribute(renderer->property_foreground_rgba(), column_record.color); tree_store->set_sort_column(column_record.id, Gtk::SortType::SORT_ASCENDING); - tree_view.set_enable_search(true); //TODO: why does this not work in OS X? - tree_view.set_search_column(column_record.name); + set_enable_search(true); //TODO: why does this not work in OS X? + set_search_column(column_record.name); - tree_view.signal_row_activated().connect([this](const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column){ + signal_row_activated().connect([this](const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column){ auto iter = tree_store->get_iter(path); if (iter) { auto path_str=iter->get_value(column_record.path); if(path_str!="") { if (boost::filesystem::is_directory(boost::filesystem::path(path_str))) { - tree_view.row_expanded(path) ? tree_view.collapse_row(path) : tree_view.expand_row(path, false); + row_expanded(path) ? collapse_row(path) : expand_row(path, false); } else { if(on_row_activated) on_row_activated(path_str); @@ -49,7 +47,7 @@ Directories::Directories() : stop_update_thread(false) { } }); - tree_view.signal_test_expand_row().connect([this](const Gtk::TreeModel::iterator& iter, const Gtk::TreeModel::Path& path){ + signal_test_expand_row().connect([this](const Gtk::TreeModel::iterator& iter, const Gtk::TreeModel::Path& path){ if(iter->children().begin()->get_value(column_record.path)=="") { update_mutex.lock(); add_path(iter->get_value(column_record.path), *iter); @@ -57,7 +55,7 @@ Directories::Directories() : stop_update_thread(false) { } return false; }); - tree_view.signal_row_collapsed().connect([this](const Gtk::TreeModel::iterator& iter, const Gtk::TreeModel::Path& path){ + signal_row_collapsed().connect([this](const Gtk::TreeModel::iterator& iter, const Gtk::TreeModel::Path& path){ update_mutex.lock(); last_write_times.erase(iter->get_value(column_record.path)); update_mutex.unlock(); @@ -128,9 +126,9 @@ void Directories::open(const boost::filesystem::path& dir_path) { cmake=std::unique_ptr(new CMake(dir_path)); auto project=cmake->get_functions_parameters("project"); if(project.size()>0 && project[0].second.size()>0) - tree_view.get_column(0)->set_title(project[0].second[0]); + get_column(0)->set_title(project[0].second[0]); else - tree_view.get_column(0)->set_title(""); + get_column(0)->set_title(""); update_mutex.lock(); add_path(dir_path, Gtk::TreeModel::Row()); update_mutex.unlock(); @@ -185,8 +183,8 @@ void Directories::select(const boost::filesystem::path &path) { tree_store->foreach_iter([this, &path](const Gtk::TreeModel::iterator& iter){ if(iter->get_value(column_record.path)==path.string()) { auto tree_path=Gtk::TreePath(iter); - tree_view.expand_to_path(tree_path); - tree_view.set_cursor(tree_path); + expand_to_path(tree_path); + set_cursor(tree_path); return true; } return false; diff --git a/src/directories.h b/src/directories.h index 9435504..3921012 100644 --- a/src/directories.h +++ b/src/directories.h @@ -10,7 +10,7 @@ #include #include -class Directories : public Gtk::ScrolledWindow { +class Directories : public Gtk::TreeView { public: class ColumnRecord : public Gtk::TreeModel::ColumnRecord { public: @@ -38,7 +38,6 @@ public: private: void add_path(const boost::filesystem::path& dir_path, const Gtk::TreeModel::Row &row); - Gtk::TreeView tree_view; Glib::RefPtr tree_store; ColumnRecord column_record; diff --git a/src/window.cc b/src/window.cc index 17de97a..a7429a0 100644 --- a/src/window.cc +++ b/src/window.cc @@ -34,7 +34,8 @@ Window::Window() : compiling(false) { add(vpaned); - directory_and_notebook_panes.pack1(*Singleton::directories, Gtk::SHRINK); + directories_scrolled_window.add(*Singleton::directories); + directory_and_notebook_panes.pack1(directories_scrolled_window, Gtk::SHRINK); notebook_vbox.pack_start(notebook); notebook_vbox.pack_end(entry_box, Gtk::PACK_SHRINK); directory_and_notebook_panes.pack2(notebook_vbox, Gtk::SHRINK); diff --git a/src/window.h b/src/window.h index d02f23c..5fb7598 100644 --- a/src/window.h +++ b/src/window.h @@ -19,6 +19,7 @@ private: Gtk::Paned directory_and_notebook_panes; Gtk::VBox notebook_vbox; Gtk::VBox terminal_vbox; + Gtk::ScrolledWindow directories_scrolled_window; Gtk::ScrolledWindow terminal_scrolled_window; Gtk::HBox info_and_status_hbox; Gtk::AboutDialog about;