- 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 Name: nautilus
Summary: File manager for GNOME Summary: File manager for GNOME
Version: 2.27.91 Version: 2.27.92
Release: 3%{?dist} Release: 1%{?dist}
License: GPLv2+ License: GPLv2+
Group: User Interface/Desktops Group: User Interface/Desktops
Source: http://download.gnome.org/sources/%{name}/2.27/%{name}-%{version}.tar.bz2 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 # http://bugzilla.gnome.org/show_bug.cgi?id=519743
Patch17: nautilus-filetype-symlink-fix.patch Patch17: nautilus-filetype-symlink-fix.patch
# from upstream
Patch20: nautilus-dupe-id.patch
Patch21: uninhibit-me-harder.patch
%description %description
Nautilus is the file manager and graphical shell for the GNOME desktop 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. 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 # %patch8 -p1 -b .hide-white-screen
%patch10 -p1 -b .gvfs-desktop-key %patch10 -p1 -b .gvfs-desktop-key
%patch17 -p0 -b .symlink %patch17 -p0 -b .symlink
%patch20 -p1 -b .dupe-id
%patch21 -p1 -b .uninhibit-me-harder
%build %build
@ -267,6 +261,9 @@ fi
%changelog %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 * Sun Sep 6 2009 Matthias Clasen <mclasen@redhat.com> - 2.27.91-3
- Fix uninhibiting when long-running operations are over - 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 ();