summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/xfdesktop-file-icon-manager.c38
-rw-r--r--src/xfdesktop-file-icon.c267
-rw-r--r--src/xfdesktop-file-icon.h2
3 files changed, 130 insertions, 177 deletions
diff --git a/src/xfdesktop-file-icon-manager.c b/src/xfdesktop-file-icon-manager.c
index 9559d279..7e6ee1ed 100644
--- a/src/xfdesktop-file-icon-manager.c
+++ b/src/xfdesktop-file-icon-manager.c
@@ -1,7 +1,8 @@
/*
* xfdesktop - xfce4's desktop manager
*
- * Copyright (c) 2006 Brian Tarricone, <bjt23@cornell.edu>
+ * Copyright(c) 2006 Brian Tarricone, <bjt23@cornell.edu>
+ * Copyright(c) 2006 Benedikt Meurer, <benny@xfce.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -166,7 +167,7 @@ xfdesktop_file_icon_manager_volume_manager_cb(ThunarVfsMonitor *monitor,
{
XfdesktopFileIconManager *fmanager = XFDESKTOP_FILE_ICON_MANAGER(user_data);
XfdesktopFileIcon *icon;
- const gchar *name;
+ ThunarVfsInfo *info;
switch(event) {
case THUNAR_VFS_MONITOR_EVENT_CHANGED:
@@ -175,17 +176,20 @@ xfdesktop_file_icon_manager_volume_manager_cb(ThunarVfsMonitor *monitor,
case THUNAR_VFS_MONITOR_EVENT_CREATED:
DBG("got created event");
-
- name = thunar_vfs_path_get_name(event_path);
- if(name && name[0] == '.')
- break;
-
- thunar_vfs_path_ref(event_path);
- icon = xfdesktop_file_icon_new(event_path,
- fmanager->priv->gscreen);
- g_hash_table_insert(fmanager->priv->icons, event_path, icon);
- xfdesktop_icon_view_add_item(fmanager->priv->icon_view,
- XFDESKTOP_ICON(icon));
+
+ info = thunar_vfs_info_new_for_path(event_path, NULL);
+ if(info) {
+ if((info->flags & THUNAR_VFS_FILE_FLAGS_HIDDEN) == 0) {
+ thunar_vfs_path_ref(event_path);
+ icon = xfdesktop_file_icon_new(info,
+ fmanager->priv->gscreen);
+ g_hash_table_insert(fmanager->priv->icons, event_path, icon);
+ xfdesktop_icon_view_add_item(fmanager->priv->icon_view,
+ XFDESKTOP_ICON(icon));
+ }
+
+ thunar_vfs_info_unref(info);
+ }
break;
case THUNAR_VFS_MONITOR_EVENT_DELETED:
@@ -211,7 +215,6 @@ xfdesktop_file_icon_manager_listdir_infos_ready_cb(ThunarVfsJob *job,
GList *l;
ThunarVfsInfo *info;
XfdesktopFileIcon *icon;
- const gchar *name;
g_return_val_if_fail(job == fmanager->priv->list_job, FALSE);
@@ -222,13 +225,12 @@ xfdesktop_file_icon_manager_listdir_infos_ready_cb(ThunarVfsJob *job,
DBG("got a ThunarVfsInfo: %s", info->display_name);
- name = thunar_vfs_path_get_name(info->path);
- if(name && name[0] == '.')
+ if((info->flags & THUNAR_VFS_FILE_FLAGS_HIDDEN) != 0)
continue;
- thunar_vfs_path_ref(info->path);
- icon = xfdesktop_file_icon_new(info->path, fmanager->priv->gscreen);
+ icon = xfdesktop_file_icon_new(info, fmanager->priv->gscreen);
+ thunar_vfs_path_ref(info->path);
g_hash_table_insert(fmanager->priv->icons, info->path, icon);
xfdesktop_icon_view_add_item(fmanager->priv->icon_view,
XFDESKTOP_ICON(icon));
diff --git a/src/xfdesktop-file-icon.c b/src/xfdesktop-file-icon.c
index 87ae64f8..0d4753dd 100644
--- a/src/xfdesktop-file-icon.c
+++ b/src/xfdesktop-file-icon.c
@@ -1,7 +1,8 @@
/*
* xfdesktop - xfce4's desktop manager
*
- * Copyright (c) 2006 Brian Tarricone, <bjt23@cornell.edu>
+ * Copyright(c) 2006 Brian Tarricone, <bjt23@cornell.edu>
+ * Copyright(c) 2006 Benedikt Meurer, <benny@xfce.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -39,9 +40,8 @@ struct _XfdesktopFileIconPrivate
gint16 col;
GdkPixbuf *pix;
gint cur_pix_size;
- gchar *label;
GdkRectangle extents;
- ThunarVfsPath *path;
+ ThunarVfsInfo *info;
GdkScreen *gscreen;
};
@@ -69,7 +69,6 @@ static void xfdesktop_file_icon_activated(XfdesktopIcon *icon);
static void xfdesktop_file_icon_menu_popup(XfdesktopIcon *icon);
-static ThunarVfsMimeInfo *xfdesktop_file_icon_get_mime_info(XfdesktopFileIcon *icon);
static GdkPixbuf *xfdesktop_fallback_icon = NULL;
static GQuark xfdesktop_mime_app_quark = 0;
@@ -81,7 +80,6 @@ G_DEFINE_TYPE_EXTENDED(XfdesktopFileIcon, xfdesktop_file_icon,
xfdesktop_file_icon_icon_init))
-/* FIXME: memleak */
static ThunarVfsMimeDatabase *thunar_mime_database = NULL;
@@ -98,6 +96,14 @@ xfdesktop_file_icon_class_init(XfdesktopFileIconClass *klass)
static void
xfdesktop_file_icon_init(XfdesktopFileIcon *icon)
{
+ /* grab a shared reference on the mime database */
+ if(thunar_mime_database == NULL) {
+ thunar_mime_database = thunar_vfs_mime_database_get_default();
+ g_object_add_weak_pointer(G_OBJECT(thunar_mime_database), (gpointer) &thunar_mime_database);
+ } else {
+ g_object_ref(G_OBJECT(thunar_mime_database));
+ }
+
icon->priv = g_new0(XfdesktopFileIconPrivate, 1);
}
@@ -109,10 +115,8 @@ xfdesktop_file_icon_finalize(GObject *obj)
if(icon->priv->pix)
g_object_unref(G_OBJECT(icon->priv->pix));
- g_free(icon->priv->label);
-
- if(icon->priv->path)
- thunar_vfs_path_unref(icon->priv->path);
+ if(icon->priv->info)
+ thunar_vfs_info_unref(icon->priv->info);
g_free(icon->priv);
@@ -135,11 +139,11 @@ xfdesktop_file_icon_icon_init(XfdesktopIconIface *iface)
XfdesktopFileIcon *
-xfdesktop_file_icon_new(ThunarVfsPath *path,
+xfdesktop_file_icon_new(ThunarVfsInfo *info,
GdkScreen *screen)
{
XfdesktopFileIcon *file_icon = g_object_new(XFDESKTOP_TYPE_FILE_ICON, NULL);
- file_icon->priv->path = thunar_vfs_path_ref(path);
+ file_icon->priv->info = thunar_vfs_info_ref(info);
file_icon->priv->gscreen = screen;
return file_icon;
@@ -151,52 +155,31 @@ xfdesktop_file_icon_peek_pixbuf(XfdesktopIcon *icon,
gint size)
{
XfdesktopFileIcon *file_icon = XFDESKTOP_FILE_ICON(icon);
+ const gchar *icon_name;
if(!file_icon->priv->pix || size != file_icon->priv->cur_pix_size) {
- ThunarVfsInfo *info;
-
if(file_icon->priv->pix) {
g_object_unref(G_OBJECT(file_icon->priv->pix));
file_icon->priv->pix = NULL;
}
-
- info = thunar_vfs_info_new_for_path(file_icon->priv->path, NULL);
-
- if(info) {
- if(info->type == THUNAR_VFS_FILE_TYPE_DIRECTORY) {
- file_icon->priv->pix = xfce_themed_icon_load("stock_folder", size);
+
+ icon_name = thunar_vfs_info_get_custom_icon(file_icon->priv->info);
+ if(icon_name) {
+ file_icon->priv->pix = xfce_themed_icon_load(icon_name, size);
+ if(file_icon->priv->pix)
+ file_icon->priv->cur_pix_size = size;
+ }
+
+ if(!file_icon->priv->pix) {
+ /* FIXME: GtkIconTheme/XfceIconTheme */
+ icon_name = thunar_vfs_mime_info_lookup_icon_name(file_icon->priv->info->mime_info,
+ gtk_icon_theme_get_default());
+
+ if(icon_name) {
+ file_icon->priv->pix = xfce_themed_icon_load(icon_name, size);
if(file_icon->priv->pix)
file_icon->priv->cur_pix_size = size;
- } else {
- const gchar *custom_icon = thunar_vfs_info_get_custom_icon(info);
-
- if(custom_icon) {
- file_icon->priv->pix = xfce_themed_icon_load(custom_icon, size);
- if(file_icon->priv->pix)
- file_icon->priv->cur_pix_size = size;
- }
-
- if(!file_icon->priv->pix) {
- ThunarVfsMimeInfo *mime_info;
-
- mime_info = xfdesktop_file_icon_get_mime_info(file_icon);
- if(mime_info) {
- /* FIXME: GtkIconTheme/XfceIconTheme */
- const gchar *icon_name = thunar_vfs_mime_info_lookup_icon_name(mime_info,
- gtk_icon_theme_get_default());
-
- if(icon_name) {
- file_icon->priv->pix = xfce_themed_icon_load(icon_name, size);
- if(file_icon->priv->pix)
- file_icon->priv->cur_pix_size = size;
- }
-
- thunar_vfs_mime_info_unref(mime_info);
- }
- }
}
-
- thunar_vfs_info_unref(info);
}
}
@@ -225,16 +208,7 @@ xfdesktop_file_icon_peek_pixbuf(XfdesktopIcon *icon,
static G_CONST_RETURN gchar *
xfdesktop_file_icon_peek_label(XfdesktopIcon *icon)
{
- XfdesktopFileIcon *file_icon = XFDESKTOP_FILE_ICON(icon);
-
- if(!file_icon->priv->label) {
- const char *name = thunar_vfs_path_get_name(file_icon->priv->path);
- if(name)
- file_icon->priv->label = g_filename_to_utf8(name, -1, NULL,
- NULL, NULL);
- }
-
- return file_icon->priv->label;
+ return XFDESKTOP_FILE_ICON(icon)->priv->info->display_name;
}
static void
@@ -296,57 +270,62 @@ static void
xfdesktop_file_icon_activated(XfdesktopIcon *icon)
{
XfdesktopFileIcon *file_icon = XFDESKTOP_FILE_ICON(icon);
- ThunarVfsMimeInfo *mime_info;
ThunarVfsMimeApplication *mime_app;
- ThunarVfsInfo *info = thunar_vfs_info_new_for_path(file_icon->priv->path,
- NULL);
+ const ThunarVfsInfo *info = file_icon->priv->info;
gboolean succeeded = FALSE;
- GList *path_list = g_list_prepend(NULL, file_icon->priv->path);
+ gchar *thunar_app, *folder_name, *commandline;
+ gchar *display_name;
+ gint status;
+ GList *path_list = g_list_prepend(NULL, info->path);
TRACE("entering");
- if(info) {
- if(info->type == THUNAR_VFS_FILE_TYPE_DIRECTORY) {
- gchar *thunar_app = g_find_program_in_path("Thunar");
+ if(info->type == THUNAR_VFS_FILE_TYPE_DIRECTORY) {
+ folder_name = thunar_vfs_path_dup_string(file_icon->priv->info->path);
+ display_name = gdk_screen_make_display_name(file_icon->priv->gscreen);
+
+ /* try the org.xfce.FileManager D-BUS interface first */
+ commandline = g_strdup_printf("dbus-send --print-reply --dest=org.xfce.FileManager "
+ "/org/xfce/FileManager org.xfce.FileManager.Launch "
+ "string:\"%s\" string:\"%s\"", folder_name, display_name);
+ succeeded = (g_spawn_command_line_sync(commandline, NULL, NULL, &status, NULL) && status == 0);
+ g_free(commandline);
+
+ /* hardcoded fallback to Thunar if that didn't work */
+ if(!succeeded) {
+ thunar_app = g_find_program_in_path("Thunar");
if(thunar_app) {
- gchar *folder_name = thunar_vfs_path_dup_string(file_icon->priv->path);
- gchar *commandline = g_strconcat(thunar_app, " \"", folder_name,
- "\"", NULL);
+ commandline = g_strconcat("env DISPLAY=\"", display_name, "\" ", thunar_app, " \"", folder_name, "\"", NULL);
DBG("executing:\n%s\n", commandline);
succeeded = xfce_exec(commandline, FALSE, TRUE, NULL);
- g_free(folder_name);
g_free(commandline);
}
g_free(thunar_app);
- } else if(info->flags & THUNAR_VFS_FILE_FLAGS_EXECUTABLE) {
- succeeded = thunar_vfs_info_execute(info,
- file_icon->priv->gscreen,
- path_list,
- NULL);
}
-
- thunar_vfs_info_unref(info);
+
+ g_free(display_name);
+ g_free(folder_name);
+ } else if(info->flags & THUNAR_VFS_FILE_FLAGS_EXECUTABLE) {
+ succeeded = thunar_vfs_info_execute(info,
+ file_icon->priv->gscreen,
+ NULL,
+ NULL);
}
if(!succeeded) {
- mime_info = xfdesktop_file_icon_get_mime_info(file_icon);
- if(mime_info) {
- mime_app = thunar_vfs_mime_database_get_default_application(thunar_mime_database,
- mime_info);
- if(mime_app) {
- DBG("executing");
-
- succeeded = thunar_vfs_mime_handler_exec(THUNAR_VFS_MIME_HANDLER(mime_app),
- file_icon->priv->gscreen,
- path_list,
- NULL);
- g_object_unref(G_OBJECT(mime_app));
- }
-
- thunar_vfs_mime_info_unref(mime_info);
+ mime_app = thunar_vfs_mime_database_get_default_application(thunar_mime_database,
+ info->mime_info);
+ if(mime_app) {
+ DBG("executing");
+
+ succeeded = thunar_vfs_mime_handler_exec(THUNAR_VFS_MIME_HANDLER(mime_app),
+ file_icon->priv->gscreen,
+ path_list,
+ NULL);
+ g_object_unref(G_OBJECT(mime_app));
}
}
@@ -361,11 +340,9 @@ xfdesktop_file_icon_menu_rename(GtkWidget *widget,
GtkWidget *dlg, *entry, *lbl, *img, *hbox, *vbox, *topvbox;
GdkPixbuf *pix;
gchar *title, *p;
- const gchar *name;
gint w, h;
- title = g_strdup_printf(_("Rename \"%s\""),
- thunar_vfs_path_get_name(icon->priv->path));
+ title = g_strdup_printf(_("Rename \"%s\""), icon->priv->info->display_name);
dlg = gtk_dialog_new_with_buttons(title, NULL, GTK_DIALOG_NO_SEPARATOR,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
@@ -400,10 +377,9 @@ xfdesktop_file_icon_menu_rename(GtkWidget *widget,
gtk_box_pack_start(GTK_BOX(vbox), lbl, FALSE, FALSE, 0);
entry = gtk_entry_new();
- name = xfdesktop_file_icon_peek_label(XFDESKTOP_ICON(icon));
- gtk_entry_set_text(GTK_ENTRY(entry), name);
- if((p = g_utf8_strrchr(name, -1, '.'))) {
- gint offset = g_utf8_strlen(name, p - name);
+ gtk_entry_set_text(GTK_ENTRY(entry), icon->priv->info->display_name);
+ if((p = g_utf8_strrchr(icon->priv->info->display_name, -1, '.'))) {
+ gint offset = g_utf8_strlen(icon->priv->info->display_name, p - icon->priv->info->display_name);
gtk_editable_set_position(GTK_EDITABLE(entry), offset);
gtk_editable_select_region(GTK_EDITABLE(entry), 0, offset);
}
@@ -412,16 +388,15 @@ xfdesktop_file_icon_menu_rename(GtkWidget *widget,
gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
if(GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dlg))) {
- ThunarVfsInfo *info = thunar_vfs_info_new_for_path(icon->priv->path,
- NULL);
gchar *new_name;
GError *error = NULL;
new_name = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
- if(!thunar_vfs_info_rename(info, new_name, &error)) {
+ // FIXME: Need to re-register with the VFS monitor after successfull rename
+ if(!thunar_vfs_info_rename(icon->priv->info, new_name, &error)) {
gchar *primary = g_strdup_printf(_("Failed to rename \"%s\" to \"%s\":"),
- name, new_name);
+ icon->priv->info->display_name, new_name);
xfce_message_dialog(NULL, _("Error"), GTK_STOCK_DIALOG_ERROR,
primary, error->message,
GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT, NULL);
@@ -440,8 +415,7 @@ xfdesktop_delete_file_error(ThunarVfsJob *job,
gpointer user_data)
{
XfdesktopFileIcon *icon = XFDESKTOP_FILE_ICON(user_data);
- gchar *primary = g_strdup_printf("There was an error deleting \"%s\":",
- thunar_vfs_path_get_name(icon->priv->path));
+ gchar *primary = g_strdup_printf("There was an error deleting \"%s\":", icon->priv->info->display_name);
xfce_message_dialog(NULL, _("Error"), GTK_STOCK_DIALOG_ERROR, primary,
error->message, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT,
@@ -460,7 +434,7 @@ xfdesktop_file_icon_menu_delete(GtkWidget *widget,
ThunarVfsJob *job;
primary = g_strdup_printf("Are you sure that you want to permanently delete \"%s\"?",
- thunar_vfs_path_get_name(icon->priv->path));
+ icon->priv->info->display_name);
ret = xfce_message_dialog(NULL, _("Question"), GTK_STOCK_DIALOG_QUESTION,
primary,
_("If you delete a file, it is permanently lost."),
@@ -468,7 +442,9 @@ xfdesktop_file_icon_menu_delete(GtkWidget *widget,
GTK_STOCK_DELETE, GTK_RESPONSE_ACCEPT, NULL);
g_free(primary);
if(GTK_RESPONSE_ACCEPT == ret) {
- job = thunar_vfs_unlink_file(icon->priv->path, NULL);
+ job = thunar_vfs_unlink_file(icon->priv->info->path, NULL);
+ // FIXME: This is going to crash if the icon is destroyed and the
+ // error signal is emitted afterwards
g_signal_connect(G_OBJECT(job), "error",
G_CALLBACK(xfdesktop_delete_file_error), icon);
g_signal_connect(G_OBJECT(job), "finished",
@@ -482,7 +458,7 @@ xfdesktop_file_icon_menu_executed(GtkWidget *widget,
{
XfdesktopFileIcon *icon = XFDESKTOP_FILE_ICON(user_data);
ThunarVfsMimeApplication *mime_app;
- GList *path_list = g_list_append(NULL, icon->priv->path);
+ GList *path_list = g_list_append(NULL, icon->priv->info->path);
mime_app = g_object_get_qdata(G_OBJECT(widget), xfdesktop_mime_app_quark);
g_return_if_fail(mime_app);
@@ -550,8 +526,8 @@ static void
xfdesktop_file_icon_menu_popup(XfdesktopIcon *icon)
{
XfdesktopFileIcon *file_icon = XFDESKTOP_FILE_ICON(icon);
- ThunarVfsMimeInfo *mime_info = xfdesktop_file_icon_get_mime_info(file_icon);
- ThunarVfsInfo *info;
+ ThunarVfsInfo *info = file_icon->priv->info;
+ ThunarVfsMimeInfo *mime_info = info->mime_info;
GList *mime_apps, *l;
GtkWidget *menu, *mi, *img;
@@ -560,7 +536,6 @@ xfdesktop_file_icon_menu_popup(XfdesktopIcon *icon)
g_signal_connect_swapped(G_OBJECT(menu), "deactivate",
G_CALLBACK(g_idle_add), menu_deactivate_idled);
- info = thunar_vfs_info_new_for_path(file_icon->priv->path, NULL);
if(info->type == THUNAR_VFS_FILE_TYPE_DIRECTORY) {
img = gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
gtk_widget_show(img);
@@ -576,38 +551,35 @@ xfdesktop_file_icon_menu_popup(XfdesktopIcon *icon)
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), img);
gtk_widget_show(mi);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
- } if(mime_info) {
- mime_apps = thunar_vfs_mime_database_get_applications(thunar_mime_database,
- mime_info);
- if(mime_apps) {
- gint w, h;
- ThunarVfsMimeApplication *mime_app = mime_apps->data;
-
- gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &w, &h);
-
- mi = xfdesktop_menu_item_from_mime_app(file_icon, mime_app, w,
- TRUE);
+ }
+ mime_apps = thunar_vfs_mime_database_get_applications(thunar_mime_database,
+ mime_info);
+ if(mime_apps) {
+ gint w, h;
+ ThunarVfsMimeApplication *mime_app = mime_apps->data;
+
+ gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &w, &h);
+
+ mi = xfdesktop_menu_item_from_mime_app(file_icon, mime_app, w,
+ TRUE);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
+
+ if(mime_apps->next) {
+ mi = gtk_separator_menu_item_new();
+ gtk_widget_show(mi);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
- if(mime_apps->next) {
- mi = gtk_separator_menu_item_new();
- gtk_widget_show(mi);
+ for(l = mime_apps->next; l; l = l->next) {
+ mime_app = l->data;
+ mi = xfdesktop_menu_item_from_mime_app(file_icon,
+ mime_app, w,
+ FALSE);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
-
- for(l = mime_apps->next; l; l = l->next) {
- mime_app = l->data;
- mi = xfdesktop_menu_item_from_mime_app(file_icon,
- mime_app, w,
- FALSE);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
- }
}
-
- /* don't free the mime apps! just the list! */
- g_list_free(mime_apps);
}
- thunar_vfs_mime_info_unref(mime_info);
+ /* don't free the mime apps! just the list! */
+ g_list_free(mime_apps);
}
/* FIXME: implement this */
@@ -617,8 +589,6 @@ xfdesktop_file_icon_menu_popup(XfdesktopIcon *icon)
gtk_widget_set_sensitive(mi, FALSE);
}
- thunar_vfs_info_unref(info);
-
mi = gtk_separator_menu_item_new();
gtk_widget_show(mi);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
@@ -679,23 +649,4 @@ xfdesktop_file_icon_menu_popup(XfdesktopIcon *icon)
-static ThunarVfsMimeInfo *
-xfdesktop_file_icon_get_mime_info(XfdesktopFileIcon *icon)
-{
- ThunarVfsMimeInfo *mime_info = NULL;
- gchar *file_path;
-
- if(!thunar_mime_database)
- thunar_mime_database = thunar_vfs_mime_database_get_default();
-
- if(!icon->priv->label)
- xfdesktop_file_icon_peek_label(XFDESKTOP_ICON(icon));
-
- file_path = thunar_vfs_path_dup_string(icon->priv->path);
- mime_info = thunar_vfs_mime_database_get_info_for_file(thunar_mime_database,
- file_path,
- icon->priv->label);
- g_free(file_path);
-
- return mime_info;
-}
+
diff --git a/src/xfdesktop-file-icon.h b/src/xfdesktop-file-icon.h
index 7aaee592..ba5f97a1 100644
--- a/src/xfdesktop-file-icon.h
+++ b/src/xfdesktop-file-icon.h
@@ -51,7 +51,7 @@ struct _XfdesktopFileIconClass
GType xfdesktop_file_icon_get_type() G_GNUC_CONST;
-XfdesktopFileIcon *xfdesktop_file_icon_new(ThunarVfsPath *path,
+XfdesktopFileIcon *xfdesktop_file_icon_new(ThunarVfsInfo *info,
GdkScreen *screen);
G_END_DECLS