[california] Update event in Week view when altered or removed: Bug #732671
- From: Jim Nelson <jnelson src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [california] Update event in Week view when altered or removed: Bug #732671
- Date: Wed, 9 Jul 2014 22:36:57 +0000 (UTC)
commit 7784efb202571b785018e5559a377c7bc326c2be
Author: Jim Nelson <jim yorba org>
Date: Wed Jul 9 15:36:37 2014 -0700
Update event in Week view when altered or removed: Bug #732671
src/view/week/week-day-pane.vala | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
---
diff --git a/src/view/week/week-day-pane.vala b/src/view/week/week-day-pane.vala
index f065910..5090355 100644
--- a/src/view/week/week-day-pane.vala
+++ b/src/view/week/week-day-pane.vala
@@ -100,6 +100,10 @@ internal class DayPane : Pane, Common.InstanceContainer {
if (!days_events.add(event))
return;
+ event.notify[Component.Event.PROP_SUMMARY].connect(queue_draw);
+ event.notify[Component.Event.PROP_DATE_SPAN].connect(on_update_date_time);
+ event.notify[Component.Event.PROP_EXACT_TIME_SPAN].connect(on_update_date_time);
+
queue_draw();
}
@@ -107,6 +111,10 @@ internal class DayPane : Pane, Common.InstanceContainer {
if (!days_events.remove(event))
return;
+ event.notify[Component.Event.PROP_SUMMARY].disconnect(queue_draw);
+ event.notify[Component.Event.PROP_DATE_SPAN].disconnect(on_update_date_time);
+ event.notify[Component.Event.PROP_EXACT_TIME_SPAN].disconnect(on_update_date_time);
+
queue_draw();
}
@@ -116,6 +124,18 @@ internal class DayPane : Pane, Common.InstanceContainer {
queue_draw();
}
+ private void on_update_date_time(Object object, ParamSpec param) {
+ Component.Event event = (Component.Event) object;
+
+ // remove entirely if not in this date any more, otherwise remove and re-add to re-sort
+ if (!(date in event.get_event_date_span(Calendar.System.timezone)))
+ remove_event(event);
+ else if (days_events.remove(event))
+ days_events.add(event);
+
+ queue_draw();
+ }
+
public Component.Event? get_event_at(Gdk.Point point) {
Calendar.ExactTime exact_time = new Calendar.ExactTime(Calendar.Timezone.local, date,
get_wall_time(point.y));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]