mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-08-25 02:36:07 +00:00
Fix how autorunning works. Instead of inhibiting autorunning every time we
2008-04-29 David Zeuthen <davidz@redhat.com> * libnautilus-private/nautilus-autorun.c: * libnautilus-private/nautilus-autorun.h: * libnautilus-private/nautilus-file-operations.c: (volume_mount_cb), (nautilus_file_operations_mount_volume): * libnautilus-private/nautilus-file-operations.h: * libnautilus-private/nautilus-mime-actions.c: (activation_mount_not_mounted_callback): * libnautilus-private/nautilus-vfs-file.c: (vfs_file_mount_callback): * src/nautilus-application.c: (startup_volume_mount_cb), (volume_added_callback): * src/nautilus-places-sidebar.c: (open_selected_bookmark), (mount_shortcut_cb): * src/nautilus-window-manage-views.c: (mount_not_mounted_callback): Fix how autorunning works. Instead of inhibiting autorunning every time we run something, we turn things around and instead allow automounting only in the instance where Nautilus automounted something itself. So in essence this patch is s/inhibit/allow/. This fixes an annoying problem where Nautilus would do autorun everytime something was mounted even from the command line. A consequence of this are windows popping up and other annoyances. This patch fixes that problem. * src/nautilus-x-content-bar.c: (nautilus_x_content_bar_init): Make sure the label is ellipsized. svn path=/trunk/; revision=14112
This commit is contained in:
parent
fe93322d03
commit
0e85a1cae0
28
ChangeLog
28
ChangeLog
|
@ -1,3 +1,31 @@
|
|||
2008-04-29 David Zeuthen <davidz@redhat.com>
|
||||
|
||||
* libnautilus-private/nautilus-autorun.c:
|
||||
* libnautilus-private/nautilus-autorun.h:
|
||||
* libnautilus-private/nautilus-file-operations.c:
|
||||
(volume_mount_cb), (nautilus_file_operations_mount_volume):
|
||||
* libnautilus-private/nautilus-file-operations.h:
|
||||
* libnautilus-private/nautilus-mime-actions.c:
|
||||
(activation_mount_not_mounted_callback):
|
||||
* libnautilus-private/nautilus-vfs-file.c:
|
||||
(vfs_file_mount_callback):
|
||||
* src/nautilus-application.c: (startup_volume_mount_cb),
|
||||
(volume_added_callback):
|
||||
* src/nautilus-places-sidebar.c: (open_selected_bookmark),
|
||||
(mount_shortcut_cb):
|
||||
* src/nautilus-window-manage-views.c: (mount_not_mounted_callback):
|
||||
Fix how autorunning works. Instead of inhibiting autorunning
|
||||
every time we run something, we turn things around and instead
|
||||
allow automounting only in the instance where Nautilus automounted
|
||||
something itself. So in essence this patch is s/inhibit/allow/.
|
||||
This fixes an annoying problem where Nautilus would do autorun
|
||||
everytime something was mounted even from the command line. A
|
||||
consequence of this are windows popping up and other annoyances.
|
||||
This patch fixes that problem.
|
||||
|
||||
* src/nautilus-x-content-bar.c: (nautilus_x_content_bar_init):
|
||||
Make sure the label is ellipsized.
|
||||
|
||||
2008-04-27 Cosimo Cecchi <cosimoc@gnome.org>
|
||||
|
||||
* libnautilus-private/nautilus-file-operations.c: (delete_files),
|
||||
|
|
|
@ -1353,54 +1353,31 @@ nautilus_autorun_get_cached_x_content_types_for_mount (GMount *mount)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static GList *inhibit_mount_handling_for = NULL;
|
||||
|
||||
|
||||
static gboolean
|
||||
remove_inhibit_file_cb (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)
|
||||
remove_allow_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_timeout_add_full (0,
|
||||
5000,
|
||||
remove_inhibit_volume,
|
||||
g_object_ref (volume),
|
||||
g_object_unref);
|
||||
g_object_set_data (G_OBJECT (volume), "nautilus-allow-autorun", GINT_TO_POINTER (1));
|
||||
}
|
||||
|
||||
void
|
||||
nautilus_allow_autorun_for_volume_finish (GVolume *volume)
|
||||
{
|
||||
if (g_object_get_data (G_OBJECT (volume), "nautilus-allow-autorun") != NULL) {
|
||||
g_timeout_add_full (0,
|
||||
5000,
|
||||
remove_allow_volume,
|
||||
g_object_ref (volume),
|
||||
g_object_unref);
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -1420,17 +1397,16 @@ should_skip_native_mount_root (GFile *root)
|
|||
static gboolean
|
||||
should_autorun_mount (GMount *mount)
|
||||
{
|
||||
GFile *root, *file;
|
||||
GList *l;
|
||||
GFile *root;
|
||||
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 +1419,6 @@ should_autorun_mount (GMount *mount)
|
|||
|
||||
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)) ||
|
||||
|
|
|
@ -89,7 +89,7 @@ void nautilus_autorun_get_x_content_types_for_mount_async (GMount *mount,
|
|||
|
||||
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);
|
||||
void nautilus_allow_autorun_for_volume_finish (GVolume *volume);
|
||||
|
||||
#endif /* NAUTILUS_AUTORUN_H */
|
||||
|
|
|
@ -2030,11 +2030,9 @@ volume_mount_cb (GObject *source_object,
|
|||
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;
|
||||
nautilus_allow_autorun_for_volume_finish (G_VOLUME (source_object));
|
||||
if (!g_volume_mount_finish (G_VOLUME (source_object), res, &error)) {
|
||||
if (error->code != G_IO_ERROR_FAILED_HANDLED) {
|
||||
name = g_volume_get_name (G_VOLUME (source_object));
|
||||
|
@ -2046,12 +2044,8 @@ volume_mount_cb (GObject *source_object,
|
|||
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);
|
||||
}
|
||||
|
||||
|
@ -2059,12 +2053,13 @@ volume_mount_cb (GObject *source_object,
|
|||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -93,7 +93,7 @@ void nautilus_file_operations_unmount_mount (GtkWindow *par
|
|||
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,
|
||||
|
|
|
@ -1258,7 +1258,6 @@ activation_mount_not_mounted_callback (GObject *source_object,
|
|||
g_error_free (error);
|
||||
} else {
|
||||
location = nautilus_file_get_location (file);
|
||||
nautilus_inhibit_autorun_for_file (location);
|
||||
g_object_unref (G_OBJECT (location));
|
||||
}
|
||||
|
||||
|
|
|
@ -239,7 +239,6 @@ vfs_file_mount_callback (GObject *source_object,
|
|||
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) {
|
||||
|
|
|
@ -171,9 +171,7 @@ startup_volume_mount_cb (GObject *source_object,
|
|||
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 @@ volume_added_callback (GVolumeMonitor *monitor,
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1304,7 +1304,7 @@ open_selected_bookmark (NautilusPlacesSidebar *sidebar,
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
@ -1419,7 +1419,7 @@ mount_shortcut_cb (GtkMenuItem *item,
|
|||
-1);
|
||||
|
||||
if (volume != NULL) {
|
||||
nautilus_file_operations_mount_volume (NULL, volume, TRUE);
|
||||
nautilus_file_operations_mount_volume (NULL, volume, FALSE);
|
||||
g_object_unref (volume);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -913,7 +913,6 @@ mount_not_mounted_callback (GObject *source_object,
|
|||
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 |
|
||||
|
|
|
@ -271,7 +271,9 @@ nautilus_x_content_bar_init (NautilusXContentBar *bar)
|
|||
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);
|
||||
|
|
Loading…
Reference in a new issue