Author: jannis Date: 2009-07-18 17:28:56 +0000 (Sat, 18 Jul 2009) New Revision: 30347
Modified: thunar/branches/migration-to-gio/ChangeLog thunar/branches/migration-to-gio/thunar/thunar-file.c Log: * thunar/thunar-file.c: Only return true from thunar_file_is_executable() if the file is either a desktop file or is an application/x-executable or application/x-shellscript. On Windows we use g_content_type_can_be_executable() directly instead of checking for these two content types. Patch by Nick. Modified: thunar/branches/migration-to-gio/ChangeLog =================================================================== --- thunar/branches/migration-to-gio/ChangeLog 2009-07-18 16:55:47 UTC (rev 30346) +++ thunar/branches/migration-to-gio/ChangeLog 2009-07-18 17:28:56 UTC (rev 30347) @@ -1,5 +1,13 @@ 2009-07-18 Jannis Pohlmann <jan...@xfce.org> + * thunar/thunar-file.c: Only return true from + thunar_file_is_executable() if the file is either a desktop file or + is an application/x-executable or application/x-shellscript. On + Windows we use g_content_type_can_be_executable() directly instead + of checking for these two content types. Patch by Nick. + +2009-07-18 Jannis Pohlmann <jan...@xfce.org> + * thunar/thunar-file.{c,h}: Introduce new function thunar_file_same_filesystem() which uses G_FILE_ATTRIBUTE_ID_FILESYSTEM to check whether two files reside on Modified: thunar/branches/migration-to-gio/thunar/thunar-file.c =================================================================== --- thunar/branches/migration-to-gio/thunar/thunar-file.c 2009-07-18 16:55:47 UTC (rev 30346) +++ thunar/branches/migration-to-gio/thunar/thunar-file.c 2009-07-18 17:28:56 UTC (rev 30347) @@ -2026,16 +2026,36 @@ gboolean thunar_file_is_executable (const ThunarFile *file) { - gboolean can_execute; + gboolean can_execute = FALSE; + const gchar *content_type; _thunar_return_val_if_fail (THUNAR_IS_FILE (file), FALSE); if (file->info == NULL) return FALSE; - - can_execute = g_file_info_get_attribute_boolean (file->info, - G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE); + if (g_file_info_get_attribute_boolean (file->info, G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE)) + { + /* get the content type of the file */ + content_type = g_file_info_get_content_type (file->info); + if (G_LIKELY (content_type != NULL)) + { +#ifdef G_OS_WIN32 + /* check for .exe, .bar or .com */ + can_execute = g_content_type_can_be_executable (content_type); +#else + /* check if the content type is save to execute, we don't use + * g_content_type_can_be_executable() for unix because it also returns + * true for "text/plain" and we don't want that */ + if (g_content_type_is_a (content_type, "application/x-executable") + || g_content_type_is_a (content_type, "application/x-shellscript")) + { + can_execute = TRUE; + } +#endif + } + } + return can_execute || thunar_file_is_desktop_file (file); } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits