This commit is contained in:
Tomas Bzatek 2010-03-08 15:21:52 +00:00
parent 2ac1b41c3b
commit 9801295922
5 changed files with 0 additions and 454 deletions

View File

@ -1,339 +0,0 @@
diff -up nautilus-2.23.5/configure.in.dynamic-search nautilus-2.23.5/configure.in
--- nautilus-2.23.5/configure.in.dynamic-search 2008-07-21 11:27:29.000000000 -0400
+++ nautilus-2.23.5/configure.in 2008-07-22 00:43:14.000000000 -0400
@@ -280,53 +280,18 @@ dnl ====================================
dnl search implementations
dnl ****************************
-AM_CONDITIONAL(HAVE_TRACKER, false)
-
-dnl libtracker checking
-
-AC_ARG_ENABLE(tracker,
- AC_HELP_STRING([--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,
- AC_HELP_STRING([--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])
+TRACKER_CFLAGS=
+AC_SUBST(TRACKER_CFLAGS)
+msg_tracker=yes
+
+AM_CONDITIONAL(HAVE_BEAGLE, true)
+AC_DEFINE(HAVE_BEAGLE, 1, [Define to enable beagle support])
+BEAGLE_CFLAGS=
+AC_SUBST(BEAGLE_CFLAGS)
+msg_beagle=yes
dnl ==========================================================================
diff -up nautilus-2.23.5/libnautilus-private/nautilus-search-engine-beagle.c.dynamic-search nautilus-2.23.5/libnautilus-private/nautilus-search-engine-beagle.c
--- nautilus-2.23.5/libnautilus-private/nautilus-search-engine-beagle.c.dynamic-search 2008-06-30 12:02:43.000000000 -0400
+++ nautilus-2.23.5/libnautilus-private/nautilus-search-engine-beagle.c 2008-07-22 00:41:24.000000000 -0400
@@ -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,121 @@ 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 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 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_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_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 +401,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.23.5/libnautilus-private/nautilus-search-engine-tracker.c.dynamic-search nautilus-2.23.5/libnautilus-private/nautilus-search-engine-tracker.c
--- nautilus-2.23.5/libnautilus-private/nautilus-search-engine-tracker.c.dynamic-search 2008-06-30 12:02:26.000000000 -0400
+++ nautilus-2.23.5/libnautilus-private/nautilus-search-engine-tracker.c 2008-07-22 00:41:24.000000000 -0400
@@ -23,11 +23,92 @@
#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 int (*tracker_get_version) (TrackerClient *client, GError **error) = 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),
+ MAP (tracker_get_version)
+#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;
@@ -260,6 +341,12 @@ nautilus_search_engine_tracker_new (void
TrackerClient *tracker_client;
GError *err = NULL;
+ open_libtracker ();
+
+ if (!tracker_connect) {
+ return NULL;
+ }
+
tracker_client = tracker_connect (FALSE);
if (!tracker_client) {

View File

@ -1,35 +0,0 @@
From 88da398b39b2047f3f42e56d3d3a24ba18233e40 Mon Sep 17 00:00:00 2001
From: Tomas Bzatek <tbzatek@redhat.com>
Date: Tue, 22 Sep 2009 17:26:06 +0200
Subject: [PATCH] Don't rely on activation_uri when detecting mounts
We test for the activation_uri (i.e. G_FILE_ATTRIBUTE_STANDARD_TARGET_URI)
which is usually not exposed from computer:// items until the item is mounted
(and that's up to particular gvfs volume monitor).
Simply don't test for activation_uri, file type of G_FILE_TYPE_MOUNTABLE
should be enough.
---
libnautilus-private/nautilus-directory-async.c | 5 ++---
1 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/libnautilus-private/nautilus-directory-async.c b/libnautilus-private/nautilus-directory-async.c
index 653fd30..ff20ac5 100644
--- a/libnautilus-private/nautilus-directory-async.c
+++ b/libnautilus-private/nautilus-directory-async.c
@@ -1700,9 +1700,8 @@ lacks_mount (NautilusFile *file)
(file->details->type == G_FILE_TYPE_DIRECTORY &&
nautilus_file_is_self_owned (file)) ||
- /* Mountable with a target_uri, could be a mountpoint */
- (file->details->type == G_FILE_TYPE_MOUNTABLE &&
- file->details->activation_uri != NULL)
+ /* Mountable, could be a mountpoint */
+ (file->details->type == G_FILE_TYPE_MOUNTABLE)
)
);
--
1.6.4.4

View File

@ -1,40 +0,0 @@
From b10717e1634128f08009c11f0a570888ee314350 Mon Sep 17 00:00:00 2001
From: Tomas Bzatek <tbzatek@redhat.com>
Date: Mon, 2 Nov 2009 17:10:47 +0100
Subject: [PATCH] Fall back to display parent folder info when selection is invalid
See bug 590591.
---
src/nautilus-information-panel.c | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/nautilus-information-panel.c b/src/nautilus-information-panel.c
index ce162ef..03e398b 100644
--- a/src/nautilus-information-panel.c
+++ b/src/nautilus-information-panel.c
@@ -1114,15 +1114,20 @@ selection_changed_callback (NautilusWindowInfo *window,
selection = nautilus_window_info_get_selection (window);
selection_count = g_list_length (selection);
+ file = NULL;
+
if (selection_count == 1) {
selection = nautilus_window_info_get_selection (window);
selected = selection->data;
- /* this should never fail here, as we're displaying the file */
+ /* FIXME: in some cases we're unable to get a NautilusFile
+ for the selected file. See bug 590591 for details. */
file = nautilus_file_get_existing (selected);
+ }
+
+ if (file) {
uri = nautilus_file_get_uri (file);
name = nautilus_file_get_display_name (file);
-
nautilus_file_unref (file);
} else {
uri = nautilus_window_info_get_current_location (window);
--
1.6.5.1

View File

@ -1,24 +0,0 @@
From 3ee90909fa92feaf3df0964eed2b95c5d968ba98 Mon Sep 17 00:00:00 2001
From: Tomas Bzatek <tbzatek@redhat.com>
Date: Tue, 10 Nov 2009 14:20:18 +0000
Subject: Unfreeze updates in directory list view after rename cancellation
We successfully cancelled rename operation but the directory view
was left in frozen state, containing pseudo items with NULL elements.
Fixes bug 590591.
---
diff --git a/src/file-manager/fm-list-view.c b/src/file-manager/fm-list-view.c
index c20315d..a093d1e 100644
--- a/src/file-manager/fm-list-view.c
+++ b/src/file-manager/fm-list-view.c
@@ -1134,6 +1134,7 @@ cell_renderer_edited (GtkCellRendererText *cell,
g_object_set (G_OBJECT (view->details->file_name_cell),
"editable", FALSE,
NULL);
+ fm_directory_view_unfreeze_updates (FM_DIRECTORY_VIEW (view));
return;
}
--
cgit v0.8.2

View File

@ -1,16 +0,0 @@
diff -up nautilus-2.25.93/nautilus.desktop.in.condrestart nautilus-2.25.93/nautilus.desktop.in
--- nautilus-2.25.93/nautilus.desktop.in.condrestart 2009-03-12 10:49:41.449753624 -0400
+++ nautilus-2.25.93/nautilus.desktop.in 2009-03-12 10:49:51.814754208 -0400
@@ -17,3 +17,4 @@ X-GNOME-Autostart-Phase=Desktop
X-GNOME-Autostart-Notify=true
X-GNOME-AutoRestart=true
X-GNOME-Provides=filemanager
+AutostartCondition=GNOME /apps/nautilus/preferences/show_desktop
diff -up nautilus-2.25.93/nautilus.desktop.in.in.condrestart nautilus-2.25.93/nautilus.desktop.in.in
--- nautilus-2.25.93/nautilus.desktop.in.in.condrestart 2009-03-12 10:47:41.681753834 -0400
+++ nautilus-2.25.93/nautilus.desktop.in.in 2009-03-12 10:49:29.663754303 -0400
@@ -17,3 +17,4 @@ X-GNOME-Autostart-Phase=Desktop
X-GNOME-Autostart-Notify=true
X-GNOME-AutoRestart=true
X-GNOME-Provides=filemanager
+AutostartCondition=GNOME /apps/nautilus/preferences/show_desktop