search-model: check for duplicate events in search bar
This commit is contained in:
committed by
Georges Basile Stavracas Neto
parent
fd2b0a96a5
commit
be0a2312d9
@@ -94,6 +94,16 @@ compare_search_hits_cb (gconstpointer a,
|
|||||||
return gcal_search_hit_compare (hit_a, hit_b);
|
return gcal_search_hit_compare (hit_a, hit_b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
search_hits_equals_cb (gconstpointer a,
|
||||||
|
gconstpointer b)
|
||||||
|
{
|
||||||
|
GcalSearchHit *search_hit_a = GCAL_SEARCH_HIT ((gpointer) a);
|
||||||
|
GcalSearchHit *search_hit_b = GCAL_SEARCH_HIT ((gpointer) b);
|
||||||
|
|
||||||
|
return gcal_search_hit_compare (search_hit_a, search_hit_b) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
static GcalRange*
|
static GcalRange*
|
||||||
gcal_search_model_get_range (GcalTimelineSubscriber *subscriber)
|
gcal_search_model_get_range (GcalTimelineSubscriber *subscriber)
|
||||||
{
|
{
|
||||||
@@ -108,6 +118,7 @@ gcal_search_model_add_event (GcalTimelineSubscriber *subscriber,
|
|||||||
{
|
{
|
||||||
g_autoptr (GcalSearchHitEvent) search_hit = NULL;
|
g_autoptr (GcalSearchHitEvent) search_hit = NULL;
|
||||||
GcalSearchModel *self;
|
GcalSearchModel *self;
|
||||||
|
guint position = -1;
|
||||||
|
|
||||||
self = GCAL_SEARCH_MODEL (subscriber);
|
self = GCAL_SEARCH_MODEL (subscriber);
|
||||||
|
|
||||||
@@ -118,6 +129,14 @@ gcal_search_model_add_event (GcalTimelineSubscriber *subscriber,
|
|||||||
|
|
||||||
search_hit = gcal_search_hit_event_new (event);
|
search_hit = gcal_search_hit_event_new (event);
|
||||||
|
|
||||||
|
g_list_store_find_with_equal_func (G_LIST_STORE (self->model),
|
||||||
|
search_hit,
|
||||||
|
search_hits_equals_cb,
|
||||||
|
&position);
|
||||||
|
|
||||||
|
if (position != -1)
|
||||||
|
return;
|
||||||
|
|
||||||
g_list_store_insert_sorted (G_LIST_STORE (self->model),
|
g_list_store_insert_sorted (G_LIST_STORE (self->model),
|
||||||
search_hit,
|
search_hit,
|
||||||
compare_search_hits_cb,
|
compare_search_hits_cb,
|
||||||
|
|||||||
Reference in New Issue
Block a user