utils: Make date comparison follow time comparison semantics
Right now, comparing dates with gcal_date_time_compare_date() gives the exact opposite result of when comparing using g_date_time_compare(). As shown by this patch, this was a source of *many* bugs.
This commit is contained in:
@@ -1890,8 +1890,8 @@ gcal_event_is_within_range (GcalEvent *self,
|
|||||||
|
|
||||||
if (gcal_event_get_all_day (self))
|
if (gcal_event_get_all_day (self))
|
||||||
{
|
{
|
||||||
return gcal_date_time_compare_date (range_end, event_start) < 0 &&
|
return gcal_date_time_compare_date (range_end, event_start) > 0 &&
|
||||||
gcal_date_time_compare_date (range_start, event_end) > 0;
|
gcal_date_time_compare_date (event_end, range_start) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return g_date_time_compare (range_end, event_start) > 0 &&
|
return g_date_time_compare (range_end, event_start) > 0 &&
|
||||||
|
|||||||
@@ -384,20 +384,12 @@ on_manager_calendar_removed_cb (GcalManager *manager,
|
|||||||
* GcalTimelineSubscriber iface
|
* GcalTimelineSubscriber iface
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static GDateTime*
|
static GcalRange*
|
||||||
gcal_shell_search_provider_get_range_start (GcalTimelineSubscriber *subscriber)
|
gcal_shell_search_provider_get_range (GcalTimelineSubscriber *subscriber)
|
||||||
{
|
{
|
||||||
GcalShellSearchProvider *self = GCAL_SHELL_SEARCH_PROVIDER (subscriber);
|
GcalShellSearchProvider *self = GCAL_SHELL_SEARCH_PROVIDER (subscriber);
|
||||||
|
|
||||||
return g_date_time_ref (self->range_start);
|
return gcal_range_new (self->range_start, self->range_end, GCAL_RANGE_DEFAULT);
|
||||||
}
|
|
||||||
|
|
||||||
static GDateTime*
|
|
||||||
gcal_shell_search_provider_get_range_end (GcalTimelineSubscriber *subscriber)
|
|
||||||
{
|
|
||||||
GcalShellSearchProvider *self = GCAL_SHELL_SEARCH_PROVIDER (subscriber);
|
|
||||||
|
|
||||||
return g_date_time_ref (self->range_end);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -437,8 +429,7 @@ gcal_shell_search_provider_remove_event (GcalTimelineSubscriber *subscriber,
|
|||||||
static void
|
static void
|
||||||
gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
|
gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
|
||||||
{
|
{
|
||||||
iface->get_range_start = gcal_shell_search_provider_get_range_start;
|
iface->get_range = gcal_shell_search_provider_get_range;
|
||||||
iface->get_range_end = gcal_shell_search_provider_get_range_end;
|
|
||||||
iface->add_event = gcal_shell_search_provider_add_event;
|
iface->add_event = gcal_shell_search_provider_add_event;
|
||||||
iface->update_event = gcal_shell_search_provider_update_event;
|
iface->update_event = gcal_shell_search_provider_update_event;
|
||||||
iface->remove_event = gcal_shell_search_provider_remove_event;
|
iface->remove_event = gcal_shell_search_provider_remove_event;
|
||||||
|
|||||||
@@ -48,35 +48,19 @@ gcal_timeline_subscriber_default_init (GcalTimelineSubscriberInterface *iface)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gcal_timeline_subscriber_get_range_start:
|
* gcal_timeline_subscriber_get_range:
|
||||||
* @self: a #GcalTimelineSubscriber
|
* @self: a #GcalTimelineSubscriber
|
||||||
*
|
*
|
||||||
* Retrieves the start of the range of @self.
|
* Retrieves the range of @self.
|
||||||
*
|
*
|
||||||
* Returns: (transfer full): a #GDateTime
|
* Returns: (transfer full): a #GcalRange
|
||||||
*/
|
*/
|
||||||
GDateTime*
|
GcalRange*
|
||||||
gcal_timeline_subscriber_get_range_start (GcalTimelineSubscriber *self)
|
gcal_timeline_subscriber_get_range (GcalTimelineSubscriber *self)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (GCAL_IS_TIMELINE_SUBSCRIBER (self), NULL);
|
g_return_val_if_fail (GCAL_IS_TIMELINE_SUBSCRIBER (self), NULL);
|
||||||
|
|
||||||
return GCAL_TIMELINE_SUBSCRIBER_GET_IFACE (self)->get_range_start (self);
|
return GCAL_TIMELINE_SUBSCRIBER_GET_IFACE (self)->get_range (self);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gcal_timeline_subscriber_get_range_end:
|
|
||||||
* @self: a #GcalTimelineSubscriber
|
|
||||||
*
|
|
||||||
* Retrieves the end of the range of @self.
|
|
||||||
*
|
|
||||||
* Returns: (transfer full): a #GDateTime
|
|
||||||
*/
|
|
||||||
GDateTime*
|
|
||||||
gcal_timeline_subscriber_get_range_end (GcalTimelineSubscriber *self)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (GCAL_IS_TIMELINE_SUBSCRIBER (self), NULL);
|
|
||||||
|
|
||||||
return GCAL_TIMELINE_SUBSCRIBER_GET_IFACE (self)->get_range_end (self);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#define LIBICAL_GLIB_UNSTABLE_API
|
#define LIBICAL_GLIB_UNSTABLE_API
|
||||||
#include <libical-glib/libical-glib.h>
|
#include <libical-glib/libical-glib.h>
|
||||||
|
|
||||||
|
#include "gcal-range.h"
|
||||||
#include "gcal-types.h"
|
#include "gcal-types.h"
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
@@ -37,8 +38,7 @@ struct _GcalTimelineSubscriberInterface
|
|||||||
{
|
{
|
||||||
GTypeInterface parent;
|
GTypeInterface parent;
|
||||||
|
|
||||||
GDateTime* (*get_range_start) (GcalTimelineSubscriber *self);
|
GcalRange* (*get_range) (GcalTimelineSubscriber *self);
|
||||||
GDateTime* (*get_range_end) (GcalTimelineSubscriber *self);
|
|
||||||
|
|
||||||
void (*add_event) (GcalTimelineSubscriber *self,
|
void (*add_event) (GcalTimelineSubscriber *self,
|
||||||
GcalEvent *event);
|
GcalEvent *event);
|
||||||
@@ -50,9 +50,7 @@ struct _GcalTimelineSubscriberInterface
|
|||||||
GcalEvent *event);
|
GcalEvent *event);
|
||||||
};
|
};
|
||||||
|
|
||||||
GDateTime* gcal_timeline_subscriber_get_range_start (GcalTimelineSubscriber *self);
|
GcalRange* gcal_timeline_subscriber_get_range (GcalTimelineSubscriber *self);
|
||||||
|
|
||||||
GDateTime* gcal_timeline_subscriber_get_range_end (GcalTimelineSubscriber *self);
|
|
||||||
|
|
||||||
void gcal_timeline_subscriber_range_changed (GcalTimelineSubscriber *self);
|
void gcal_timeline_subscriber_range_changed (GcalTimelineSubscriber *self);
|
||||||
|
|
||||||
|
|||||||
+19
-50
@@ -57,12 +57,6 @@ typedef struct
|
|||||||
GcalTimeline *timeline;
|
GcalTimeline *timeline;
|
||||||
} TimelineSource;
|
} TimelineSource;
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
GDateTime *range_start;
|
|
||||||
GDateTime *range_end;
|
|
||||||
} SubscriberData;
|
|
||||||
|
|
||||||
struct _GcalTimeline
|
struct _GcalTimeline
|
||||||
{
|
{
|
||||||
GObject parent_instance;
|
GObject parent_instance;
|
||||||
@@ -163,26 +157,6 @@ increase_completed_calendars (GcalTimeline *self)
|
|||||||
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_COMPLETE]);
|
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_COMPLETE]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static SubscriberData*
|
|
||||||
subscriber_data_new (GcalTimelineSubscriber *subscriber)
|
|
||||||
{
|
|
||||||
SubscriberData *subscriber_data;
|
|
||||||
|
|
||||||
subscriber_data = g_new0 (SubscriberData, 1);
|
|
||||||
subscriber_data->range_start = gcal_timeline_subscriber_get_range_start (subscriber);
|
|
||||||
subscriber_data->range_end = gcal_timeline_subscriber_get_range_end (subscriber);
|
|
||||||
|
|
||||||
return g_steal_pointer (&subscriber_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
subscriber_data_free (SubscriberData *subscriber_data)
|
|
||||||
{
|
|
||||||
gcal_clear_date_time (&subscriber_data->range_start);
|
|
||||||
gcal_clear_date_time (&subscriber_data->range_end);
|
|
||||||
g_free (subscriber_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
add_event_to_subscriber (GcalTimelineSubscriber *subscriber,
|
add_event_to_subscriber (GcalTimelineSubscriber *subscriber,
|
||||||
GcalEvent *event)
|
GcalEvent *event)
|
||||||
@@ -223,9 +197,11 @@ subscriber_contains_event (GcalTimelineSubscriber *subscriber,
|
|||||||
{
|
{
|
||||||
g_autoptr (GDateTime) subscriber_range_start = NULL;
|
g_autoptr (GDateTime) subscriber_range_start = NULL;
|
||||||
g_autoptr (GDateTime) subscriber_range_end = NULL;
|
g_autoptr (GDateTime) subscriber_range_end = NULL;
|
||||||
|
g_autoptr (GcalRange) subscriber_range = NULL;
|
||||||
|
|
||||||
subscriber_range_start = gcal_timeline_subscriber_get_range_start (subscriber);
|
subscriber_range = gcal_timeline_subscriber_get_range (subscriber);
|
||||||
subscriber_range_end = gcal_timeline_subscriber_get_range_end (subscriber);
|
subscriber_range_start = gcal_range_get_start (subscriber_range);
|
||||||
|
subscriber_range_end = gcal_range_get_end (subscriber_range);
|
||||||
|
|
||||||
return gcal_event_is_within_range (event, subscriber_range_start, subscriber_range_end);
|
return gcal_event_is_within_range (event, subscriber_range_start, subscriber_range_end);
|
||||||
}
|
}
|
||||||
@@ -250,11 +226,13 @@ update_range (GcalTimeline *self)
|
|||||||
g_hash_table_iter_init (&iter, self->subscribers);
|
g_hash_table_iter_init (&iter, self->subscribers);
|
||||||
while (g_hash_table_iter_next (&iter, (gpointer*) &subscriber, NULL))
|
while (g_hash_table_iter_next (&iter, (gpointer*) &subscriber, NULL))
|
||||||
{
|
{
|
||||||
|
g_autoptr (GcalRange) subscriber_range = NULL;
|
||||||
g_autoptr (GDateTime) subscriber_start = NULL;
|
g_autoptr (GDateTime) subscriber_start = NULL;
|
||||||
g_autoptr (GDateTime) subscriber_end = NULL;
|
g_autoptr (GDateTime) subscriber_end = NULL;
|
||||||
|
|
||||||
subscriber_start = gcal_timeline_subscriber_get_range_start (subscriber);
|
subscriber_range = gcal_timeline_subscriber_get_range (subscriber);
|
||||||
subscriber_end = gcal_timeline_subscriber_get_range_end (subscriber);
|
subscriber_start = gcal_range_get_start (subscriber_range);
|
||||||
|
subscriber_end = gcal_range_get_end (subscriber_range);
|
||||||
|
|
||||||
if (!new_range_start || g_date_time_compare (subscriber_start, new_range_start) < 0)
|
if (!new_range_start || g_date_time_compare (subscriber_start, new_range_start) < 0)
|
||||||
{
|
{
|
||||||
@@ -427,9 +405,9 @@ add_cached_events_to_subscriber (GcalTimeline *self,
|
|||||||
|
|
||||||
GCAL_ENTRY;
|
GCAL_ENTRY;
|
||||||
|
|
||||||
subscriber_start = gcal_timeline_subscriber_get_range_start (subscriber);
|
subscriber_range = gcal_timeline_subscriber_get_range (subscriber);
|
||||||
subscriber_end = gcal_timeline_subscriber_get_range_end (subscriber);
|
subscriber_start = gcal_range_get_start (subscriber_range);
|
||||||
subscriber_range = gcal_range_new (subscriber_start, subscriber_end, GCAL_RANGE_DEFAULT);
|
subscriber_end = gcal_range_get_end (subscriber_range);
|
||||||
|
|
||||||
events_to_add = gcal_range_tree_get_data_at_range (self->events, subscriber_range);
|
events_to_add = gcal_range_tree_get_data_at_range (self->events, subscriber_range);
|
||||||
|
|
||||||
@@ -460,18 +438,13 @@ update_subscriber_range (GcalTimeline *self,
|
|||||||
{
|
{
|
||||||
g_autoptr (GcalRange) old_range = NULL;
|
g_autoptr (GcalRange) old_range = NULL;
|
||||||
g_autoptr (GcalRange) new_range = NULL;
|
g_autoptr (GcalRange) new_range = NULL;
|
||||||
SubscriberData *subscriber_data;
|
|
||||||
|
|
||||||
|
|
||||||
GCAL_ENTRY;
|
GCAL_ENTRY;
|
||||||
|
|
||||||
subscriber_data = g_hash_table_lookup (self->subscribers, subscriber);
|
old_range = g_hash_table_lookup (self->subscribers, subscriber);
|
||||||
g_assert (subscriber_data != NULL);
|
g_assert (old_range != NULL);
|
||||||
|
|
||||||
old_range = gcal_range_new (subscriber_data->range_start, subscriber_data->range_end, GCAL_RANGE_DEFAULT);
|
new_range = gcal_timeline_subscriber_get_range (subscriber);
|
||||||
new_range = gcal_range_new_take (gcal_timeline_subscriber_get_range_start (subscriber),
|
|
||||||
gcal_timeline_subscriber_get_range_end (subscriber),
|
|
||||||
GCAL_RANGE_DEFAULT);
|
|
||||||
|
|
||||||
/* Diff new and old event ranges */
|
/* Diff new and old event ranges */
|
||||||
calculate_changed_events (self, subscriber, old_range, new_range);
|
calculate_changed_events (self, subscriber, old_range, new_range);
|
||||||
@@ -480,11 +453,7 @@ update_subscriber_range (GcalTimeline *self,
|
|||||||
gcal_range_tree_remove_data (self->subscriber_ranges, subscriber);
|
gcal_range_tree_remove_data (self->subscriber_ranges, subscriber);
|
||||||
gcal_range_tree_add_range (self->subscriber_ranges, new_range, subscriber);
|
gcal_range_tree_add_range (self->subscriber_ranges, new_range, subscriber);
|
||||||
|
|
||||||
gcal_clear_date_time (&subscriber_data->range_start);
|
g_hash_table_insert (self->subscribers, g_object_ref (subscriber), g_steal_pointer (&new_range));
|
||||||
subscriber_data->range_start = gcal_range_get_start (new_range);
|
|
||||||
|
|
||||||
gcal_clear_date_time (&subscriber_data->range_end);
|
|
||||||
subscriber_data->range_end = gcal_range_get_end (new_range);
|
|
||||||
|
|
||||||
GCAL_EXIT;
|
GCAL_EXIT;
|
||||||
}
|
}
|
||||||
@@ -861,7 +830,7 @@ gcal_timeline_init (GcalTimeline *self)
|
|||||||
self->cancellable = g_cancellable_new ();
|
self->cancellable = g_cancellable_new ();
|
||||||
self->events = gcal_range_tree_new_with_free_func (g_object_unref);
|
self->events = gcal_range_tree_new_with_free_func (g_object_unref);
|
||||||
self->calendars = g_hash_table_new_full (NULL, NULL, NULL, g_object_unref);
|
self->calendars = g_hash_table_new_full (NULL, NULL, NULL, g_object_unref);
|
||||||
self->subscribers = g_hash_table_new_full (NULL, NULL, g_object_unref, (GDestroyNotify) subscriber_data_free);
|
self->subscribers = g_hash_table_new_full (NULL, NULL, g_object_unref, (GDestroyNotify) gcal_range_unref);
|
||||||
self->subscriber_ranges = gcal_range_tree_new ();
|
self->subscriber_ranges = gcal_range_tree_new ();
|
||||||
self->event_queue = g_queue_new ();
|
self->event_queue = g_queue_new ();
|
||||||
|
|
||||||
@@ -952,7 +921,7 @@ void
|
|||||||
gcal_timeline_add_subscriber (GcalTimeline *self,
|
gcal_timeline_add_subscriber (GcalTimeline *self,
|
||||||
GcalTimelineSubscriber *subscriber)
|
GcalTimelineSubscriber *subscriber)
|
||||||
{
|
{
|
||||||
SubscriberData *subscriber_data;
|
g_autoptr (GcalRange) subscriber_range = NULL;
|
||||||
|
|
||||||
g_return_if_fail (GCAL_IS_TIMELINE (self));
|
g_return_if_fail (GCAL_IS_TIMELINE (self));
|
||||||
g_return_if_fail (GCAL_IS_TIMELINE_SUBSCRIBER (subscriber));
|
g_return_if_fail (GCAL_IS_TIMELINE_SUBSCRIBER (subscriber));
|
||||||
@@ -964,9 +933,9 @@ gcal_timeline_add_subscriber (GcalTimeline *self,
|
|||||||
|
|
||||||
g_debug ("Adding subscriber %s to timeline %p", G_OBJECT_TYPE_NAME (subscriber), self);
|
g_debug ("Adding subscriber %s to timeline %p", G_OBJECT_TYPE_NAME (subscriber), self);
|
||||||
|
|
||||||
subscriber_data = subscriber_data_new (subscriber);
|
subscriber_range = gcal_timeline_subscriber_get_range (subscriber);
|
||||||
|
|
||||||
g_hash_table_insert (self->subscribers, g_object_ref (subscriber), g_steal_pointer (&subscriber_data));
|
g_hash_table_insert (self->subscribers, g_object_ref (subscriber), gcal_range_ref (subscriber_range));
|
||||||
g_signal_connect_object (subscriber,
|
g_signal_connect_object (subscriber,
|
||||||
"range-changed",
|
"range-changed",
|
||||||
G_CALLBACK (on_subscriber_range_changed_cb),
|
G_CALLBACK (on_subscriber_range_changed_cb),
|
||||||
|
|||||||
@@ -402,7 +402,7 @@ format_datetime_for_display (GDateTime *date,
|
|||||||
string = g_string_new ("");
|
string = g_string_new ("");
|
||||||
|
|
||||||
now = g_date_time_new_now_local ();
|
now = g_date_time_new_now_local ();
|
||||||
days_diff = gcal_date_time_compare_date (now, date);
|
days_diff = gcal_date_time_compare_date (date, now);
|
||||||
|
|
||||||
switch (days_diff)
|
switch (days_diff)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* gcal-quick-add-popover.c
|
/* gcal-quick-add-popover.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2016 Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
|
* Copyright (C) 2016-2020 Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* gcal-search-model.c
|
/* gcal-search-model.c
|
||||||
*
|
*
|
||||||
* Copyright 2019 Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
|
* Copyright 2019-2020 Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -96,20 +96,12 @@ 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 GDateTime*
|
static GcalRange*
|
||||||
gcal_search_model_get_range_start (GcalTimelineSubscriber *subscriber)
|
gcal_search_model_get_range (GcalTimelineSubscriber *subscriber)
|
||||||
{
|
{
|
||||||
GcalSearchModel *self = GCAL_SEARCH_MODEL (subscriber);
|
GcalSearchModel *self = GCAL_SEARCH_MODEL (subscriber);
|
||||||
|
|
||||||
return g_date_time_ref (self->range_start);
|
return gcal_range_new (self->range_start, self->range_end, GCAL_RANGE_DEFAULT);
|
||||||
}
|
|
||||||
|
|
||||||
static GDateTime*
|
|
||||||
gcal_search_model_get_range_end (GcalTimelineSubscriber *subscriber)
|
|
||||||
{
|
|
||||||
GcalSearchModel *self = GCAL_SEARCH_MODEL (subscriber);
|
|
||||||
|
|
||||||
return g_date_time_ref (self->range_end);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -149,8 +141,7 @@ gcal_search_model_remove_event (GcalTimelineSubscriber *subscriber,
|
|||||||
static void
|
static void
|
||||||
gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
|
gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
|
||||||
{
|
{
|
||||||
iface->get_range_start = gcal_search_model_get_range_start;
|
iface->get_range = gcal_search_model_get_range;
|
||||||
iface->get_range_end = gcal_search_model_get_range_end;
|
|
||||||
iface->add_event = gcal_search_model_add_event;
|
iface->add_event = gcal_search_model_add_event;
|
||||||
iface->update_event = gcal_search_model_update_event;
|
iface->update_event = gcal_search_model_update_event;
|
||||||
iface->remove_event = gcal_search_model_remove_event;
|
iface->remove_event = gcal_search_model_remove_event;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* gcal-date-time-utils.c
|
/* gcal-date-time-utils.c
|
||||||
*
|
*
|
||||||
* Copyright 2019 Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
|
* Copyright 2019-2020 Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -148,7 +148,7 @@ gcal_date_time_compare_date (GDateTime *dt1,
|
|||||||
g_date_time_get_month (dt2),
|
g_date_time_get_month (dt2),
|
||||||
g_date_time_get_year (dt2));
|
g_date_time_get_year (dt2));
|
||||||
|
|
||||||
return g_date_days_between (&d1, &d2);
|
return g_date_days_between (&d2, &d1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+16
-20
@@ -1,7 +1,7 @@
|
|||||||
/* gcal-month-view.c
|
/* gcal-month-view.c
|
||||||
*
|
*
|
||||||
* Copyright © 2015 Erick Pérez Castellanos
|
* Copyright © 2015 Erick Pérez Castellanos
|
||||||
* 2017 Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
|
* 2017-2020 Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -1000,15 +1000,15 @@ update_month_cells (GcalMonthView *self)
|
|||||||
selection_end = selection_start;
|
selection_end = selection_start;
|
||||||
|
|
||||||
/* Swap dates if end is before start */
|
/* Swap dates if end is before start */
|
||||||
if (gcal_date_time_compare_date (selection_end, selection_start) < 0)
|
if (gcal_date_time_compare_date (selection_start, selection_end) < 0)
|
||||||
{
|
{
|
||||||
GDateTime *aux = selection_end;
|
GDateTime *aux = selection_end;
|
||||||
selection_end = selection_start;
|
selection_end = selection_start;
|
||||||
selection_start = aux;
|
selection_start = aux;
|
||||||
}
|
}
|
||||||
|
|
||||||
selected = gcal_date_time_compare_date (gcal_month_cell_get_date (cell), selection_start) >= 0 &&
|
selected = gcal_date_time_compare_date (selection_start, gcal_month_cell_get_date (cell)) >= 0 &&
|
||||||
gcal_date_time_compare_date (gcal_month_cell_get_date (cell), selection_end) <= 0;
|
gcal_date_time_compare_date (selection_end, gcal_month_cell_get_date (cell)) <= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
gcal_month_cell_set_selected (cell, selected);
|
gcal_month_cell_set_selected (cell, selected);
|
||||||
@@ -1263,23 +1263,20 @@ gtk_buildable_interface_init (GtkBuildableIface *iface)
|
|||||||
* GcalTimelineSubscriber iface
|
* GcalTimelineSubscriber iface
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static GDateTime*
|
static GcalRange*
|
||||||
gcal_month_view_get_range_start (GcalTimelineSubscriber *subscriber)
|
gcal_month_view_get_range (GcalTimelineSubscriber *subscriber)
|
||||||
{
|
|
||||||
GcalMonthView *self = GCAL_MONTH_VIEW (subscriber);
|
|
||||||
|
|
||||||
return g_date_time_new_local (g_date_time_get_year (self->date),
|
|
||||||
g_date_time_get_month (self->date),
|
|
||||||
1, 0, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static GDateTime*
|
|
||||||
gcal_month_view_get_range_end (GcalTimelineSubscriber *subscriber)
|
|
||||||
{
|
{
|
||||||
g_autoptr (GDateTime) month_start = NULL;
|
g_autoptr (GDateTime) month_start = NULL;
|
||||||
|
g_autoptr (GDateTime) month_end = NULL;
|
||||||
|
GcalMonthView *self;
|
||||||
|
|
||||||
month_start = gcal_month_view_get_range_start (subscriber);
|
self = GCAL_MONTH_VIEW (subscriber);
|
||||||
return g_date_time_add_months (month_start, 1);
|
month_start = g_date_time_new_local (g_date_time_get_year (self->date),
|
||||||
|
g_date_time_get_month (self->date),
|
||||||
|
1, 0, 0, 0);
|
||||||
|
month_end = g_date_time_add_months (month_start, 1);
|
||||||
|
|
||||||
|
return gcal_range_new (month_start, month_end, GCAL_RANGE_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1371,8 +1368,7 @@ gcal_month_view_remove_event (GcalTimelineSubscriber *subscriber,
|
|||||||
static void
|
static void
|
||||||
gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
|
gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
|
||||||
{
|
{
|
||||||
iface->get_range_start = gcal_month_view_get_range_start;
|
iface->get_range = gcal_month_view_get_range;
|
||||||
iface->get_range_end = gcal_month_view_get_range_end;
|
|
||||||
iface->add_event = gcal_month_view_add_event;
|
iface->add_event = gcal_month_view_add_event;
|
||||||
iface->update_event = gcal_month_view_update_event;
|
iface->update_event = gcal_month_view_update_event;
|
||||||
iface->remove_event = gcal_month_view_remove_event;
|
iface->remove_event = gcal_month_view_remove_event;
|
||||||
|
|||||||
@@ -318,20 +318,14 @@ update_hours_sidebar_size (GcalWeekView *self)
|
|||||||
* GcalTimelineSubscriber iface
|
* GcalTimelineSubscriber iface
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static GDateTime*
|
static GcalRange*
|
||||||
gcal_week_view_get_range_start (GcalTimelineSubscriber *subscriber)
|
gcal_week_view_get_range (GcalTimelineSubscriber *subscriber)
|
||||||
{
|
{
|
||||||
GcalWeekView *self = GCAL_WEEK_VIEW (subscriber);
|
GcalWeekView *self = GCAL_WEEK_VIEW (subscriber);
|
||||||
|
|
||||||
return gcal_date_time_get_start_of_week (self->date);
|
return gcal_range_new_take (gcal_date_time_get_start_of_week (self->date),
|
||||||
}
|
gcal_date_time_get_end_of_week (self->date),
|
||||||
|
GCAL_RANGE_DEFAULT);
|
||||||
static GDateTime*
|
|
||||||
gcal_week_view_get_range_end (GcalTimelineSubscriber *subscriber)
|
|
||||||
{
|
|
||||||
GcalWeekView *self = GCAL_WEEK_VIEW (subscriber);
|
|
||||||
|
|
||||||
return gcal_date_time_get_end_of_week (self->date);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -386,8 +380,7 @@ gcal_week_view_remove_event (GcalTimelineSubscriber *subscriber,
|
|||||||
static void
|
static void
|
||||||
gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
|
gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
|
||||||
{
|
{
|
||||||
iface->get_range_start = gcal_week_view_get_range_start;
|
iface->get_range = gcal_week_view_get_range;
|
||||||
iface->get_range_end = gcal_week_view_get_range_end;
|
|
||||||
iface->add_event = gcal_week_view_add_event;
|
iface->add_event = gcal_week_view_add_event;
|
||||||
iface->update_event = gcal_week_view_update_event;
|
iface->update_event = gcal_week_view_update_event;
|
||||||
iface->remove_event = gcal_week_view_remove_event;
|
iface->remove_event = gcal_week_view_remove_event;
|
||||||
|
|||||||
+10
-15
@@ -1569,22 +1569,18 @@ navigator_drag_leave_cb (GcalYearView *self,
|
|||||||
* GcalTimelineSubscriber implementation
|
* GcalTimelineSubscriber implementation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static GDateTime*
|
static GcalRange*
|
||||||
gcal_year_view_get_range_start (GcalTimelineSubscriber *subscriber)
|
gcal_year_view_get_range (GcalTimelineSubscriber *subscriber)
|
||||||
{
|
{
|
||||||
GcalYearView *self = GCAL_YEAR_VIEW (subscriber);
|
g_autoptr (GDateTime) start = NULL;
|
||||||
|
g_autoptr (GDateTime) end = NULL;
|
||||||
|
GcalYearView *self;
|
||||||
|
|
||||||
return g_date_time_new_local (g_date_time_get_year (self->date),
|
self = GCAL_YEAR_VIEW (subscriber);
|
||||||
1, 1, 0, 0, 0);
|
start = g_date_time_new_local (g_date_time_get_year (self->date), 1, 1, 0, 0, 0);
|
||||||
}
|
end = g_date_time_add_years (start, 1);
|
||||||
|
|
||||||
static GDateTime*
|
return gcal_range_new (start, end, GCAL_RANGE_DEFAULT);
|
||||||
gcal_year_view_get_range_end (GcalTimelineSubscriber *subscriber)
|
|
||||||
{
|
|
||||||
GcalYearView *self = GCAL_YEAR_VIEW (subscriber);
|
|
||||||
|
|
||||||
return g_date_time_new_local (g_date_time_get_year (self->date) + 1,
|
|
||||||
1, 1, 0, 0, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1714,8 +1710,7 @@ gcal_year_view_update_event (GcalTimelineSubscriber *subscriber,
|
|||||||
static void
|
static void
|
||||||
gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
|
gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
|
||||||
{
|
{
|
||||||
iface->get_range_start = gcal_year_view_get_range_start;
|
iface->get_range = gcal_year_view_get_range;
|
||||||
iface->get_range_end = gcal_year_view_get_range_end;
|
|
||||||
iface->add_event = gcal_year_view_add_event;
|
iface->add_event = gcal_year_view_add_event;
|
||||||
iface->remove_event = gcal_year_view_remove_event;
|
iface->remove_event = gcal_year_view_remove_event;
|
||||||
iface->update_event = gcal_year_view_update_event;
|
iface->update_event = gcal_year_view_update_event;
|
||||||
|
|||||||
Reference in New Issue
Block a user