Fixed properties window for the current folder

This commit is contained in:
Pierre Pronchery 2007-07-29 17:43:34 +00:00
parent e836e6499d
commit c4bf1aa6cf

View File

@ -97,21 +97,17 @@ void on_edit_copy(GtkMenuItem * menuitem, gpointer data)
static GList * _copy_selection(Browser * browser) static GList * _copy_selection(Browser * browser)
{ {
GtkTreeSelection * treesel;
#if GTK_CHECK_VERSION(2, 6, 0) #if GTK_CHECK_VERSION(2, 6, 0)
if(browser->iconview != NULL) if(browser->iconview != NULL)
return gtk_icon_view_get_selected_items(GTK_ICON_VIEW( return gtk_icon_view_get_selected_items(GTK_ICON_VIEW(
browser->iconview)); browser->iconview));
else
#endif #endif
{ if((treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(
GtkTreeSelection * treesel; browser->detailview))) == NULL)
return NULL;
if((treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW( return gtk_tree_selection_get_selected_rows(treesel, NULL);
browser->detailview)))
== NULL)
return NULL;
return gtk_tree_selection_get_selected_rows(treesel, NULL);
}
} }
@ -640,7 +636,7 @@ void on_properties(GtkWidget * widget, gpointer data)
char ** argv; char ** argv;
gchar * q; gchar * q;
GList * p; GList * p;
unsigned int i = 1; unsigned int i = 2;
GtkTreeIter iter; GtkTreeIter iter;
if((pid = fork()) == -1) if((pid = fork()) == -1)
@ -651,11 +647,12 @@ void on_properties(GtkWidget * widget, gpointer data)
else if(pid != 0) else if(pid != 0)
return; return;
if((selection = _copy_selection(browser)) == NULL) if((selection = _copy_selection(browser)) == NULL)
return; cnt = 1;
cnt = g_list_length(selection); else
cnt = g_list_length(selection);
if((argv = malloc(sizeof(*argv) * (cnt + 3))) == NULL) if((argv = malloc(sizeof(*argv) * (cnt + 3))) == NULL)
{ {
fprintf(stderr, "%s%s\n", "browser: malloc: ", strerror(errno)); browser_error(NULL, "malloc", 0);
exit(2); exit(2);
} }
#ifdef DEBUG #ifdef DEBUG
@ -664,21 +661,23 @@ void on_properties(GtkWidget * widget, gpointer data)
argv[0] = "properties"; argv[0] = "properties";
#endif #endif
argv[1] = "--"; argv[1] = "--";
for(p = selection; p != NULL && i <= cnt; p = p->next) if(selection == NULL)
argv[i++] = browser->current->data;
for(p = selection; p != NULL && i < cnt + 2; p = p->next)
{ {
if(!gtk_tree_model_get_iter(GTK_TREE_MODEL(browser->store), if(!gtk_tree_model_get_iter(GTK_TREE_MODEL(browser->store),
&iter, p->data)) &iter, p->data))
continue; continue;
gtk_tree_model_get(GTK_TREE_MODEL(browser->store), &iter, gtk_tree_model_get(GTK_TREE_MODEL(browser->store), &iter,
BR_COL_PATH, &q, -1); BR_COL_PATH, &q, -1);
argv[++i] = q; argv[i++] = q;
} }
if(i != cnt + 1) if(i != cnt + 2)
{ {
fputs("browser: Could not detail file(s)\n", stderr); fputs("browser: Could not detail file(s)\n", stderr);
exit(2); exit(2);
} }
argv[++i] = NULL; argv[i] = NULL;
execvp(argv[0], argv); execvp(argv[0], argv);
fprintf(stderr, "%s%s%s%s\n", "browser: ", argv[0], ": ", fprintf(stderr, "%s%s%s%s\n", "browser: ", argv[0], ": ",
strerror(errno)); strerror(errno));