- 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)
This commit is contained in:
parent
4f92cec767
commit
d8b00dc856
266
nautilus-2.22-fix-autorun.patch
Normal file
266
nautilus-2.22-fix-autorun.patch
Normal file
@ -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,
|
@ -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 {
|
@ -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 <davidz@redhat.com> - 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 <tbzatek@redhat.com> - 2.22.2-2
|
||||
- Hide Fedora livecd mount (#439166)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user