/* utf8 */ static gchar *build_path(GtkTreeIter *iter) { GtkTreeIter node; GtkTreeIter parent; gchar *path = NULL; GtkTreeModel *model; gchar *name; if (!iter) return get_project_base_path(); node = *iter; model = GTK_TREE_MODEL(s_file_store); while (gtk_tree_model_iter_parent(model, &parent, &node)) { gtk_tree_model_get(model, &node, FILEVIEW_COLUMN_NAME, &name, -1); if (path == NULL) path = g_strdup(name); else SETPTR(path, g_build_filename(name, path, NULL)); g_free(name); node = parent; } if (topmost_selected(model, &node, TRUE)) { gchar *utf8_base_path = get_project_base_path(); SETPTR(path, g_build_filename(utf8_base_path, path, NULL)); g_free(utf8_base_path); } else { gtk_tree_model_get(model, &node, FILEVIEW_COLUMN_NAME, &name, -1); SETPTR(path, g_build_filename(name, path, NULL)); g_free(name); } return path; }
static gboolean on_button_release(G_GNUC_UNUSED GtkWidget * widget, GdkEventButton * event, G_GNUC_UNUSED gpointer user_data) { if (event->button == 3) { GtkTreeSelection *treesel; GtkTreeModel *model; GtkTreeIter iter; treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(s_file_view)); if (!gtk_tree_selection_get_selected(treesel, &model, &iter)) return FALSE; gtk_widget_set_sensitive(s_popup_menu.expand, gtk_tree_model_iter_has_child(model, &iter)); gtk_widget_set_sensitive(s_popup_menu.remove_external_dir, topmost_selected(model, &iter, FALSE)); gtk_menu_popup(GTK_MENU(s_popup_menu.widget), NULL, NULL, NULL, NULL, event->button, event->time); return TRUE; } return FALSE; }