[california] Reflect display changes to calendars in Week view: Bug #730670
- From: Jim Nelson <jnelson src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [california] Reflect display changes to calendars in Week view: Bug #730670
- Date: Fri, 12 Sep 2014 20:25:04 +0000 (UTC)
commit 7092eaa649ab94105306e192276e61e53123b896
Author: Jim Nelson <jim yorba org>
Date: Fri Sep 12 13:24:42 2014 -0700
Reflect display changes to calendars in Week view: Bug #730670
src/view/common/common-events-cell.vala | 4 ++--
src/view/month/month-grid.vala | 12 ++++++------
src/view/week/week-day-pane.vala | 6 ++++++
src/view/week/week-grid.vala | 14 ++++++++++++++
4 files changed, 28 insertions(+), 8 deletions(-)
---
diff --git a/src/view/common/common-events-cell.vala b/src/view/common/common-events-cell.vala
index 912aa4c..76ddb91 100644
--- a/src/view/common/common-events-cell.vala
+++ b/src/view/common/common-events-cell.vala
@@ -265,12 +265,12 @@ internal abstract class EventsCell : Gtk.EventBox, InstanceContainer {
}
/**
- * To be called by the owning widget when a calendar's visibility has changed.
+ * To be called by the owning widget when a calendar's display (visibility, color) has changed.
*
* This causes event line numbers to be reassigned and thie { link Cell} redrawn, if the
* calendar in question has any events in this date.
*/
- public void notify_calendar_visibility_changed(Backing.CalendarSource calendar_source) {
+ public void notify_calendar_display_changed(Backing.CalendarSource calendar_source) {
if (!traverse<Component.Event>(days_events).any((event) => event.calendar_source == calendar_source))
return;
diff --git a/src/view/month/month-grid.vala b/src/view/month/month-grid.vala
index 8a9cc8e..f124f94 100644
--- a/src/view/month/month-grid.vala
+++ b/src/view/month/month-grid.vala
@@ -201,20 +201,20 @@ private class Grid : Gtk.Grid {
}
private void on_calendar_added(Backing.CalendarSource calendar) {
- calendar.notify[Backing.Source.PROP_VISIBLE].connect(on_calendar_visibility_changed);
- calendar.notify[Backing.Source.PROP_COLOR].connect(queue_draw);
+ calendar.notify[Backing.Source.PROP_VISIBLE].connect(on_calendar_display_changed);
+ calendar.notify[Backing.Source.PROP_COLOR].connect(on_calendar_display_changed);
}
private void on_calendar_removed(Backing.CalendarSource calendar) {
- calendar.notify[Backing.Source.PROP_VISIBLE].disconnect(on_calendar_visibility_changed);
- calendar.notify[Backing.Source.PROP_COLOR].disconnect(queue_draw);
+ calendar.notify[Backing.Source.PROP_VISIBLE].disconnect(on_calendar_display_changed);
+ calendar.notify[Backing.Source.PROP_COLOR].disconnect(on_calendar_display_changed);
}
- private void on_calendar_visibility_changed(Object o, ParamSpec pspec) {
+ private void on_calendar_display_changed(Object o, ParamSpec pspec) {
Backing.CalendarSource calendar = (Backing.CalendarSource) o;
foreach_cell((cell) => {
- cell.notify_calendar_visibility_changed(calendar);
+ cell.notify_calendar_display_changed(calendar);
return true;
});
diff --git a/src/view/week/week-day-pane.vala b/src/view/week/week-day-pane.vala
index 02c33c9..40e563a 100644
--- a/src/view/week/week-day-pane.vala
+++ b/src/view/week/week-day-pane.vala
@@ -208,6 +208,11 @@ internal class DayPane : Pane, Common.InstanceContainer {
queue_draw();
}
+ public void notify_calendar_display_changed(Backing.CalendarSource calendar_source) {
+ if (traverse<Component.Event>(days_events).any(event => event.calendar_source == calendar_source))
+ queue_draw();
+ }
+
public override bool query_tooltip(int x, int y, bool keyboard_mode, Gtk.Tooltip tooltip) {
// convery y into a time of day
Calendar.WallTime wall_time = get_wall_time(y);
@@ -261,6 +266,7 @@ internal class DayPane : Pane, Common.InstanceContainer {
// https://bugzilla.gnome.org/show_bug.cgi?id=736444
Gee.TreeSet<Component.Event> sorted_events = traverse<Component.Event>(days_events)
.filter(filter_date_spanning_events)
+ .filter(event => event.calendar_source != null && event.calendar_source.visible)
.to_tree_set();
foreach (Component.Event event in sorted_events) {
Calendar.WallTime start_time =
diff --git a/src/view/week/week-grid.vala b/src/view/week/week-grid.vala
index c2141f4..e79af4e 100644
--- a/src/view/week/week-grid.vala
+++ b/src/view/week/week-grid.vala
@@ -273,9 +273,23 @@ internal class Grid : Gtk.Box {
}
private void on_calendar_added(Backing.CalendarSource calendar) {
+ calendar.notify[Backing.Source.PROP_VISIBLE].connect(on_calendar_display_changed);
+ calendar.notify[Backing.Source.PROP_COLOR].connect(on_calendar_display_changed);
}
private void on_calendar_removed(Backing.CalendarSource calendar) {
+ calendar.notify[Backing.Source.PROP_VISIBLE].disconnect(on_calendar_display_changed);
+ calendar.notify[Backing.Source.PROP_COLOR].disconnect(on_calendar_display_changed);
+ }
+
+ private void on_calendar_display_changed(Object o, ParamSpec pspec) {
+ Backing.CalendarSource calendar_source = (Backing.CalendarSource) o;
+
+ foreach (AllDayCell cell in date_to_all_day.values)
+ cell.notify_calendar_display_changed(calendar_source);
+
+ foreach (DayPane pane in date_to_panes.values)
+ pane.notify_calendar_display_changed(calendar_source);
}
private void on_calendar_instance_added_or_altered(Component.Instance instance) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]