- Update to 2.27.92

This commit is contained in:
Tomas Bzatek 2009-09-07 09:51:35 +00:00
parent 04a62bcae1
commit 8227f9a318
15 changed files with 7 additions and 937 deletions

View File

@ -1 +1 @@
nautilus-2.27.91.tar.bz2
nautilus-2.27.92.tar.bz2

View File

@ -1,332 +0,0 @@
diff -up nautilus-2.21.1/configure.in.dynamic-search nautilus-2.21.1/configure.in
--- nautilus-2.21.1/configure.in.orig 2008-02-25 22:14:45.000000000 +0100
+++ nautilus-2.21.1/configure.in 2008-02-26 11:31:47.979469749 +0100
@@ -269,49 +269,12 @@
dnl search implementations
dnl ****************************
-AM_CONDITIONAL(HAVE_TRACKER, false)
-
-dnl libtracker checking
-
-AC_ARG_ENABLE(tracker, [ --disable-tracker build without tracker support])
-msg_tracker=no
-if test "x$enable_tracker" != "xno"; then
- PKG_CHECK_MODULES(TRACKER, tracker >= tracker_minver, [
- AM_CONDITIONAL(HAVE_TRACKER, true)
- AC_DEFINE(HAVE_TRACKER, 1, [Define to enable tracker support])
- ]
- msg_tracker=yes,
- [AM_CONDITIONAL(HAVE_TRACKER, false)])
- AC_SUBST(TRACKER_CFLAGS)
- AC_SUBST(TRACKER_LIBS)
-fi
-
-dnl ==========================================================================
-
-
-AM_CONDITIONAL(HAVE_BEAGLE, false)
-
-dnl libbeagle checking
-
-AC_ARG_ENABLE(beagle, [ --disable-beagle build without beagle support])
-msg_beagle=no
-if test "x$enable_beagle" != "xno"; then
- BEAGLE_PKGCONFIG=
- if $PKG_CONFIG --exists libbeagle-1.0; then
- BEAGLE_PKGCONFIG=libbeagle-1.0
- else
- BEAGLE_PKGCONFIG=libbeagle-0.0
- fi
-
- PKG_CHECK_MODULES(BEAGLE, $BEAGLE_PKGCONFIG >= beagle_minver, [
- AM_CONDITIONAL(HAVE_BEAGLE, true)
- AC_DEFINE(HAVE_BEAGLE, 1, [Define to enable beagle support])
- ]
- msg_beagle=yes,
- [AM_CONDITIONAL(HAVE_BEAGLE, false)])
- AC_SUBST(BEAGLE_CFLAGS)
- AC_SUBST(BEAGLE_LIBS)
-fi
+# We hardcode beagle and tracker use and then load it dynamically
+AM_CONDITIONAL(HAVE_TRACKER, true)
+AC_DEFINE(HAVE_TRACKER, 1, [Define to enable tracker support])
+
+AM_CONDITIONAL(HAVE_BEAGLE, true)
+AC_DEFINE(HAVE_BEAGLE, 1, [Define to enable beagle support])
dnl ==========================================================================
diff -up nautilus-2.21.1/libnautilus-private/nautilus-search-engine-beagle.c.dynamic-search nautilus-2.21.1/libnautilus-private/nautilus-search-engine-beagle.c
--- nautilus-2.21.1/libnautilus-private/nautilus-search-engine-beagle.c.dynamic-search 2007-12-14 04:36:31.000000000 -0500
+++ nautilus-2.21.1/libnautilus-private/nautilus-search-engine-beagle.c 2007-12-21 22:45:20.000000000 -0500
@@ -23,10 +23,20 @@
#include <config.h>
#include "nautilus-search-engine-beagle.h"
-#include <beagle/beagle.h>
#include <eel/eel-gtk-macros.h>
#include <eel/eel-glib-extensions.h>
+#include <gmodule.h>
+
+typedef struct _BeagleHit BeagleHit;
+typedef struct _BeagleQuery BeagleQuery;
+typedef struct _BeagleClient BeagleClient;
+typedef struct _BeagleRequest BeagleRequest;
+typedef struct _BeagleFinishedResponse BeagleFinishedResponse;
+typedef struct _BeagleHitsAddedResponse BeagleHitsAddedResponse;
+typedef struct _BeagleQueryPartProperty BeagleQueryPartProperty;
+typedef struct _BeagleQueryPart BeagleQueryPart;
+typedef struct _BeagleHitsSubtractedResponse BeagleHitsSubtractedResponse;
struct NautilusSearchEngineBeagleDetails {
BeagleClient *client;
@@ -37,6 +47,127 @@ struct NautilusSearchEngineBeagleDetails
gboolean query_finished;
};
+/* We dlopen() all the following from libbeagle at runtime */
+#define BEAGLE_HIT(x) ((BeagleHit *)(x))
+#define BEAGLE_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), beagle_request_get_type(), BeagleRequest))
+#define BEAGLE_QUERY_PART(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), beagle_query_part_get_type(), BeagleQueryPart))
+
+typedef enum {
+ BEAGLE_QUERY_PART_LOGIC_REQUIRED = 1,
+ BEAGLE_QUERY_PART_LOGIC_PROHIBITED = 2
+} BeagleQueryPartLogic;
+
+typedef enum {
+ BEAGLE_PROPERTY_TYPE_UNKNOWN = 0,
+ BEAGLE_PROPERTY_TYPE_TEXT = 1,
+ BEAGLE_PROPERTY_TYPE_KEYWORD = 2,
+ BEAGLE_PROPERTY_TYPE_DATE = 3,
+ BEAGLE_PROPERTY_TYPE_LAST = 4
+} BeaglePropertyType;
+
+/* *static* wrapper function pointers */
+static gboolean (*beagle_client_send_request_async) (BeagleClient *client,
+ BeagleRequest *request,
+ GError **err) = NULL;
+static G_CONST_RETURN char *(*beagle_hit_get_uri) (BeagleHit *hit) = NULL;
+static GSList *(*beagle_hits_added_response_get_hits) (BeagleHitsAddedResponse *response) = NULL;
+static BeagleQuery *(*beagle_query_new) (void) = NULL;
+static void (*beagle_query_add_text) (BeagleQuery *query,
+ const char *str) = NULL;
+static void (*beagle_query_add_hit_type) (BeagleQuery *query,
+ const char *hit_type) = NULL;
+static BeagleQueryPartProperty *(*beagle_query_part_property_new) (void) = NULL;
+static void (*beagle_query_part_set_logic) (BeagleQueryPart *part,
+ BeagleQueryPartLogic logic) = NULL;
+static void (*beagle_query_part_property_set_key) (BeagleQueryPartProperty *part,
+ const char *key) = NULL;
+static void (*beagle_query_part_property_set_value) (BeagleQueryPartProperty *part,
+ const char * value) = NULL;
+static void (*beagle_query_part_property_set_property_type) (BeagleQueryPartProperty *part,
+ BeaglePropertyType prop_type) = NULL;
+static void (*beagle_query_add_part) (BeagleQuery *query,
+ BeagleQueryPart *part) = NULL;
+static GType (*beagle_request_get_type) (void) = NULL;
+static GType (*beagle_query_part_get_type) (void) = NULL;
+static gboolean (*beagle_util_daemon_is_running) (void) = NULL;
+static BeagleClient *(*beagle_client_new_real) (const char *client_name) = NULL;
+static void (*beagle_query_set_max_hits) (BeagleQuery *query,
+ int max_hits) = NULL;
+static void (*beagle_query_add_mime_type) (BeagleQuery *query,
+ const char *mime_type) = NULL;
+static GSList *(*beagle_hits_subtracted_response_get_uris) (BeagleHitsSubtractedResponse *response) = NULL;
+
+static struct BeagleDlMapping
+{
+ const char *fn_name;
+ gpointer *fn_ptr_ref;
+} beagle_dl_mapping[] =
+{
+#define MAP(a) { #a, (gpointer *)&a }
+ MAP (beagle_client_send_request_async),
+ MAP (beagle_hit_get_uri),
+ MAP (beagle_hits_added_response_get_hits),
+ MAP (beagle_query_new),
+ MAP (beagle_query_add_text),
+ MAP (beagle_query_add_hit_type),
+ MAP (beagle_query_part_property_new),
+ MAP (beagle_query_part_set_logic),
+ MAP (beagle_query_part_property_set_key),
+ MAP (beagle_query_part_property_set_value),
+ MAP (beagle_query_part_property_set_property_type),
+ MAP (beagle_query_add_part),
+ MAP (beagle_request_get_type),
+ MAP (beagle_query_part_get_type),
+ MAP (beagle_util_daemon_is_running),
+ MAP (beagle_query_set_max_hits),
+ MAP (beagle_query_add_mime_type),
+ MAP (beagle_hits_subtracted_response_get_uris),
+#undef MAP
+ { "beagle_client_new", (gpointer *)&beagle_client_new_real },
+};
+
+static void
+open_libbeagle (void)
+{
+ static gboolean done = FALSE;
+
+ if (!done)
+ {
+ int i;
+ GModule *beagle;
+
+ done = TRUE;
+
+ beagle = g_module_open ("libbeagle.so.1", G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
+ if (!beagle)
+ return;
+
+ for (i = 0; i < G_N_ELEMENTS (beagle_dl_mapping); i++)
+ {
+ if (!g_module_symbol (beagle, beagle_dl_mapping[i].fn_name,
+ beagle_dl_mapping[i].fn_ptr_ref))
+ {
+ g_warning ("Missing symbol '%s' in libbeagle\n",
+ beagle_dl_mapping[i].fn_name);
+ g_module_close (beagle);
+
+ for (i = 0; i < G_N_ELEMENTS (beagle_dl_mapping); i++)
+ beagle_dl_mapping[i].fn_ptr_ref = NULL;
+
+ return;
+ }
+ }
+ }
+}
+
+static BeagleClient *
+beagle_client_new (const char *client_name)
+{
+ if (beagle_client_new_real)
+ return beagle_client_new_real (client_name);
+
+ return NULL;
+}
static void nautilus_search_engine_beagle_class_init (NautilusSearchEngineBeagleClass *class);
static void nautilus_search_engine_beagle_init (NautilusSearchEngineBeagle *engine);
@@ -276,8 +407,11 @@ nautilus_search_engine_beagle_new (void)
{
NautilusSearchEngineBeagle *engine;
BeagleClient *client;
+
+ open_libbeagle ();
- if (!beagle_util_daemon_is_running ()) {
+ if (beagle_util_daemon_is_running == NULL ||
+ !beagle_util_daemon_is_running ()) {
/* check whether daemon is running as beagle_client_new
* doesn't fail when a stale socket file exists */
return NULL;
diff -up nautilus-2.21.1/libnautilus-private/nautilus-search-engine-tracker.c.dynamic-search nautilus-2.21.1/libnautilus-private/nautilus-search-engine-tracker.c
--- nautilus-2.21.1/libnautilus-private/nautilus-search-engine-tracker.c.dynamic-search 2007-12-14 04:36:31.000000000 -0500
+++ nautilus-2.21.1/libnautilus-private/nautilus-search-engine-tracker.c 2007-12-21 22:55:17.000000000 -0500
@@ -23,11 +23,89 @@
#include <config.h>
#include "nautilus-search-engine-tracker.h"
-#include <tracker.h>
+#include <gmodule.h>
#include <eel/eel-gtk-macros.h>
#include <eel/eel-glib-extensions.h>
+typedef struct _TrackerClient TrackerClient;
+
+typedef void (*TrackerArrayReply) (char **result, GError *error, gpointer user_data);
+
+static TrackerClient * (*tracker_connect) (gboolean enable_warnings) = NULL;
+static void (*tracker_disconnect) (TrackerClient *client) = NULL;
+static void (*tracker_cancel_last_call) (TrackerClient *client) = NULL;
+
+static void (*tracker_search_metadata_by_text_async) (TrackerClient *client,
+ const char *query,
+ TrackerArrayReply callback,
+ gpointer user_data) = NULL;
+static void (*tracker_search_metadata_by_text_and_mime_async) (TrackerClient *client,
+ const char *query,
+ const char **mimes,
+ TrackerArrayReply callback,
+ gpointer user_data) = NULL;
+static void (*tracker_search_metadata_by_text_and_location_async) (TrackerClient *client,
+ const char *query,
+ const char *location,
+ TrackerArrayReply callback,
+ gpointer user_data) = NULL;
+static void (*tracker_search_metadata_by_text_and_mime_and_location_async) (TrackerClient *client,
+ const char *query,
+ const char **mimes,
+ const char *location,
+ TrackerArrayReply callback,
+ gpointer user_data) = NULL;
+
+static struct TrackerDlMapping
+{
+ const char *fn_name;
+ gpointer *fn_ptr_ref;
+} tracker_dl_mapping[] =
+{
+#define MAP(a) { #a, (gpointer *)&a }
+ MAP (tracker_connect),
+ MAP (tracker_disconnect),
+ MAP (tracker_cancel_last_call),
+ MAP (tracker_search_metadata_by_text_async),
+ MAP (tracker_search_metadata_by_text_and_mime_async),
+ MAP (tracker_search_metadata_by_text_and_location_async),
+ MAP (tracker_search_metadata_by_text_and_mime_and_location_async)
+#undef MAP
+};
+
+static void
+open_libtracker (void)
+{
+ static gboolean done = FALSE;
+ if (!done)
+ {
+ int i;
+ GModule *tracker;
+
+ done = TRUE;
+
+ tracker = g_module_open ("libtrackerclient.so.0", G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
+ if (!tracker)
+ return;
+
+ for (i = 0; i < G_N_ELEMENTS (tracker_dl_mapping); i++)
+ {
+ if (!g_module_symbol (tracker, tracker_dl_mapping[i].fn_name,
+ tracker_dl_mapping[i].fn_ptr_ref))
+ {
+ g_warning ("Missing symbol '%s' in libtracker\n",
+ tracker_dl_mapping[i].fn_name);
+ g_module_close (tracker);
+
+ for (i = 0; i < G_N_ELEMENTS (tracker_dl_mapping); i++)
+ tracker_dl_mapping[i].fn_ptr_ref = NULL;
+
+ return;
+ }
+ }
+ }
+}
struct NautilusSearchEngineTrackerDetails {
NautilusQuery *query;
@@ -259,6 +337,12 @@ nautilus_search_engine_tracker_new (void
NautilusSearchEngineTracker *engine;
TrackerClient *tracker_client;
+ open_libtracker ();
+
+ if (!tracker_connect) {
+ return NULL;
+ }
+
tracker_client = tracker_connect (FALSE);
if (!tracker_client) {

View File

@ -1,227 +0,0 @@
diff -up nautilus-2.25.1/libnautilus-private/nautilus-tree-view-drag-dest.c.orig nautilus-2.25.1/libnautilus-private/nautilus-tree-view-drag-dest.c
--- nautilus-2.25.1/libnautilus-private/nautilus-tree-view-drag-dest.c.orig 2008-10-06 11:54:32.000000000 +0200
+++ nautilus-2.25.1/libnautilus-private/nautilus-tree-view-drag-dest.c 2008-12-04 11:35:04.174034560 +0100
@@ -21,6 +21,7 @@
* Boston, MA 02111-1307, USA.
*
* Author: Dave Camp <dave@ximian.com>
+ * XDS support: Benedikt Meurer <benny@xfce.org> (adapted by Amos Brocco <amos.brocco@unifr.ch>)
*/
/* nautilus-tree-view-drag-dest.c: Handles drag and drop for treeviews which
@@ -33,9 +34,13 @@
#include <eel/eel-gtk-macros.h>
#include <gtk/gtk.h>
#include "nautilus-file-dnd.h"
+#include "nautilus-file-changes-queue.h"
#include "nautilus-icon-dnd.h"
#include "nautilus-link.h"
#include "nautilus-marshal.h"
+#include "nautilus-debug-log.h"
+#include <stdio.h>
+#include <string.h>
#define AUTO_SCROLL_MARGIN 20
@@ -54,6 +59,8 @@ struct _NautilusTreeViewDragDestDetails
guint highlight_id;
guint scroll_id;
guint expand_id;
+
+ char *direct_save_uri;
};
enum {
@@ -80,7 +87,8 @@ static const GtkTargetEntry drag_types [
/* prefer "_NETSCAPE_URL" over "text/uri-list" to satisfy web browsers. */
{ NAUTILUS_ICON_DND_NETSCAPE_URL_TYPE, 0, NAUTILUS_ICON_DND_NETSCAPE_URL },
{ NAUTILUS_ICON_DND_URI_LIST_TYPE, 0, NAUTILUS_ICON_DND_URI_LIST },
- { NAUTILUS_ICON_DND_KEYWORD_TYPE, 0, NAUTILUS_ICON_DND_KEYWORD }
+ { NAUTILUS_ICON_DND_KEYWORD_TYPE, 0, NAUTILUS_ICON_DND_KEYWORD },
+ { NAUTILUS_ICON_DND_XDNDDIRECTSAVE_TYPE, 0, NAUTILUS_ICON_DND_XDNDDIRECTSAVE }, /* XDS Protocol Type */
};
@@ -244,6 +252,12 @@ get_drag_data (NautilusTreeViewDragDest
target = gtk_drag_dest_find_target (GTK_WIDGET (dest->details->tree_view),
context,
NULL);
+ if (target == gdk_atom_intern (NAUTILUS_ICON_DND_XDNDDIRECTSAVE_TYPE, FALSE) &&
+ !dest->details->drop_occurred) {
+ dest->details->drag_type = NAUTILUS_ICON_DND_XDNDDIRECTSAVE;
+ dest->details->have_drag_data = TRUE;
+ return;
+ }
gtk_drag_get_data (GTK_WIDGET (dest->details->tree_view),
context, target, time);
@@ -263,6 +277,9 @@ free_drag_data (NautilusTreeViewDragDest
nautilus_drag_destroy_selection_list (dest->details->drag_list);
dest->details->drag_list = NULL;
}
+
+ g_free (dest->details->direct_save_uri);
+ dest->details->direct_save_uri = NULL;
}
static char *
@@ -407,6 +424,7 @@ get_drop_action (NautilusTreeViewDragDes
return context->suggested_action;
case NAUTILUS_ICON_DND_TEXT:
+ case NAUTILUS_ICON_DND_XDNDDIRECTSAVE:
return GDK_ACTION_COPY;
case NAUTILUS_ICON_DND_KEYWORD:
@@ -717,6 +735,35 @@ receive_dropped_keyword (NautilusTreeVie
g_free (drop_target_uri);
}
+static void
+receive_xds (NautilusTreeViewDragDest *dest,
+ GdkDragContext *context,
+ int x, int y)
+{
+ GFile *location;
+
+ /* Indicate that we don't provide "F" fallback */
+ if (G_UNLIKELY (dest->details->drag_data->format == 8
+ && dest->details->drag_data->length == 1
+ && dest->details->drag_data->data[0] == 'F')) {
+ gdk_property_change (GDK_DRAWABLE (context->source_window),
+ gdk_atom_intern (NAUTILUS_ICON_DND_XDNDDIRECTSAVE_TYPE, FALSE),
+ gdk_atom_intern ("text/plain", FALSE), 8,
+ GDK_PROP_MODE_REPLACE, (const guchar *) "", 0);
+ } else if (G_LIKELY (dest->details->drag_data->format == 8
+ && dest->details->drag_data->length == 1
+ && dest->details->drag_data->data[0] == 'S')) {
+ g_assert (dest->details->direct_save_uri != NULL);
+ location = g_file_new_for_uri (dest->details->direct_save_uri);
+
+ nautilus_file_changes_queue_file_added (location);
+ nautilus_file_changes_consume_changes (TRUE);
+
+ g_object_unref (location);
+ }
+}
+
+
static gboolean
drag_data_received_callback (GtkWidget *widget,
GdkDragContext *context,
@@ -766,6 +813,10 @@ drag_data_received_callback (GtkWidget *
receive_dropped_keyword (dest, context, x, y);
success = TRUE;
break;
+ case NAUTILUS_ICON_DND_XDNDDIRECTSAVE:
+ receive_xds (dest, context, x, y);
+ success = TRUE;
+ break;
}
dest->details->drop_occurred = FALSE;
@@ -781,6 +832,79 @@ drag_data_received_callback (GtkWidget *
return TRUE;
}
+static char *
+get_direct_save_filename (GdkDragContext *context)
+{
+ guchar *prop_text;
+ gint prop_len;
+
+ if (!gdk_property_get (context->source_window, gdk_atom_intern (NAUTILUS_ICON_DND_XDNDDIRECTSAVE_TYPE, FALSE),
+ gdk_atom_intern ("text/plain", FALSE), 0, 1024, FALSE, NULL, NULL,
+ &prop_len, &prop_text) && prop_text != NULL) {
+ return NULL;
+ }
+
+ /* Zero-terminate the string */
+ prop_text = g_realloc (prop_text, prop_len + 1);
+ prop_text[prop_len] = '\0';
+
+ /* Verify that the file name provided by the source is valid */
+ if (*prop_text == '\0' ||
+ strchr ((const gchar *) prop_text, G_DIR_SEPARATOR) != NULL) {
+ nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_USER,
+ "Invalid filename provided by XDS drag site");
+ g_free (prop_text);
+ return NULL;
+ }
+
+ return prop_text;
+}
+
+static gboolean
+set_direct_save_uri (NautilusTreeViewDragDest *dest,
+ GdkDragContext *context,
+ int x, int y)
+{
+ GFile *base, *child;
+ char *drop_uri;
+ char *filename, *uri;
+
+ g_assert (dest->details->direct_save_uri == NULL);
+
+ uri = NULL;
+
+ drop_uri = get_drop_target_uri_at_pos (dest, x, y);
+ if (drop_uri != NULL) {
+ filename = get_direct_save_filename (context);
+ if (filename != NULL) {
+ /* Resolve relative path */
+ base = g_file_new_for_uri (drop_uri);
+ child = g_file_get_child (base, filename);
+ uri = g_file_get_uri (child);
+
+ g_object_unref (base);
+ g_object_unref (child);
+
+ /* Change the property */
+ gdk_property_change (GDK_DRAWABLE (context->source_window),
+ gdk_atom_intern (NAUTILUS_ICON_DND_XDNDDIRECTSAVE_TYPE, FALSE),
+ gdk_atom_intern ("text/plain", FALSE), 8,
+ GDK_PROP_MODE_REPLACE, (const guchar *) uri,
+ strlen (uri));
+
+ dest->details->direct_save_uri = uri;
+ } else {
+ nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_USER,
+ "Invalid filename provided by XDS drag site");
+ }
+ } else {
+ nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_USER,
+ "Could not retrieve XDS drop destination");
+ }
+
+ return uri != NULL;
+}
+
static gboolean
drag_drop_callback (GtkWidget *widget,
GdkDragContext *context,
@@ -790,8 +914,24 @@ drag_drop_callback (GtkWidget *widget,
gpointer data)
{
NautilusTreeViewDragDest *dest;
+ guint info;
+ GdkAtom target;
dest = NAUTILUS_TREE_VIEW_DRAG_DEST (data);
+
+ target = gtk_drag_dest_find_target (GTK_WIDGET (dest->details->tree_view),
+ context,
+ NULL);
+ if (target == GDK_NONE) {
+ return FALSE;
+ }
+
+ info = dest->details->drag_type;
+
+ if (info == NAUTILUS_ICON_DND_XDNDDIRECTSAVE &&
+ !set_direct_save_uri (dest, context, x, y)) {
+ return FALSE;
+ }
dest->details->drop_occurred = TRUE;

View File

@ -1,31 +0,0 @@
Index: libnautilus-private/nautilus-dnd.c
===================================================================
--- libnautilus-private/nautilus-dnd.c (revision 15162)
+++ libnautilus-private/nautilus-dnd.c (revision 15163)
@@ -437,7 +437,7 @@
gboolean target_is_source_parent;
gboolean source_deletable;
const char *dropped_uri;
- GFile *target, *dropped;
+ GFile *target, *dropped, *dropped_directory;
GdkDragAction actions;
NautilusFile *dropped_file, *target_file;
@@ -519,7 +519,16 @@
/* Compare the first dropped uri with the target uri for same fs match. */
dropped = g_file_new_for_uri (dropped_uri);
- target_is_source_parent = g_file_has_prefix (dropped, target);
+ dropped_directory = g_file_get_parent (dropped);
+ target_is_source_parent = FALSE;
+ if (dropped_directory != NULL) {
+ /* If the dropped file is already in the same directory but
+ is in another filesystem we still want to move, not copy
+ as this is then just a move of a mountpoint to another
+ position in the dir */
+ target_is_source_parent = g_file_equal (dropped_directory, target);
+ g_object_unref (dropped_directory);
+ }
source_deletable = source_is_deletable (dropped);
if ((same_fs && source_deletable) || target_is_source_parent ||

View File

@ -1,12 +0,0 @@
diff -up nautilus-2.27.91/src/nautilus-file-management-properties.ui.dupe-id nautilus-2.27.91/src/nautilus-file-management-properties.ui
--- nautilus-2.27.91/src/nautilus-file-management-properties.ui.dupe-id 2009-08-26 20:04:20.492274436 -0400
+++ nautilus-2.27.91/src/nautilus-file-management-properties.ui 2009-08-26 20:04:26.611029555 -0400
@@ -1128,7 +1128,7 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="label">
+ <object class="GtkLabel" id="label99">
<property name="height_request">6</property>
<property name="visible">True</property>
<property name="label" translatable="yes"/>

View File

@ -1,23 +0,0 @@
1eaa3d102a9df49cf41fe46fc01e88f8c1382c51
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 2c9ab69..4f9002f 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -691,6 +691,7 @@ finalize (GObject *object)
eel_g_list_free_deep (file->details->pending_extension_emblems);
eel_g_list_free_deep (file->details->extension_emblems);
+ eel_g_object_list_free (file->details->pending_info_providers);
if (file->details->pending_extension_attributes) {
g_hash_table_destroy (file->details->pending_extension_attributes);
@@ -6530,6 +6531,9 @@ invalidate_thumbnail (NautilusFile *file)
void
nautilus_file_invalidate_extension_info_internal (NautilusFile *file)
{
+ if (file->details->pending_info_providers)
+ eel_g_object_list_free (file->details->pending_info_providers);
+
file->details->pending_info_providers =
nautilus_module_get_extensions_for_type (NAUTILUS_TYPE_INFO_PROVIDER);
}

View File

@ -1,47 +0,0 @@
diff -up nautilus-2.27.4/src/nautilus-spatial-window.c.menu-icons3 nautilus-2.27.4/src/nautilus-spatial-window.c
--- nautilus-2.27.4/src/nautilus-spatial-window.c.menu-icons3 2009-08-03 18:59:28.015377172 -0400
+++ nautilus-2.27.4/src/nautilus-spatial-window.c 2009-08-03 19:08:19.623627208 -0400
@@ -683,6 +683,7 @@ location_button_clicked_callback (GtkWid
name = nautilus_file_get_display_name (file);
menu_item = gtk_image_menu_item_new_with_label (name);
+ gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menu_item), TRUE);
g_free (name);
if (first_item == NULL) {
@@ -941,6 +942,14 @@ static const GtkActionEntry spatial_entr
G_CALLBACK (action_search_callback) },
};
+static const char* icon_entries[] = {
+ "/MenuBar/Other Menus/Places/Home",
+ "/MenuBar/Other Menus/Places/Go to Computer",
+ "/MenuBar/Other Menus/Places/Go to Templates",
+ "/MenuBar/Other Menus/Places/Go to Trash",
+ "/MenuBar/Other Menus/Places/Go to Network"
+};
+
static void
nautilus_spatial_window_init (NautilusSpatialWindow *window)
{
@@ -951,6 +960,8 @@ nautilus_spatial_window_init (NautilusSp
GtkUIManager *ui_manager;
GtkTargetList *targets;
const char *ui;
+ int i;
+ GtkWidget *menuitem;
window->details = G_TYPE_INSTANCE_GET_PRIVATE (window,
NAUTILUS_TYPE_SPATIAL_WINDOW,
@@ -1042,6 +1053,11 @@ nautilus_spatial_window_init (NautilusSp
ui = nautilus_ui_string_get ("nautilus-spatial-window-ui.xml");
gtk_ui_manager_add_ui_from_string (ui_manager, ui, -1, NULL);
+
+ for (i = 0; i < G_N_ELEMENTS (icon_entries); i++) {
+ menuitem = gtk_ui_manager_get_widget (ui_manager, icon_entries[i]);
+ gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem), TRUE);
+ }
}
static void

View File

@ -14,8 +14,8 @@
Name: nautilus
Summary: File manager for GNOME
Version: 2.27.91
Release: 3%{?dist}
Version: 2.27.92
Release: 1%{?dist}
License: GPLv2+
Group: User Interface/Desktops
Source: http://download.gnome.org/sources/%{name}/2.27/%{name}-%{version}.tar.bz2
@ -85,10 +85,6 @@ Patch10: nautilus-gvfs-desktop-key-2.patch
# http://bugzilla.gnome.org/show_bug.cgi?id=519743
Patch17: nautilus-filetype-symlink-fix.patch
# from upstream
Patch20: nautilus-dupe-id.patch
Patch21: uninhibit-me-harder.patch
%description
Nautilus is the file manager and graphical shell for the GNOME desktop
that makes it easy to manage your files and the rest of your system.
@ -125,8 +121,6 @@ for developing nautilus extensions.
# %patch8 -p1 -b .hide-white-screen
%patch10 -p1 -b .gvfs-desktop-key
%patch17 -p0 -b .symlink
%patch20 -p1 -b .dupe-id
%patch21 -p1 -b .uninhibit-me-harder
%build
@ -267,6 +261,9 @@ fi
%changelog
* Mon Sep 7 2009 Tomas Bzatek <tbzatek@redhat.com> - 2.27.92-1
- Update to 2.27.92
* Sun Sep 6 2009 Matthias Clasen <mclasen@redhat.com> - 2.27.91-3
- Fix uninhibiting when long-running operations are over

View File

@ -1,90 +0,0 @@
--- nautilus-2.27.4.orig/src/file-manager/fm-directory-view.c 2009-07-13 21:47:03.000000000 +0200
+++ nautilus-2.27.4/src/file-manager/fm-directory-view.c 2009-08-01 17:01:19.000000000 +0200
@@ -105,12 +105,14 @@
#define FM_DIRECTORY_VIEW_MENU_PATH_SCRIPTS_PLACEHOLDER "/MenuBar/File/Open Placeholder/Scripts/Scripts Placeholder"
#define FM_DIRECTORY_VIEW_MENU_PATH_EXTENSION_ACTIONS_PLACEHOLDER "/MenuBar/Edit/Extension Actions"
#define FM_DIRECTORY_VIEW_MENU_PATH_NEW_DOCUMENTS_PLACEHOLDER "/MenuBar/File/New Items Placeholder/New Documents/New Documents Placeholder"
+#define FM_DIRECTORY_VIEW_MENU_PATH_OPEN "/MenuBar/File/Open Placeholder/Open"
#define FM_DIRECTORY_VIEW_POPUP_PATH_SELECTION "/selection"
#define FM_DIRECTORY_VIEW_POPUP_PATH_APPLICATIONS_SUBMENU_PLACEHOLDER "/selection/Open Placeholder/Open With/Applications Placeholder"
#define FM_DIRECTORY_VIEW_POPUP_PATH_APPLICATIONS_PLACEHOLDER "/selection/Open Placeholder/Applications Placeholder"
#define FM_DIRECTORY_VIEW_POPUP_PATH_SCRIPTS_PLACEHOLDER "/selection/Open Placeholder/Scripts/Scripts Placeholder"
#define FM_DIRECTORY_VIEW_POPUP_PATH_EXTENSION_ACTIONS "/selection/Extension Actions"
+#define FM_DIRECTORY_VIEW_POPUP_PATH_OPEN "/selection/Open Placeholder/Open"
#define FM_DIRECTORY_VIEW_POPUP_PATH_BACKGROUND "/background"
#define FM_DIRECTORY_VIEW_POPUP_PATH_BACKGROUND_SCRIPTS_PLACEHOLDER "/background/Before Zoom Items/New Object Items/Scripts/Scripts Placeholder"
@@ -4258,8 +4260,10 @@
char *label;
char *action_name;
char *escaped_app;
+ char *path;
GtkAction *action;
GIcon *app_icon;
+ GtkWidget *menuitem;
launch_parameters = application_launch_parameters_new
(application, files, view);
@@ -4307,6 +4311,16 @@
GTK_UI_MANAGER_MENUITEM,
FALSE);
+ path = g_strdup_printf("%s/%s", menu_placeholder, action_name);
+
+ menuitem = gtk_ui_manager_get_widget (
+ nautilus_window_info_get_ui_manager (view->details->window),
+ path);
+
+ gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem), TRUE);
+
+ g_free (path);
+
gtk_ui_manager_add_ui (nautilus_window_info_get_ui_manager (view->details->window),
view->details->open_with_merge_id,
popup_placeholder,
@@ -4315,6 +4329,15 @@
GTK_UI_MANAGER_MENUITEM,
FALSE);
+ path = g_strdup_printf("%s/%s", popup_placeholder, action_name);
+
+ menuitem = gtk_ui_manager_get_widget (
+ nautilus_window_info_get_ui_manager (view->details->window),
+ path);
+
+ gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem), TRUE);
+
+ g_free (path);
g_free (action_name);
g_free (label);
g_free (tip);
@@ -8339,6 +8362,7 @@
GtkAction *action;
GAppInfo *app;
GIcon *app_icon;
+ GtkWidget *menuitem;
selection = fm_directory_view_get_selection (view);
selection_count = g_list_length (selection);
@@ -8416,6 +8440,20 @@
label_with_underscore ? label_with_underscore : _("_Open"),
NULL);
+ menuitem = gtk_ui_manager_get_widget (
+ nautilus_window_info_get_ui_manager (view->details->window),
+ FM_DIRECTORY_VIEW_MENU_PATH_OPEN);
+
+ /* Only force displaying the icon if it is an application icon */
+ gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem), app_icon != NULL);
+
+ menuitem = gtk_ui_manager_get_widget (
+ nautilus_window_info_get_ui_manager (view->details->window),
+ FM_DIRECTORY_VIEW_POPUP_PATH_OPEN);
+
+ /* Only force displaying the icon if it is an application icon */
+ gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem), app_icon != NULL);
+
if (app_icon == NULL) {
app_icon = g_themed_icon_new (GTK_STOCK_OPEN);
}

View File

@ -1,20 +0,0 @@
Index: libnautilus-private/nautilus-mime-actions.c
===================================================================
--- libnautilus-private/nautilus-mime-actions.c (revision 14785)
+++ libnautilus-private/nautilus-mime-actions.c (working copy)
@@ -1331,12 +1331,13 @@
if (parameters->not_mounted != NULL) {
file = parameters->not_mounted->data;
mount_op = gtk_mount_operation_new (parameters->parent_window);
- g_signal_connect_object (mount_op, "notify::is-showing",
- G_CALLBACK (activate_mount_op_active), parameters, 0);
+ g_signal_connect (mount_op, "notify::is-showing",
+ G_CALLBACK (activate_mount_op_active), parameters);
location = nautilus_file_get_location (file);
g_file_mount_enclosing_volume (location, 0, mount_op, parameters->cancellable,
activation_mount_not_mounted_callback, parameters);
g_object_unref (location);
+ /* unref mount_op here - g_file_mount_enclosing_volume() does ref for itself */
g_object_unref (mount_op);
return;
}

View File

@ -1,78 +0,0 @@
Common subdirectories: nautilus-2.27.4.orig/src/file-manager and nautilus-2.27.4/src/file-manager
diff -u nautilus-2.27.4.orig/src/nautilus-navigation-window-menus.c nautilus-2.27.4/src/nautilus-navigation-window-menus.c
--- nautilus-2.27.4.orig/src/nautilus-navigation-window-menus.c 2009-06-24 16:00:12.000000000 +0200
+++ nautilus-2.27.4/src/nautilus-navigation-window-menus.c 2009-08-03 23:58:55.000000000 +0200
@@ -339,6 +339,15 @@
gtk_label_set_max_width_chars (label, MENU_ITEM_MAX_WIDTH_CHARS);
}
+static const char* icon_entries[] = {
+ "/MenuBar/Other Menus/Go/Home",
+ "/MenuBar/Other Menus/Go/Computer",
+ "/MenuBar/Other Menus/Go/Go to Templates",
+ "/MenuBar/Other Menus/Go/Go to Trash",
+ "/MenuBar/Other Menus/Go/Go to Network",
+ "/MenuBar/Other Menus/Go/Go to Location"
+};
+
/**
* refresh_go_menu:
*
@@ -350,7 +359,10 @@
{
GtkUIManager *ui_manager;
GList *node;
+ GtkWidget *menuitem;
int index;
+ const char *ui;
+ int i;
g_assert (NAUTILUS_IS_NAVIGATION_WINDOW (window));
@@ -371,6 +383,15 @@
window->details->go_menu_action_group,
-1);
g_object_unref (window->details->go_menu_action_group);
+
+ for (i = 0; i < G_N_ELEMENTS (icon_entries); i++) {
+ menuitem = gtk_ui_manager_get_widget (
+ ui_manager,
+ icon_entries[i]);
+
+ gtk_image_menu_item_set_always_show_image (
+ GTK_IMAGE_MENU_ITEM (menuitem), TRUE);
+ }
/* Add in a new set of history items. */
for (node = nautilus_get_history_list (), index = 0;
diff -u nautilus-2.27.4.orig/src/nautilus-window-menus.c nautilus-2.27.4/src/nautilus-window-menus.c
--- nautilus-2.27.4.orig/src/nautilus-window-menus.c 2009-06-24 16:00:12.000000000 +0200
+++ nautilus-2.27.4/src/nautilus-window-menus.c 2009-08-03 23:54:04.000000000 +0200
@@ -162,8 +162,10 @@
BookmarkHolder *bookmark_holder;
char action_name[128];
char *name;
+ char *path;
GdkPixbuf *pixbuf;
GtkAction *action;
+ GtkWidget *menuitem;
g_assert (NAUTILUS_IS_WINDOW (window));
g_assert (NAUTILUS_IS_BOOKMARK (bookmark));
@@ -203,7 +205,16 @@
GTK_UI_MANAGER_MENUITEM,
FALSE);
+ path = g_strdup_printf("%s/%s", parent_path, action_name);
+
+ menuitem = gtk_ui_manager_get_widget (
+ window->details->ui_manager,
+ path);
+
+ gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem), TRUE);
+
g_object_unref (pixbuf);
+ g_free (path);
g_free (name);
}

View File

@ -1,27 +0,0 @@
Index: libnautilus-private/nautilus-mime-actions.c
===================================================================
--- libnautilus-private/nautilus-mime-actions.c (revision 14785)
+++ libnautilus-private/nautilus-mime-actions.c (working copy)
@@ -1327,6 +1327,7 @@
NautilusFile *file;
GFile *location;
GMountOperation *mount_op;
+ GList *l, *next;
if (parameters->not_mounted != NULL) {
file = parameters->not_mounted->data;
@@ -1348,6 +1349,14 @@
return;
}
+ /* once the mount is finished, refresh all attributes */
+ /* - fixes new windows not appearing after successful mount */
+ for (l = parameters->files; l != NULL; l = next) {
+ file = NAUTILUS_FILE (l->data);
+ next = l->next;
+ nautilus_file_invalidate_all_attributes (file);
+ }
+
nautilus_file_list_call_when_ready
(parameters->files,
nautilus_mime_actions_get_required_file_attributes () | NAUTILUS_FILE_ATTRIBUTE_LINK_INFO,

View File

@ -1,28 +0,0 @@
Index: libnautilus-private/nautilus-directory-background.c
===================================================================
--- libnautilus-private/nautilus-directory-background.c (revision 14544)
+++ libnautilus-private/nautilus-directory-background.c (working copy)
@@ -115,6 +115,7 @@
if (tmp != NULL) {
if (!gdk_color_parse (tmp, color))
gdk_color_parse ("black", color);
+ g_free (tmp);
}
else {
gdk_color_parse ("black", color);
@@ -198,6 +199,7 @@
else {
*placement = EEL_BACKGROUND_CENTERED;
}
+ g_free (tmp);
/* Get the color */
tmp = gconf_client_get_string (client, BG_PREFERENCES_COLOR_SHADING_TYPE, NULL);
@@ -223,6 +225,7 @@
use_gradient = FALSE;
is_horizontal = FALSE;
}
+ g_free (tmp);
read_color (client, BG_PREFERENCES_PRIMARY_COLOR, &primary);
read_color (client, BG_PREFERENCES_SECONDARY_COLOR, &secondary);

View File

@ -1 +1 @@
a7f654d0553307e80985aceb08946224 nautilus-2.27.91.tar.bz2
46b5677e652ec008bb9d611f402d9375 nautilus-2.27.92.tar.bz2

View File

@ -1,12 +0,0 @@
diff -up nautilus-2.27.91/libnautilus-private/nautilus-file-utilities.c.release-your-inhibitions nautilus-2.27.91/libnautilus-private/nautilus-file-utilities.c
--- nautilus-2.27.91/libnautilus-private/nautilus-file-utilities.c.release-your-inhibitions 2009-09-06 21:25:01.462765511 -0400
+++ nautilus-2.27.91/libnautilus-private/nautilus-file-utilities.c 2009-09-06 21:25:34.998778724 -0400
@@ -1100,7 +1100,7 @@ nautilus_uninhibit_power_manager (gint c
{
DBusGProxy *proxy;
GError *error;
- g_return_if_fail (cookie < 0);
+ g_return_if_fail (cookie > 0);
proxy = get_power_manager_proxy ();