diff options
Diffstat (limited to 'main/nautilus')
-rw-r--r-- | main/nautilus/001-filepeek-crash.patch | 29 | ||||
-rw-r--r-- | main/nautilus/002-automounting-locked-screen.patch | 326 | ||||
-rw-r--r-- | main/nautilus/003-filename-null.patch | 22 | ||||
-rw-r--r-- | main/nautilus/004-memory-leak.patch | 20 | ||||
-rw-r--r-- | main/nautilus/005-gbus-assertion.patch | 32 | ||||
-rw-r--r-- | main/nautilus/006-select-extension.patch | 59 | ||||
-rw-r--r-- | main/nautilus/007-tracker0.10-compat.patch | 22 | ||||
-rw-r--r-- | main/nautilus/009-default-directories.patch | 32 | ||||
-rw-r--r-- | main/nautilus/010-localpath-preview.patch | 46 | ||||
-rw-r--r-- | main/nautilus/011-keyboard-navigation.patch | 43 | ||||
-rw-r--r-- | main/nautilus/APKBUILD | 35 | ||||
-rw-r--r-- | main/nautilus/gmodule-underlinking.patch | 22 |
12 files changed, 682 insertions, 6 deletions
diff --git a/main/nautilus/001-filepeek-crash.patch b/main/nautilus/001-filepeek-crash.patch new file mode 100644 index 0000000000..82a210dd27 --- /dev/null +++ b/main/nautilus/001-filepeek-crash.patch @@ -0,0 +1,29 @@ +From b10ccbc58d8d7f2ebb9ded079ec2a36e2f4603ad Mon Sep 17 00:00:00 2001 +From: Tomas Bzatek <tbzatek@redhat.com> +Date: Thu, 27 Jan 2011 10:22:10 +0000 +Subject: Prevent a crash in nautilus_file_peek_display_name() on invalid NautilusFile + +This is more a workaround only, expect assert failures at other +places when something bad happens. There's a race condition somewhere, +this patch only prevents immediate crash. + +Patch by Marcus Husar <marcus.husar@rose.uni-heidelberg.de> + +https://bugzilla.gnome.org/show_bug.cgi?id=602500 +--- +diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c +index 2c5b868..c854163 100644 +--- a/libnautilus-private/nautilus-file.c ++++ b/libnautilus-private/nautilus-file.c +@@ -3780,6 +3780,9 @@ nautilus_file_peek_display_name (NautilusFile *file) + const char *name; + char *escaped_name; + ++ if (file == NULL || nautilus_file_is_gone (file)) ++ return ""; ++ + /* Default to display name based on filename if its not set yet */ + + if (file->details->display_name == NULL) { +-- +cgit v0.9 diff --git a/main/nautilus/002-automounting-locked-screen.patch b/main/nautilus/002-automounting-locked-screen.patch new file mode 100644 index 0000000000..d8c0497ba9 --- /dev/null +++ b/main/nautilus/002-automounting-locked-screen.patch @@ -0,0 +1,326 @@ +From b7262fa945ef1ea936c15f0d248ad7a024d97dca Mon Sep 17 00:00:00 2001 +From: Martin Pitt <martin.pitt@ubuntu.com> +Date: Tue, 22 Feb 2011 13:06:14 +0000 +Subject: disable automounting while screen is locked + +On the recent Shmoocon there was a presentation by Jon Larimer demonstrating +how to abuse vulnerabilities and bugs, or even just creating socially or +security compromising thumbnails in mounting and thumbnailing, which happens o +automounting USB drives. This is a particular issue when this happens on a +locked box where the attacker doesn't otherwise have access to the user +account: + + http://www.net-security.org/secworld.php?id=10544 + +Disable automounting if the GNOME screen saver is currently locked. + +Backported from gnome-settings-daemon trunk commits 71deedf7 and 90c0f8676. + +https://bugzilla.gnome.org/show_bug.cgi?id=642020 +--- +diff --git a/src/nautilus-application.c b/src/nautilus-application.c +index 08407a5..dfeaea6 100644 +--- a/src/nautilus-application.c ++++ b/src/nautilus-application.c +@@ -116,6 +116,9 @@ static void mount_added_callback (GVolumeMonitor *mo + static void volume_added_callback (GVolumeMonitor *monitor, + GVolume *volume, + NautilusApplication *application); ++static void volume_removed_callback (GVolumeMonitor *monitor, ++ GVolume *volume, ++ NautilusApplication *application); + static void drive_connected_callback (GVolumeMonitor *monitor, + GDrive *drive, + NautilusApplication *application); +@@ -347,6 +350,13 @@ nautilus_application_finalize (GObject *object) + + g_object_unref (application->unique_app); + ++ g_bus_unwatch_name (application->ss_watch_id); ++ ++ if (application->volume_queue != NULL) { ++ g_list_free_full (application->volume_queue, g_object_unref); ++ application->volume_queue = NULL; ++ } ++ + if (application->automount_idle_id != 0) { + g_source_remove (application->automount_idle_id); + application->automount_idle_id = 0; +@@ -357,6 +367,11 @@ nautilus_application_finalize (GObject *object) + application->proxy = NULL; + } + ++ if (application->ss_proxy != NULL) { ++ g_object_unref (application->ss_proxy); ++ application->ss_proxy = NULL; ++ } ++ + G_OBJECT_CLASS (nautilus_application_parent_class)->finalize (object); + } + +@@ -663,6 +678,182 @@ do_initialize_consolekit (NautilusApplication *application) + } + + static void ++check_volume_queue (NautilusApplication *application) ++{ ++ GList *l, *next; ++ GVolume *volume; ++ ++ l = application->volume_queue; ++ ++ if (application->screensaver_active) { ++ return; ++ } ++ ++ while (l != NULL) { ++ volume = l->data; ++ next = l->next; ++ ++ nautilus_file_operations_mount_volume (NULL, volume, TRUE); ++ application->volume_queue = ++ g_list_remove (application->volume_queue, volume); ++ ++ g_object_unref (volume); ++ l = next; ++ } ++ ++ application->volume_queue = NULL; ++} ++ ++#define SCREENSAVER_NAME "org.gnome.ScreenSaver" ++#define SCREENSAVER_PATH "/org/gnome/ScreenSaver" ++#define SCREENSAVER_INTERFACE "org.gnome.ScreenSaver" ++ ++static void ++screensaver_signal_callback (GDBusProxy *proxy, ++ const gchar *sender_name, ++ const gchar *signal_name, ++ GVariant *parameters, ++ gpointer user_data) ++{ ++ NautilusApplication *application = user_data; ++ ++ if (g_strcmp0 (signal_name, "ActiveChanged") == 0) { ++ g_variant_get (parameters, "(b)", &application->screensaver_active); ++ nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_USER, ++ "Screensaver active changed to %d", ++ application->screensaver_active); ++ ++ check_volume_queue (application); ++ } ++} ++ ++static void ++screensaver_get_active_ready_cb (GObject *source, ++ GAsyncResult *res, ++ gpointer user_data) ++{ ++ NautilusApplication *application = user_data; ++ GDBusProxy *proxy = application->ss_proxy; ++ GVariant *result; ++ GError *error = NULL; ++ ++ result = g_dbus_proxy_call_finish (proxy, ++ res, ++ &error); ++ ++ if (error != NULL) { ++ g_warning ("Can't call GetActive() on the ScreenSaver object: %s", ++ error->message); ++ g_error_free (error); ++ ++ return; ++ } ++ ++ g_variant_get (result, "(b)", &application->screensaver_active); ++ g_variant_unref (result); ++ ++ nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_USER, ++ "Screensaver GetActive() returned %d", ++ application->screensaver_active); ++} ++ ++static void ++screensaver_proxy_ready_cb (GObject *source, ++ GAsyncResult *res, ++ gpointer user_data) ++{ ++ NautilusApplication *application = user_data; ++ GError *error = NULL; ++ GDBusProxy *ss_proxy; ++ ++ ss_proxy = g_dbus_proxy_new_finish (res, &error); ++ ++ if (error != NULL) { ++ g_warning ("Can't get proxy for the ScreenSaver object: %s", ++ error->message); ++ g_error_free (error); ++ ++ return; ++ } ++ ++ nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_USER, ++ "ScreenSaver proxy ready"); ++ ++ application->ss_proxy = ss_proxy; ++ ++ g_signal_connect (ss_proxy, "g-signal", ++ G_CALLBACK (screensaver_signal_callback), application); ++ ++ g_dbus_proxy_call (ss_proxy, ++ "GetActive", ++ NULL, ++ G_DBUS_CALL_FLAGS_NO_AUTO_START, ++ -1, ++ NULL, ++ screensaver_get_active_ready_cb, ++ application); ++} ++ ++static void ++screensaver_appeared_callback (GDBusConnection *connection, ++ const gchar *name, ++ const gchar *name_owner, ++ gpointer user_data) ++{ ++ NautilusApplication *application = user_data; ++ ++ nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_USER, ++ "ScreenSaver name appeared"); ++ ++ application->screensaver_active = FALSE; ++ ++ g_dbus_proxy_new (connection, ++ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START, ++ NULL, ++ name, ++ SCREENSAVER_PATH, ++ SCREENSAVER_INTERFACE, ++ NULL, ++ screensaver_proxy_ready_cb, ++ application); ++} ++ ++static void ++screensaver_vanished_callback (GDBusConnection *connection, ++ const gchar *name, ++ gpointer user_data) ++{ ++ NautilusApplication *application = user_data; ++ ++ nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_USER, ++ "ScreenSaver name vanished"); ++ ++ application->screensaver_active = FALSE; ++ g_object_unref (&application->ss_proxy); ++ ++ /* in this case force a clear of the volume queue, without ++ * mounting them. ++ */ ++ if (application->volume_queue != NULL) { ++ g_list_free_full (application->volume_queue, g_object_unref); ++ application->volume_queue = NULL; ++ } ++} ++ ++static void ++do_initialize_screensaver (NautilusApplication *application) ++{ ++ application->ss_watch_id = ++ g_bus_watch_name (G_BUS_TYPE_SESSION, ++ SCREENSAVER_NAME, ++ G_BUS_NAME_WATCHER_FLAGS_NONE, ++ screensaver_appeared_callback, ++ screensaver_vanished_callback, ++ application, ++ NULL); ++} ++ ++static void + do_upgrades_once (NautilusApplication *application, + gboolean no_desktop) + { +@@ -709,6 +900,10 @@ finish_startup (NautilusApplication *application, + /* Initialize the ConsoleKit listener for active session */ + do_initialize_consolekit (application); + ++ /* Initialize GNOME screen saver listener to control automount ++ * permission */ ++ do_initialize_screensaver (application); ++ + /* Watch for mounts so we can restore open windows This used + * to be for showing new window on mount, but is not used + * anymore */ +@@ -724,6 +919,8 @@ finish_startup (NautilusApplication *application, + G_CALLBACK (mount_added_callback), application, 0); + g_signal_connect_object (application->volume_monitor, "volume_added", + G_CALLBACK (volume_added_callback), application, 0); ++ g_signal_connect_object (application->volume_monitor, "volume_removed", ++ G_CALLBACK (volume_removed_callback), application, 0); + g_signal_connect_object (application->volume_monitor, "drive_connected", + G_CALLBACK (drive_connected_callback), application, 0); + +@@ -1520,6 +1717,35 @@ window_can_be_closed (NautilusWindow *window) + } + + static void ++check_screen_lock_and_mount (NautilusApplication *application, ++ GVolume *volume) ++{ ++ if (application->screensaver_active) { ++ /* queue the volume, to mount it after the screensaver state changed */ ++ nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_USER, ++ "Queuing volume %p", volume); ++ application->volume_queue = g_list_prepend (application->volume_queue, ++ g_object_ref (volume)); ++ } else { ++ /* mount it immediately */ ++ nautilus_file_operations_mount_volume (NULL, volume, TRUE); ++ } ++} ++ ++static void ++volume_removed_callback (GVolumeMonitor *monitor, ++ GVolume *volume, ++ NautilusApplication *application) ++{ ++ nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_USER, ++ "Volume %p removed, removing from the queue", volume); ++ ++ /* clear it from the queue, if present */ ++ application->volume_queue = ++ g_list_remove (application->volume_queue, volume); ++} ++ ++static void + volume_added_callback (GVolumeMonitor *monitor, + GVolume *volume, + NautilusApplication *application) +@@ -1527,7 +1753,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, TRUE); ++ check_screen_lock_and_mount (application, volume); + } else { + /* Allow nautilus_autorun() to run. When the mount is later + * added programmatically (i.e. for a blank CD), +diff --git a/src/nautilus-application.h b/src/nautilus-application.h +index 36e53b6..d558932 100644 +--- a/src/nautilus-application.h ++++ b/src/nautilus-application.h +@@ -68,6 +68,11 @@ typedef struct { + unsigned int automount_idle_id; + GDBusProxy *proxy; + gboolean session_is_active; ++ ++ gboolean screensaver_active; ++ guint ss_watch_id; ++ GDBusProxy *ss_proxy; ++ GList *volume_queue; + } NautilusApplication; + + typedef struct { +-- +cgit v0.9 diff --git a/main/nautilus/003-filename-null.patch b/main/nautilus/003-filename-null.patch new file mode 100644 index 0000000000..56a32d9f44 --- /dev/null +++ b/main/nautilus/003-filename-null.patch @@ -0,0 +1,22 @@ +From 1df5a0ceb27f2cb4ef201344a558a3e961094cc4 Mon Sep 17 00:00:00 2001 +From: Rodrigo Moya <rodrigo@gnome-db.org> +Date: Thu, 24 Feb 2011 16:47:29 +0000 +Subject: Guard against filename being NULL on nautilus_icon_info_lookup + +--- +diff --git a/libnautilus-private/nautilus-icon-info.c b/libnautilus-private/nautilus-icon-info.c +index f39ad42..97e88cb 100644 +--- a/libnautilus-private/nautilus-icon-info.c ++++ b/libnautilus-private/nautilus-icon-info.c +@@ -392,6 +392,9 @@ nautilus_icon_info_lookup (GIcon *icon, + } + + filename = gtk_icon_info_get_filename (gtkicon_info); ++ if (filename == NULL) { ++ return nautilus_icon_info_new_for_pixbuf (NULL); ++ } + + lookup_key.filename = (char *)filename; + lookup_key.size = size; +-- +cgit v0.9 diff --git a/main/nautilus/004-memory-leak.patch b/main/nautilus/004-memory-leak.patch new file mode 100644 index 0000000000..ae9a069781 --- /dev/null +++ b/main/nautilus/004-memory-leak.patch @@ -0,0 +1,20 @@ +From 279509baf4872e58103768a53ca87918254767fc Mon Sep 17 00:00:00 2001 +From: Rodrigo Moya <rodrigo@gnome-db.org> +Date: Fri, 25 Feb 2011 14:52:58 +0000 +Subject: Plug memory leak + +--- +diff --git a/libnautilus-private/nautilus-icon-info.c b/libnautilus-private/nautilus-icon-info.c +index 97e88cb..97f42fd 100644 +--- a/libnautilus-private/nautilus-icon-info.c ++++ b/libnautilus-private/nautilus-icon-info.c +@@ -393,6 +393,7 @@ nautilus_icon_info_lookup (GIcon *icon, + + filename = gtk_icon_info_get_filename (gtkicon_info); + if (filename == NULL) { ++ gtk_icon_info_free (gtkicon_info); + return nautilus_icon_info_new_for_pixbuf (NULL); + } + +-- +cgit v0.9 diff --git a/main/nautilus/005-gbus-assertion.patch b/main/nautilus/005-gbus-assertion.patch new file mode 100644 index 0000000000..44979d4311 --- /dev/null +++ b/main/nautilus/005-gbus-assertion.patch @@ -0,0 +1,32 @@ +From 9142d259dcaa6b011604cbd560b94ce31d314b88 Mon Sep 17 00:00:00 2001 +From: Martin Pitt <martin.pitt@ubuntu.com> +Date: Tue, 15 Mar 2011 13:59:27 +0000 +Subject: Fix g_bus_unwatch_name assertion + +Commit b7262fa9 caused + + GLib-GIO-CRITICAL **: g_bus_unwatch_name: assertion `watcher_id > 0' failed + +when starting nautilus while it's already running. Guard the +g_bus_unwatch_name() call to only run when we actually have set a watcher to +the screensaver. + +https://launchpad.net/bugs/724285 +--- +diff --git a/src/nautilus-application.c b/src/nautilus-application.c +index dfeaea6..ab6ca0d 100644 +--- a/src/nautilus-application.c ++++ b/src/nautilus-application.c +@@ -350,7 +350,9 @@ nautilus_application_finalize (GObject *object) + + g_object_unref (application->unique_app); + +- g_bus_unwatch_name (application->ss_watch_id); ++ if (application->ss_watch_id > 0) { ++ g_bus_unwatch_name (application->ss_watch_id); ++ } + + if (application->volume_queue != NULL) { + g_list_free_full (application->volume_queue, g_object_unref); +-- +cgit v0.9 diff --git a/main/nautilus/006-select-extension.patch b/main/nautilus/006-select-extension.patch new file mode 100644 index 0000000000..fc1615e622 --- /dev/null +++ b/main/nautilus/006-select-extension.patch @@ -0,0 +1,59 @@ +From 0fa8f53c89b84a47fac33eb923a5fb196ca564ee Mon Sep 17 00:00:00 2001 +From: Cosimo Cecchi <cosimoc@gnome.org> +Date: Fri, 25 Feb 2011 20:11:46 +0000 +Subject: list-view: make sure not to select the extension on rename + +Delay calling gtk_editable_select_region() until after +gtk_tree_view_set_cursor() + +https://bugzilla.gnome.org/show_bug.cgi?id=627110 +(cherry picked from commit 5e2edee2e8dc6b4eababdff993176d591cc2a6e6) +--- +diff --git a/src/file-manager/fm-list-view.c b/src/file-manager/fm-list-view.c +index 3f59959..cde5ac6 100644 +--- a/src/file-manager/fm-list-view.c ++++ b/src/file-manager/fm-list-view.c +@@ -1172,7 +1172,6 @@ cell_renderer_editing_started_cb (GtkCellRenderer *renderer, + FMListView *list_view) + { + GtkEntry *entry; +- gint start_offset, end_offset; + + entry = GTK_ENTRY (editable); + list_view->details->editable_widget = editable; +@@ -1181,9 +1180,6 @@ cell_renderer_editing_started_cb (GtkCellRenderer *renderer, + g_free (list_view->details->original_name); + + list_view->details->original_name = g_strdup (gtk_entry_get_text (entry)); +- eel_filename_get_rename_region (list_view->details->original_name, +- &start_offset, &end_offset); +- gtk_editable_select_region (GTK_EDITABLE (entry), start_offset, end_offset); + + nautilus_clipboard_set_up_editable + (GTK_EDITABLE (entry), +@@ -2644,6 +2640,7 @@ fm_list_view_start_renaming_file (FMDirectoryView *view, + FMListView *list_view; + GtkTreeIter iter; + GtkTreePath *path; ++ gint start_offset, end_offset; + + list_view = FM_LIST_VIEW (view); + +@@ -2679,6 +2676,15 @@ fm_list_view_start_renaming_file (FMDirectoryView *view, + list_view->details->file_name_column, + TRUE); + ++ /* set cursor also triggers editing-started, where we save the editable widget */ ++ if (list_view->details->editable_widget != NULL) { ++ eel_filename_get_rename_region (list_view->details->original_name, ++ &start_offset, &end_offset); ++ ++ gtk_editable_select_region (GTK_EDITABLE (list_view->details->editable_widget), ++ start_offset, end_offset); ++ } ++ + gtk_tree_path_free (path); + } + +-- +cgit v0.9 diff --git a/main/nautilus/007-tracker0.10-compat.patch b/main/nautilus/007-tracker0.10-compat.patch new file mode 100644 index 0000000000..fbac659369 --- /dev/null +++ b/main/nautilus/007-tracker0.10-compat.patch @@ -0,0 +1,22 @@ +Index: nautilus-2.32.2/libnautilus-private/nautilus-search-engine-tracker.c +=================================================================== +--- nautilus-2.32.2.orig/libnautilus-private/nautilus-search-engine-tracker.c ++++ nautilus-2.32.2/libnautilus-private/nautilus-search-engine-tracker.c +@@ -122,10 +122,16 @@ open_libtracker (void) + done = TRUE; + flags = G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL; + +- tracker = g_module_open ("libtracker-client-0.8.so.0", flags); ++ tracker = g_module_open ("libtracker-client-0.10.so.0", flags); ++ /* we use the same API as in 0.8 */ + version = TRACKER_0_8; + + if (!tracker) { ++ tracker = g_module_open ("libtracker-client-0.8.so.0", flags); ++ version = TRACKER_0_8; ++ } ++ ++ if (!tracker) { + tracker = g_module_open ("libtracker-client-0.7.so.0", flags); + + if (tracker && !g_module_symbol (tracker, "tracker_resources_sparql_query_async", &x)) { diff --git a/main/nautilus/009-default-directories.patch b/main/nautilus/009-default-directories.patch new file mode 100644 index 0000000000..336d3d0ae9 --- /dev/null +++ b/main/nautilus/009-default-directories.patch @@ -0,0 +1,32 @@ + +++ nautilus-2.32.2.1/debian/patches/02_dont_set_default.patch + +# Upstream: https://bugzilla.gnome.org/show_bug.cgi?id=637264 +# Ubuntu: https://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/662194 +# Description: hide checkbox to remember selection when opening folders +diff --git a/libnautilus-private/nautilus-open-with-dialog.c b/libnautilus-private/nautilus-open-with-dialog.c +index 357e20c..300a92c 100644 +--- a/libnautilus-private/nautilus-open-with-dialog.c ++++ b/libnautilus-private/nautilus-open-with-dialog.c +@@ -864,7 +864,7 @@ nautilus_open_with_dialog_init (NautilusOpenWithDialog *dialog) + + /* Add remember this application checkbox - only visible in open mode */ + dialog->details->checkbox = gtk_check_button_new (); +- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->details->checkbox), TRUE); ++ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->details->checkbox), FALSE); + gtk_button_set_use_underline (GTK_BUTTON (dialog->details->checkbox), TRUE); + gtk_widget_show (GTK_WIDGET (dialog->details->checkbox)); + gtk_box_pack_start (GTK_BOX (vbox), dialog->details->checkbox, FALSE, FALSE, 0); +@@ -1031,6 +1031,12 @@ set_uri_and_type (NautilusOpenWithDialog *dialog, + gtk_label_set_text_with_mnemonic (GTK_LABEL (dialog->details->open_label), + _("_Add")); + gtk_window_set_title (GTK_WINDOW (dialog), _("Add Application")); ++ } else { ++ if (g_str_equal (mime_type, "inode/directory")) { ++ gtk_widget_hide (dialog->details->checkbox); ++ } else { ++ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->details->checkbox), TRUE); ++ } + } + + gtk_label_set_markup (GTK_LABEL (dialog->details->label), label); diff --git a/main/nautilus/010-localpath-preview.patch b/main/nautilus/010-localpath-preview.patch new file mode 100644 index 0000000000..736559ad92 --- /dev/null +++ b/main/nautilus/010-localpath-preview.patch @@ -0,0 +1,46 @@ +From ebcbb167876f8b4491af0bc86bc29015c211b3af Mon Sep 17 00:00:00 2001 +From: Olivier Tilloy <olivier@tilloy.net> +Date: Tue, 17 Aug 2010 11:42:36 +0000 +Subject: icon-view: if possible, use the local path for the preview (#624841) + +This solves issues where the audio previewer is not capable of +understanding some GVfs URIs. +--- +diff --git a/src/file-manager/fm-icon-view.c b/src/file-manager/fm-icon-view.c +index 7277a9b..755ed8c 100644 +--- a/src/file-manager/fm-icon-view.c ++++ b/src/file-manager/fm-icon-view.c +@@ -2027,6 +2027,8 @@ play_file (gpointer callback_data) + char **argv; + GError *error; + char *uri; ++ GFile *gfile; ++ char *path; + + icon_view = FM_ICON_VIEW (callback_data); + +@@ -2034,7 +2036,21 @@ play_file (gpointer callback_data) + icon_view->details->audio_preview_timeout = 0; + + file = icon_view->details->audio_preview_file; +- uri = nautilus_file_get_uri (file); ++ gfile = nautilus_file_get_location (file); ++ path = g_file_get_path (gfile); ++ ++ /* if we have a local path, use that instead of the native URI. ++ * this can be useful for special GVfs mounts, such as cdda:// ++ */ ++ if (path) { ++ uri = g_filename_to_uri (path, NULL, NULL); ++ } else { ++ uri = nautilus_file_get_uri (file); ++ } ++ ++ g_object_unref (gfile); ++ g_free (path); ++ + argv = get_preview_argv (uri); + g_free (uri); + if (argv == NULL) { +-- +cgit v0.9 diff --git a/main/nautilus/011-keyboard-navigation.patch b/main/nautilus/011-keyboard-navigation.patch new file mode 100644 index 0000000000..34425ac2ac --- /dev/null +++ b/main/nautilus/011-keyboard-navigation.patch @@ -0,0 +1,43 @@ + +++ nautilus-2.32.2.1/debian/patches/97_keyboard_nav_in_sidebar.patch + +From: Omer Akram <om26er@ubuntu.com> +Author: Stefano Teso <stefano.teso@gmail.com> +Subject: Places-sidebar: allow keyboard navigation with Enter/Space. +Origin: http://git.gnome.org/browse/nautilus/commit/?id=fd03c910a73ba18459e68baaf15e8dd295acd5c1 +Bug: https://bugs.gnome.org/637768 +Bug-Ubuntu: https://launchpad.net/bugs/649993 + +--- a//src/nautilus-places-sidebar.c 2010-12-28 20:54:38.000000000 +0500 ++++ b//src/nautilus-places-sidebar.c 2011-02-28 12:15:11.096777018 +0500 +@@ -2198,6 +2198,30 @@ + + modifiers = gtk_accelerator_get_default_mod_mask (); + ++ if ((event->keyval == GDK_KEY_Return || ++ event->keyval == GDK_KEY_KP_Enter || ++ event->keyval == GDK_KEY_ISO_Enter || ++ event->keyval == GDK_KEY_space)) { ++ ++ GtkTreeModel *model; ++ GtkTreePath *path; ++ NautilusWindowOpenFlags flags = 0; ++ ++ if ((event->state & modifiers) == GDK_SHIFT_MASK) { ++ flags = NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB; ++ } else if ((event->state & modifiers) == GDK_CONTROL_MASK) { ++ flags = NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW; ++ } ++ ++ model = gtk_tree_view_get_model (sidebar->tree_view); ++ gtk_tree_view_get_cursor (sidebar->tree_view, &path, NULL); ++ ++ open_selected_bookmark (sidebar, model, path, flags); ++ ++ gtk_tree_path_free (path); ++ return TRUE; ++ } ++ + if (event->keyval == GDK_Down && + (event->state & modifiers) == GDK_MOD1_MASK) { + return eject_or_unmount_selection (sidebar); diff --git a/main/nautilus/APKBUILD b/main/nautilus/APKBUILD index 4f7593f6b8..69eb32114c 100644 --- a/main/nautilus/APKBUILD +++ b/main/nautilus/APKBUILD @@ -1,8 +1,8 @@ # Contributor: William Pitcock <nenolod@dereferenced.org> # Maintainer: William Pitcock <nenolod@dereferenced.org> pkgname=nautilus -pkgver=2.32.2 -pkgrel=3 +pkgver=2.32.2.1 +pkgrel=0 pkgdesc="GNOME file manager" url="http://projects.gnome.org/nautilus" arch="all" @@ -28,8 +28,20 @@ depends_dev="gtk+-dev makedepends="$depends_dev intltool gobject-introspection-dev" install="$pkgname.post-install $pkgname.pre-deinstall $pkgname.post-upgrade" subpackages="$pkgname-dev $pkgname-lang" -source="ftp://ftp.gnome.org/pub/GNOME/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2 - g_const_return.patch" +source="ftp://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2 +001-filepeek-crash.patch +002-automounting-locked-screen.patch +003-filename-null.patch +004-memory-leak.patch +005-gbus-assertion.patch +006-select-extension.patch +007-tracker0.10-compat.patch +009-default-directories.patch +010-localpath-preview.patch +011-keyboard-navigation.patch +g_const_return.patch +gmodule-underlinking.patch +" _builddir="${srcdir}/${pkgname}-${pkgver}" prepare() { @@ -60,5 +72,16 @@ package() { find "$pkgdir" -name '*.la' -delete } -md5sums="51565aa10d1625dff56e381228346911 nautilus-2.32.2.tar.bz2 -69329cf155b211d6143fcdc68a8695bf g_const_return.patch" +md5sums="f75f387d1b439079967581d876009426 nautilus-2.32.2.1.tar.bz2 +87c2769bea06fd209df8e2be8d86c1b7 001-filepeek-crash.patch +da51f2247159159a2f6233890592a733 002-automounting-locked-screen.patch +862f0185ff5e0009db62025875364536 003-filename-null.patch +844a3fa31f6247c4f740e1d5de77f19f 004-memory-leak.patch +196905aa07cf2a6de523451ec95283c2 005-gbus-assertion.patch +624d3cf12d5152d947dd1217ff5c1fc9 006-select-extension.patch +14ff9cb78537873b652c5cc487dce9eb 007-tracker0.10-compat.patch +14c422dec12c5ca953ec7f6fc91861d1 009-default-directories.patch +75ea4e2ce64d8220ae82e386a9554d50 010-localpath-preview.patch +1ca1703fffb82f53b5278b20f86656c0 011-keyboard-navigation.patch +69329cf155b211d6143fcdc68a8695bf g_const_return.patch +7e3c1434d5530a86630cc6c1d43149e3 gmodule-underlinking.patch" diff --git a/main/nautilus/gmodule-underlinking.patch b/main/nautilus/gmodule-underlinking.patch new file mode 100644 index 0000000000..efb690c176 --- /dev/null +++ b/main/nautilus/gmodule-underlinking.patch @@ -0,0 +1,22 @@ +--- ./src/Makefile.in.orig ++++ ./src/Makefile.in +@@ -469,7 +469,7 @@ + LDADD = \ + $(top_builddir)/src/file-manager/libnautilus-file-manager.la \ + $(top_builddir)/libnautilus-private/libnautilus-private.la \ +- $(CORE_LIBS) \ ++ $(CORE_LIBS) -lgmodule-2.0 \ + $(EXIF_LIBS) \ + $(EXEMPI_LIBS) \ + $(POPT_LIBS) \ +--- ./test/Makefile.in.orig ++++ ./test/Makefile.in +@@ -383,7 +383,7 @@ + + LDADD = \ + $(top_builddir)/libnautilus-private/libnautilus-private.la \ +- $(CORE_LIBS) \ ++ $(CORE_LIBS) -lgmodule-2.0 \ + $(NULL) + + test_nautilus_copy_SOURCES = test-copy.c test.c |