From d8b00dc8560b51349c206c8e4c7fe2ae04fceaba Mon Sep 17 00:00:00 2001 From: David Zeuthen Date: Apr 16 2008 06:43:57 +0000 Subject: - Revert Fedora livecd mount (fix is in latest gvfs packages) and add a patch to avoid trying to autorun mounts that are mounted from outside Nautilus (#442189) --- diff --git a/nautilus-2.22-fix-autorun.patch b/nautilus-2.22-fix-autorun.patch new file mode 100644 index 0000000..aaf3834 --- /dev/null +++ b/nautilus-2.22-fix-autorun.patch @@ -0,0 +1,266 @@ +Index: src/nautilus-application.c +=================================================================== +--- src/nautilus-application.c (revision 14073) ++++ src/nautilus-application.c (working copy) +@@ -171,9 +171,7 @@ + GAsyncResult *res, + gpointer user_data) + { +- if (g_volume_mount_finish (G_VOLUME (source_object), res, NULL)) { +- nautilus_inhibit_autorun_for_volume (G_VOLUME (source_object)); +- } ++ g_volume_mount_finish (G_VOLUME (source_object), res, NULL); + } + + static void +@@ -1344,7 +1342,7 @@ + if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_MEDIA_AUTOMOUNT) && + g_volume_should_automount (volume) && + g_volume_can_mount (volume)) { +- nautilus_file_operations_mount_volume (NULL, volume, FALSE); ++ nautilus_file_operations_mount_volume (NULL, volume, TRUE); + } + } + +Index: src/nautilus-window-manage-views.c +=================================================================== +--- src/nautilus-window-manage-views.c (revision 14073) ++++ src/nautilus-window-manage-views.c (working copy) +@@ -913,7 +913,6 @@ + window->details->mount_error = NULL; + g_error_free (error); + } else { +- nautilus_inhibit_autorun_for_file (G_FILE (source_object)); + nautilus_file_invalidate_all_attributes (window->details->determine_view_file); + nautilus_file_call_when_ready (window->details->determine_view_file, + NAUTILUS_FILE_ATTRIBUTE_INFO | +Index: src/nautilus-places-sidebar.c +=================================================================== +--- src/nautilus-places-sidebar.c (revision 14073) ++++ src/nautilus-places-sidebar.c (working copy) +@@ -1325,7 +1325,7 @@ + GVolume *volume; + gtk_tree_model_get (model, &iter, PLACES_SIDEBAR_COLUMN_VOLUME, &volume, -1); + if (volume != NULL) { +- nautilus_file_operations_mount_volume (NULL, volume, TRUE); ++ nautilus_file_operations_mount_volume (NULL, volume, FALSE); + g_object_unref (volume); + } + } +@@ -1440,7 +1440,7 @@ + -1); + + if (volume != NULL) { +- nautilus_file_operations_mount_volume (NULL, volume, TRUE); ++ nautilus_file_operations_mount_volume (NULL, volume, FALSE); + g_object_unref (volume); + } + } +Index: src/nautilus-x-content-bar.c +=================================================================== +--- src/nautilus-x-content-bar.c (revision 14073) ++++ src/nautilus-x-content-bar.c (working copy) +@@ -271,7 +271,9 @@ + hbox = GTK_WIDGET (bar); + + bar->priv->label = gtk_label_new (NULL); +- gtk_box_pack_start (GTK_BOX (bar), bar->priv->label, FALSE, FALSE, 0); ++ gtk_label_set_ellipsize (GTK_LABEL (bar->priv->label), PANGO_ELLIPSIZE_END); ++ gtk_misc_set_alignment (GTK_MISC (bar->priv->label), 0.0, 0.5); ++ gtk_box_pack_start (GTK_BOX (bar), bar->priv->label, TRUE, TRUE, 0); + + bar->priv->button = gtk_button_new (); + gtk_box_pack_end (GTK_BOX (hbox), bar->priv->button, FALSE, FALSE, 0); +Index: libnautilus-private/nautilus-mime-actions.c +=================================================================== +--- libnautilus-private/nautilus-mime-actions.c (revision 14073) ++++ libnautilus-private/nautilus-mime-actions.c (working copy) +@@ -1258,7 +1258,6 @@ + g_error_free (error); + } else { + location = nautilus_file_get_location (file); +- nautilus_inhibit_autorun_for_file (location); + g_object_unref (G_OBJECT (location)); + } + +Index: libnautilus-private/nautilus-autorun.c +=================================================================== +--- libnautilus-private/nautilus-autorun.c (revision 14073) ++++ libnautilus-private/nautilus-autorun.c (working copy) +@@ -1353,52 +1353,22 @@ + return NULL; + } + +- +-static GList *inhibit_mount_handling_for = NULL; +- +- + static gboolean +-remove_inhibit_file_cb (gpointer data) ++remove_allow_volume (gpointer data) + { +- GFile *file = data; +- GList *l; +- +- l = g_list_find (inhibit_mount_handling_for, file); +- if (l != NULL) { +- inhibit_mount_handling_for = g_list_delete_link (inhibit_mount_handling_for, l); +- g_object_unref (file); +- } +- +- return FALSE; +-} +- +-void +-nautilus_inhibit_autorun_for_file (GFile *file) +-{ +- inhibit_mount_handling_for = g_list_prepend (inhibit_mount_handling_for, g_object_ref (file)); +- g_timeout_add_full (0, +- 5000, +- remove_inhibit_file_cb, +- g_object_ref (file), +- g_object_unref); +-} +- +-static gboolean +-remove_inhibit_volume (gpointer data) +-{ + GVolume *volume = data; + +- g_object_set_data (G_OBJECT (volume), "nautilus-inhibit-autorun", NULL); ++ g_object_set_data (G_OBJECT (volume), "nautilus-allow-autorun", NULL); + return FALSE; + } + + void +-nautilus_inhibit_autorun_for_volume (GVolume *volume) ++nautilus_allow_autorun_for_volume (GVolume *volume) + { +- g_object_set_data (G_OBJECT (volume), "nautilus-inhibit-autorun", GINT_TO_POINTER (1)); ++ g_object_set_data (G_OBJECT (volume), "nautilus-allow-autorun", GINT_TO_POINTER (1)); + g_timeout_add_full (0, + 5000, +- remove_inhibit_volume, ++ remove_allow_volume, + g_object_ref (volume), + g_object_unref); + } +@@ -1425,12 +1395,12 @@ + GVolume *enclosing_volume; + gboolean ignore_autorun; + +- ignore_autorun = FALSE; ++ ignore_autorun = TRUE; + enclosing_volume = g_mount_get_volume (mount); + if (enclosing_volume != NULL) { +- if (g_object_get_data (G_OBJECT (enclosing_volume), "nautilus-inhibit-autorun") != NULL) { +- ignore_autorun = TRUE; +- g_object_set_data (G_OBJECT (enclosing_volume), "nautilus-inhibit-autorun", NULL); ++ if (g_object_get_data (G_OBJECT (enclosing_volume), "nautilus-allow-autorun") != NULL) { ++ ignore_autorun = FALSE; ++ g_object_set_data (G_OBJECT (enclosing_volume), "nautilus-allow-autorun", NULL); + } + } + +@@ -1443,18 +1413,6 @@ + + root = g_mount_get_root (mount); + +- for (l = inhibit_mount_handling_for; l != NULL; l = l->next) { +- file = l->data; +- if (g_file_has_prefix (file, root)) { +- ignore_autorun = TRUE; +- +- inhibit_mount_handling_for = g_list_delete_link (inhibit_mount_handling_for, l); +- g_object_unref (file); +- +- break; +- } +- } +- + /* only do autorun on local files or files where g_volume_should_automount() returns TRUE */ + ignore_autorun = TRUE; + if ((g_file_is_native (root) && !should_skip_native_mount_root (root)) || +Index: libnautilus-private/nautilus-autorun.h +=================================================================== +--- libnautilus-private/nautilus-autorun.h (revision 14073) ++++ libnautilus-private/nautilus-autorun.h (working copy) +@@ -89,7 +89,6 @@ + + void nautilus_autorun_launch_for_mount (GMount *mount, GAppInfo *app_info); + +-void nautilus_inhibit_autorun_for_volume (GVolume *volume); +-void nautilus_inhibit_autorun_for_file (GFile *file); ++void nautilus_allow_autorun_for_volume (GVolume *volume); + + #endif /* NAUTILUS_AUTORUN_H */ +Index: libnautilus-private/nautilus-vfs-file.c +=================================================================== +--- libnautilus-private/nautilus-vfs-file.c (revision 14073) ++++ libnautilus-private/nautilus-vfs-file.c (working copy) +@@ -239,7 +239,6 @@ + res, &error); + nautilus_file_operation_complete (op, mounted_on, error); + if (mounted_on) { +- nautilus_inhibit_autorun_for_file (mounted_on); + g_object_unref (mounted_on); + } + if (error) { +Index: libnautilus-private/nautilus-file-operations.c +=================================================================== +--- libnautilus-private/nautilus-file-operations.c (revision 14073) ++++ libnautilus-private/nautilus-file-operations.c (working copy) +@@ -2017,10 +2017,7 @@ + GError *error; + char *primary; + char *name; +- gboolean inhibit_autorun; + +- inhibit_autorun = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (mount_op), "inhibit-autorun")); +- + error = NULL; + if (!g_volume_mount_finish (G_VOLUME (source_object), res, &error)) { + if (error->code != G_IO_ERROR_FAILED_HANDLED) { +@@ -2033,12 +2030,8 @@ + g_free (primary); + } + g_error_free (error); +- } else { +- if (inhibit_autorun) { +- nautilus_inhibit_autorun_for_volume (G_VOLUME (source_object)); +- } + } +- ++ + g_object_unref (mount_op); + } + +@@ -2046,12 +2039,13 @@ + void + nautilus_file_operations_mount_volume (GtkWindow *parent_window, + GVolume *volume, +- gboolean inhibit_autorun) ++ gboolean allow_autorun) + { + GMountOperation *mount_op; + + mount_op = eel_mount_operation_new (parent_window); +- g_object_set_data (G_OBJECT (mount_op), "inhibit-autorun", GINT_TO_POINTER (inhibit_autorun)); ++ if (allow_autorun) ++ nautilus_allow_autorun_for_volume (volume); + g_volume_mount (volume, 0, mount_op, NULL, volume_mount_cb, mount_op); + } + +Index: libnautilus-private/nautilus-file-operations.h +=================================================================== +--- libnautilus-private/nautilus-file-operations.h (revision 14073) ++++ libnautilus-private/nautilus-file-operations.h (working copy) +@@ -93,7 +93,7 @@ + gboolean check_trash); + void nautilus_file_operations_mount_volume (GtkWindow *parent_window, + GVolume *volume, +- gboolean inhibit_autorun); ++ gboolean allow_autorun); + + + void nautilus_file_operations_copy (GList *files, diff --git a/nautilus-2.22.2-hide-livecd-mount.diff b/nautilus-2.22.2-hide-livecd-mount.diff deleted file mode 100644 index 85d871f..0000000 --- a/nautilus-2.22.2-hide-livecd-mount.diff +++ /dev/null @@ -1,171 +0,0 @@ -Index: src/file-manager/fm-tree-view.c -=================================================================== ---- src/file-manager/fm-tree-view.c (revision 14068) -+++ src/file-manager/fm-tree-view.c (working copy) -@@ -590,6 +590,9 @@ - GFile *root; - GIcon *icon; - -+ if (nautilus_is_livecd (mount)) -+ return; -+ - icon = g_mount_get_icon (mount); - root = g_mount_get_root (mount); - mount_uri = g_file_get_uri (root); -Index: src/nautilus-places-sidebar.c -=================================================================== ---- src/nautilus-places-sidebar.c (revision 14068) -+++ src/nautilus-places-sidebar.c (working copy) -@@ -308,22 +308,24 @@ - volume = ll->data; - mount = g_volume_get_mount (volume); - if (mount != NULL) { -- /* Show mounted volume in the sidebar */ -- icon = g_mount_get_icon (mount); -- root = g_mount_get_root (mount); -- mount_uri = g_file_get_uri (root); -- g_object_unref (root); -- name = g_mount_get_name (mount); -- last_iter = add_place (sidebar, PLACES_MOUNTED_VOLUME, -- name, icon, mount_uri, -- drive, volume, mount, 0); -- if (strcmp (location, mount_uri) == 0) { -- gtk_tree_selection_select_iter (selection, &last_iter); -+ if (! nautilus_is_livecd (mount)) { -+ /* Show mounted volume in the sidebar */ -+ icon = g_mount_get_icon (mount); -+ root = g_mount_get_root (mount); -+ mount_uri = g_file_get_uri (root); -+ g_object_unref (root); -+ name = g_mount_get_name (mount); -+ last_iter = add_place (sidebar, PLACES_MOUNTED_VOLUME, -+ name, icon, mount_uri, -+ drive, volume, mount, 0); -+ if (strcmp (location, mount_uri) == 0) { -+ gtk_tree_selection_select_iter (selection, &last_iter); -+ } -+ g_object_unref (mount); -+ g_object_unref (icon); -+ g_free (name); -+ g_free (mount_uri); - } -- g_object_unref (mount); -- g_object_unref (icon); -- g_free (name); -- g_free (mount_uri); - } else { - /* Do show the unmounted volumes in the sidebar; - * this is so the user can mount it (in case automounting -@@ -412,6 +414,8 @@ - mounts = g_volume_monitor_get_mounts (volume_monitor); - for (l = mounts; l != NULL; l = l->next) { - mount = l->data; -+ if (nautilus_is_livecd (mount)) -+ continue; - volume = g_mount_get_volume (mount); - if (volume != NULL) { - g_object_unref (volume); -Index: libnautilus-private/nautilus-directory-async.c -=================================================================== ---- libnautilus-private/nautilus-directory-async.c (revision 14068) -+++ libnautilus-private/nautilus-directory-async.c (working copy) -@@ -968,6 +968,9 @@ - return; - } - -+ if (nautilus_is_livecd_from_info (info)) -+ return; -+ - if (g_file_info_get_name (info) == NULL) { - char *uri; - -Index: libnautilus-private/nautilus-desktop-link-monitor.c -=================================================================== ---- libnautilus-private/nautilus-desktop-link-monitor.c (revision 14068) -+++ libnautilus-private/nautilus-desktop-link-monitor.c (working copy) -@@ -192,7 +192,7 @@ - - link = NULL; - -- if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_DESKTOP_VOLUMES_VISIBLE)) { -+ if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_DESKTOP_VOLUMES_VISIBLE) && (! nautilus_is_livecd (mount))) { - link = nautilus_desktop_link_new_from_mount (mount); - monitor->details->mount_links = g_list_prepend (monitor->details->mount_links, link); - } -Index: libnautilus-private/nautilus-file.c -=================================================================== ---- libnautilus-private/nautilus-file.c (revision 14068) -+++ libnautilus-private/nautilus-file.c (working copy) -@@ -7145,3 +7145,53 @@ - } - - #endif /* !NAUTILUS_OMIT_SELF_CHECK */ -+ -+ -+gboolean -+nautilus_is_livecd (GMount *mount) -+{ -+ char *mount_name, *root_path; -+ GFile *root_file; -+ gboolean res; -+ -+ if (! mount) -+ return FALSE; -+ -+ mount_name = g_mount_get_name (mount); -+ root_file = g_mount_get_root (mount); -+ root_path = g_file_get_path (root_file); -+ -+ res = ((g_strstr_len (mount_name, strlen (mount_name), LIVECD_LABEL_STRING) == mount_name) && -+ (g_strstr_len (root_path, strlen (root_path), LIVECD_MOUNTPOINT) == root_path)); -+ -+ g_free (root_path); -+ g_free (mount_name); -+ g_object_unref (root_file); -+ -+ return res; -+} -+ -+gboolean -+nautilus_is_livecd_from_info (GFileInfo *info) -+{ -+ const char *mount_name; -+ const char *root_path; -+ gboolean res; -+ -+ if (! info) -+ return FALSE; -+ -+ if (g_file_info_get_file_type (info) != G_FILE_TYPE_MOUNTABLE) -+ return FALSE; -+ -+ mount_name = g_file_info_get_display_name (info); -+ root_path = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_TARGET_URI); -+ -+ res = ((g_strstr_len (mount_name, strlen (mount_name), LIVECD_LABEL_STRING) == mount_name) && -+ (g_strstr_len (root_path, strlen (root_path), LIVECD_MOUNTPOINT) == root_path + 7)); -+ -+ return res; -+} -+ -+ -+ -Index: libnautilus-private/nautilus-file.h -=================================================================== ---- libnautilus-private/nautilus-file.h (revision 14068) -+++ libnautilus-private/nautilus-file.h (working copy) -@@ -423,6 +423,14 @@ - /* Debugging */ - void nautilus_file_dump (NautilusFile *file); - -+/* LiveCD mount hiding */ -+#define LIVECD_LABEL_STRING "Fedora-9-" -+#define LIVECD_MOUNTPOINT "/mnt/live" -+gboolean nautilus_is_livecd (GMount *mount); -+gboolean nautilus_is_livecd_from_info (GFileInfo *info); -+ -+ -+ - typedef struct NautilusFileDetails NautilusFileDetails; - - struct NautilusFile { diff --git a/nautilus.spec b/nautilus.spec index d2dd959..03fc6b8 100644 --- a/nautilus.spec +++ b/nautilus.spec @@ -19,7 +19,7 @@ Name: nautilus Summary: Nautilus is a file manager for GNOME Version: 2.22.2 -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv2+ Group: User Interface/Desktops Source: http://download.gnome.org/sources/%{name}/2.22/%{name}-%{version}.tar.bz2 @@ -86,9 +86,7 @@ Patch6: nautilus-2.22.1-dynamic-search.patch Patch7: rtl-fix.patch Patch8: nautilus-2.22.1-hide-white-screen.patch -# livecd hiding patch (https://bugzilla.redhat.com/show_bug.cgi?id=439166) -Patch9: nautilus-2.22.2-hide-livecd-mount.diff - +Patch9: nautilus-2.22-fix-autorun.patch %description Nautilus integrates access to files, applications, media, @@ -125,7 +123,7 @@ for writing nautilus extensions. %patch6 -p1 -b .dynamic-search %patch7 -p1 -b .rtl-fix %patch8 -p1 -b .hide-white-screen -%patch9 -p0 -b .livecd +%patch9 -p0 -b .fix-autorun %build @@ -236,6 +234,11 @@ fi %{_libdir}/*.so %changelog +* Wed Apr 16 2008 David Zeuthen - 2.22.2-3 +- Revert Fedora livecd mount (fix is in latest gvfs packages) and + add a patch to avoid trying to autorun mounts that are mounted + from outside Nautilus (#442189) + * Fri Apr 11 2008 Tomas Bzatek - 2.22.2-2 - Hide Fedora livecd mount (#439166)