diff --git a/calendar/gui/e-cal-ops.c b/calendar/gui/e-cal-ops.c index 8d497dd40d..b66acf2476 100644 --- a/calendar/gui/e-cal-ops.c +++ b/calendar/gui/e-cal-ops.c @@ -1504,7 +1504,7 @@ new_component_data_free (gpointer ptr) } comp_editor = e_comp_editor_open_for_component (NULL, ncd->shell, - ncd->is_new_component ? NULL : e_client_get_source (E_CLIENT (ncd->client)), + ncd->client ? e_client_get_source (E_CLIENT (ncd->client)) : NULL, e_cal_component_get_icalcomponent (ncd->comp), flags); if (comp_editor) { @@ -1813,7 +1813,7 @@ e_cal_ops_new_component_editor_from_model (ECalModel *model, if (!for_client_uid) for_client_uid = e_cal_model_get_default_source_uid (model); - if (for_client_uid && !for_client_uid) + if (for_client_uid && !*for_client_uid) for_client_uid = NULL; e_cal_ops_new_component_ex (NULL, model, source_type, for_client_uid, is_assigned, all_day, dtstart, dtend, diff --git a/modules/calendar/e-memo-shell-backend.c b/modules/calendar/e-memo-shell-backend.c index 0a4d75206c..cea61fb47b 100644 --- a/modules/calendar/e-memo-shell-backend.c +++ b/modules/calendar/e-memo-shell-backend.c @@ -27,6 +27,7 @@ #include #include "e-cal-base-shell-backend.h" +#include "e-cal-base-shell-sidebar.h" #include "e-memo-shell-view.h" #include "e-memo-shell-backend.h" @@ -44,9 +45,24 @@ static void action_memo_new_cb (GtkAction *action, EShellWindow *shell_window) { + EShellView *shell_view; + ESource *selected_source = NULL; + + shell_view = e_shell_window_peek_shell_view (shell_window, "memos"); + if (shell_view != NULL) { + EShellSidebar *shell_sidebar; + ESourceSelector *selector; + + shell_sidebar = e_shell_view_get_shell_sidebar (shell_view); + selector = e_cal_base_shell_sidebar_get_selector (E_CAL_BASE_SHELL_SIDEBAR (shell_sidebar)); + selected_source = e_source_selector_ref_primary_selection (selector); + } + e_cal_ops_new_component_editor (shell_window, - E_CAL_CLIENT_SOURCE_TYPE_MEMOS, NULL, + E_CAL_CLIENT_SOURCE_TYPE_MEMOS, selected_source ? e_source_get_uid (selected_source) : NULL, g_strcmp0 (gtk_action_get_name (action), "memo-shared-new") == 0); + + g_clear_object (&selected_source); } static void diff --git a/modules/calendar/e-task-shell-backend.c b/modules/calendar/e-task-shell-backend.c index 068f9f3e99..43ccaecbe6 100644 --- a/modules/calendar/e-task-shell-backend.c +++ b/modules/calendar/e-task-shell-backend.c @@ -25,6 +25,7 @@ #include #include +#include "e-cal-base-shell-sidebar.h" #include "e-task-shell-view.h" #include "e-task-shell-backend.h" @@ -42,9 +43,24 @@ static void action_task_new_cb (GtkAction *action, EShellWindow *shell_window) { + EShellView *shell_view; + ESource *selected_source = NULL; + + shell_view = e_shell_window_peek_shell_view (shell_window, "tasks"); + if (shell_view != NULL) { + EShellSidebar *shell_sidebar; + ESourceSelector *selector; + + shell_sidebar = e_shell_view_get_shell_sidebar (shell_view); + selector = e_cal_base_shell_sidebar_get_selector (E_CAL_BASE_SHELL_SIDEBAR (shell_sidebar)); + selected_source = e_source_selector_ref_primary_selection (selector); + } + e_cal_ops_new_component_editor (shell_window, - E_CAL_CLIENT_SOURCE_TYPE_TASKS, NULL, + E_CAL_CLIENT_SOURCE_TYPE_TASKS, selected_source ? e_source_get_uid (selected_source) : NULL, g_strcmp0 (gtk_action_get_name (action), "task-assigned-new") == 0); + + g_clear_object (&selected_source); } static void