aboutsummaryrefslogtreecommitdiffstats
path: root/main/nautilus
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2012-04-25 18:06:33 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2012-04-25 19:53:02 +0000
commit286429b1aa72ee964ba0cac4b79c754859b1c60a (patch)
tree33c01e6792fd99a430be126c19b9b71947ffd060 /main/nautilus
parent3597c695c8ae4a22da8bd26c363aa8ceae267be3 (diff)
downloadaports-286429b1aa72ee964ba0cac4b79c754859b1c60a.tar.bz2
aports-286429b1aa72ee964ba0cac4b79c754859b1c60a.tar.xz
main/nautilus: upgrade to 2.32.2.1
Diffstat (limited to 'main/nautilus')
-rw-r--r--main/nautilus/001-filepeek-crash.patch29
-rw-r--r--main/nautilus/002-automounting-locked-screen.patch326
-rw-r--r--main/nautilus/003-filename-null.patch22
-rw-r--r--main/nautilus/004-memory-leak.patch20
-rw-r--r--main/nautilus/005-gbus-assertion.patch32
-rw-r--r--main/nautilus/006-select-extension.patch59
-rw-r--r--main/nautilus/007-tracker0.10-compat.patch22
-rw-r--r--main/nautilus/009-default-directories.patch32
-rw-r--r--main/nautilus/010-localpath-preview.patch46
-rw-r--r--main/nautilus/011-keyboard-navigation.patch43
-rw-r--r--main/nautilus/APKBUILD35
-rw-r--r--main/nautilus/gmodule-underlinking.patch22
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