Don't display arrow for File Browser's item if doesn't contains subfolders, issue 1390 and issue 2678 #5, patch by prizzrak

This commit is contained in:
DrSlony 2015-03-19 09:34:02 +01:00
parent 7994c914dd
commit dc59b25b44

View File

@ -263,15 +263,41 @@ void DirBrowser::updateDir (const Gtk::TreeModel::iterator& iter) {
void DirBrowser::addDir (const Gtk::TreeModel::iterator& iter, const Glib::ustring& dirname) {
Gtk::TreeModel::iterator child = dirTreeModel->append(iter->children());
const Gtk::TreeNodeChildren it = iter->children();
Gtk::TreeModel::iterator child = dirTreeModel->append(it);
child->set_value (dtColumns.filename, dirname);
child->set_value (0, openfolder);
child->set_value (1, closedfolder);
Glib::ustring fullname = Glib::build_filename (iter->get_value (dtColumns.dirname), dirname);
child->set_value (dtColumns.dirname, fullname);
if (!safe_file_test(fullname, Glib::FILE_TEST_IS_DIR)) {
return;
}
try {
Glib::RefPtr<Gio::File> dir = Gio::File::create_for_path(fullname);
Glib::RefPtr<Gio::FileEnumerator> dirList = dir->enumerate_children("standard::type");
if (dirList) {
bool canBeExpanded = false;
for (Glib::RefPtr<Gio::FileInfo> info = dirList->next_file(); info; info = dirList->next_file()) {
if (info->get_file_type() == Gio::FILE_TYPE_DIRECTORY ||
info->get_file_type() == Gio::FILE_TYPE_SYMBOLIC_LINK) {
canBeExpanded = true;
break;
}
}
if (canBeExpanded) {
Gtk::TreeModel::iterator fooRow = dirTreeModel->append(child->children());
fooRow->set_value(dtColumns.filename, Glib::ustring("foo"));
}
}
}
catch (...) {
// will catch excepions like 'Permission denied'
}
}
void DirBrowser::row_activated (const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column) {