aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/ChangeLog10
-rw-r--r--addressbook/gui/component/select-names/e-select-names-completion.c15
2 files changed, 25 insertions, 0 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index 35c3c7bbac..1fdb0dd408 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,5 +1,15 @@
2001-10-18 Jon Trowbridge <trow@ximian.com>
+ * gui/component/select-names/e-select-names-completion.c
+ (check_capabilities): Added. Check if our book is local or
+ networked.
+ (e_select_names_completion_book_ready): Call check_capabilities.
+ (e_select_names_completion_new): Call check_capabilities.
+ (e_select_names_completion_do_query): If we have a networked book,
+ keep trying if we haven't been able to cache any cards --- our
+ earlier attempts could have failed due to too many matches. (Bug
+ #12932)
+
* gui/component/select-names/e-select-names-manager.c
(focus_out_cb): Lag our cardification on focus-out. This seems to
help with the unintended cardifications that can result from the
diff --git a/addressbook/gui/component/select-names/e-select-names-completion.c b/addressbook/gui/component/select-names/e-select-names-completion.c
index 7f4a89af54..403173caa8 100644
--- a/addressbook/gui/component/select-names/e-select-names-completion.c
+++ b/addressbook/gui/component/select-names/e-select-names-completion.c
@@ -65,6 +65,8 @@ struct _ESelectNamesCompletionPrivate {
gboolean match_contact_lists;
gboolean primary_only;
+
+ gboolean can_fail_due_to_too_many_hits; /* like LDAP, for example... */
};
static void e_select_names_completion_class_init (ESelectNamesCompletionClass *);
@@ -967,6 +969,7 @@ e_select_names_completion_do_query (ESelectNamesCompletion *comp, const gchar *q
fprintf (out, "cached: %s\n", comp->priv->cached_query_text);
can_reuse_cached_cards = (comp->priv->cached_query_text
+ && (!comp->priv->can_fail_due_to_too_many_hits || comp->priv->cached_cards != NULL)
&& (strlen (comp->priv->cached_query_text) <= strlen (clean))
&& !g_utf8_strncasecmp (comp->priv->cached_query_text, clean, strlen (comp->priv->cached_query_text)));
@@ -1111,6 +1114,14 @@ e_select_names_completion_cancel (ECompletion *comp)
}
static void
+check_capabilities (ESelectNamesCompletion *comp, EBook *book)
+{
+ gchar *cap = e_book_get_static_capabilities (book);
+ comp->priv->can_fail_due_to_too_many_hits = !strcmp (cap, "net");
+ g_free (cap);
+}
+
+static void
e_select_names_completion_book_ready (EBook *book, EBookStatus status, ESelectNamesCompletion *comp)
{
comp->priv->book_ready = TRUE;
@@ -1118,6 +1129,8 @@ e_select_names_completion_book_ready (EBook *book, EBookStatus status, ESelectNa
g_return_if_fail (E_IS_BOOK (book));
g_return_if_fail (E_IS_SELECT_NAMES_COMPLETION (comp));
+ check_capabilities (comp, book);
+
/* If waiting_query is non-NULL, someone tried to start a query before the book was ready.
Now that it is, get started. */
if (comp->priv->waiting_query) {
@@ -1163,6 +1176,8 @@ e_select_names_completion_new (EBook *book, ESelectNamesModel *model)
gtk_object_ref (GTK_OBJECT (comp->priv->book));
comp->priv->book_ready = TRUE;
+ check_capabilities (comp, book);
+
}
comp->priv->model = model;