From 5999e07ac4d7ce14c62173ea6e80efe3a08426cb Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 28 Sep 2009 16:59:35 -0400 Subject: Bug 594534 - Can't select calendar for a new appointment --- modules/calendar/e-cal-shell-view-private.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'modules/calendar/e-cal-shell-view-private.c') diff --git a/modules/calendar/e-cal-shell-view-private.c b/modules/calendar/e-cal-shell-view-private.c index 98aacb9db7..89d8ef5ba9 100644 --- a/modules/calendar/e-cal-shell-view-private.c +++ b/modules/calendar/e-cal-shell-view-private.c @@ -244,6 +244,25 @@ cal_shell_view_selector_popup_event_cb (EShellView *shell_view, return TRUE; } +static void +cal_shell_view_selector_primary_changed_cb (ECalShellView *cal_shell_view, + ESourceSelector *selector) +{ + ECalShellContent *cal_shell_content; + GnomeCalendar *calendar; + ESource *source; + + /* XXX ESourceSelector -really- needs a "primary-selection" + * ESource property. Then we could just use EBindings. */ + + cal_shell_content = cal_shell_view->priv->cal_shell_content; + calendar = e_cal_shell_content_get_calendar (cal_shell_content); + source = e_source_selector_peek_primary_selection (selector); + + if (source != NULL) + gnome_calendar_set_default_source (calendar, source); +} + static void cal_shell_view_selector_client_added_cb (ECalShellView *cal_shell_view, ECal *client) @@ -488,6 +507,11 @@ e_cal_shell_view_private_constructed (ECalShellView *cal_shell_view) G_CALLBACK (cal_shell_view_selector_popup_event_cb), cal_shell_view); + g_signal_connect_swapped ( + selector, "primary-selection-changed", + G_CALLBACK (cal_shell_view_selector_primary_changed_cb), + cal_shell_view); + g_signal_connect_swapped ( cal_shell_sidebar, "client-added", G_CALLBACK (cal_shell_view_selector_client_added_cb), @@ -541,6 +565,9 @@ e_cal_shell_view_private_constructed (ECalShellView *cal_shell_view) e_mutual_binding_new ( calendar, "view", ACTION (CALENDAR_VIEW_DAY), "current-value"); + + /* Force the main calendar to update its default source. */ + g_signal_emit_by_name (selector, "primary-selection-changed"); } void -- cgit v1.2.3