event-widget: fix compare function
This commit is contained in:
+32
-14
@@ -1182,24 +1182,42 @@ gcal_event_widget_compare_for_single_day (GcalEventWidget *widget1,
|
|||||||
GcalEventWidgetPrivate *priv1;
|
GcalEventWidgetPrivate *priv1;
|
||||||
GcalEventWidgetPrivate *priv2;
|
GcalEventWidgetPrivate *priv2;
|
||||||
|
|
||||||
time_t time_s1, time_s2;
|
|
||||||
time_t time_e1, time_e2;
|
|
||||||
time_t result;
|
|
||||||
|
|
||||||
priv1 = gcal_event_widget_get_instance_private (widget1);
|
priv1 = gcal_event_widget_get_instance_private (widget1);
|
||||||
priv2 = gcal_event_widget_get_instance_private (widget2);
|
priv2 = gcal_event_widget_get_instance_private (widget2);
|
||||||
|
|
||||||
time_e1 = time_s1 = icaltime_as_timet (*(priv1->dt_start));
|
if (gcal_event_widget_is_multiday (widget1) && gcal_event_widget_is_multiday (widget2))
|
||||||
time_e2 = time_s2 = icaltime_as_timet (*(priv2->dt_start));
|
{
|
||||||
|
time_t time_s1, time_s2;
|
||||||
|
time_t time_e1, time_e2;
|
||||||
|
time_t result;
|
||||||
|
|
||||||
if (priv1->dt_end != NULL)
|
time_s1 = icaltime_as_timet (*(priv1->dt_start));
|
||||||
time_e1 = icaltime_as_timet (*(priv1->dt_end));
|
time_s2 = icaltime_as_timet (*(priv2->dt_start));
|
||||||
if (priv2->dt_end)
|
time_e1 = icaltime_as_timet (*(priv1->dt_end));
|
||||||
time_e2 = icaltime_as_timet (*(priv2->dt_end));
|
time_e2 = icaltime_as_timet (*(priv2->dt_end));
|
||||||
|
|
||||||
result = (time_e2 - time_s2) - (time_e1 - time_s1);
|
result = (time_e2 - time_s2) - (time_e1 - time_s1);
|
||||||
if (result != 0)
|
if (result != 0)
|
||||||
return result;
|
return result;
|
||||||
|
else
|
||||||
|
return icaltime_compare (*(priv1->dt_start), *(priv2->dt_start));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
return icaltime_compare (*(priv1->dt_start), *(priv2->dt_start));
|
{
|
||||||
|
if (gcal_event_widget_is_multiday (widget1))
|
||||||
|
return -1;
|
||||||
|
else if (gcal_event_widget_is_multiday (widget2))
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (priv1->all_day && priv2->all_day)
|
||||||
|
return 0;
|
||||||
|
else if (priv1->all_day)
|
||||||
|
return -1;
|
||||||
|
else if (priv2->all_day)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return icaltime_compare (*(priv1->dt_start), *(priv2->dt_start));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user