aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/e-week-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui/e-week-view.c')
-rw-r--r--calendar/gui/e-week-view.c37
1 files changed, 34 insertions, 3 deletions
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
index 7d0f2e1641..c620560227 100644
--- a/calendar/gui/e-week-view.c
+++ b/calendar/gui/e-week-view.c
@@ -1646,22 +1646,53 @@ e_week_view_set_24_hour_format (EWeekView *week_view,
void
e_week_view_cut_clipboard (EWeekView *week_view)
{
+ EWeekViewEvent *event;
+ char *uid;
+
g_return_if_fail (E_IS_WEEK_VIEW (week_view));
- e_week_view_on_cut (NULL, week_view);
+
+ if (week_view->editing_event_num == -1)
+ return;
+
+ event = &g_array_index (week_view->events, EWeekViewEvent,
+ week_view->editing_event_num);
+ if (event == NULL)
+ return;
+
+ e_week_view_copy_clipboard (week_view);
+ cal_component_get_uid (event->comp, &uid);
+ cal_client_remove_object (week_view->client, uid);
}
void
e_week_view_copy_clipboard (EWeekView *week_view)
{
+ EWeekViewEvent *event;
+ char *comp_str;
+
g_return_if_fail (E_IS_WEEK_VIEW (week_view));
- e_week_view_on_copy (NULL, week_view);
+
+ event = &g_array_index (week_view->events, EWeekViewEvent,
+ week_view->editing_event_num);
+ if (event == NULL)
+ return;
+
+ comp_str = cal_component_get_as_string (event->comp);
+ if (week_view->clipboard_selection != NULL)
+ g_free (week_view->clipboard_selection);
+ week_view->clipboard_selection = comp_str;
+ gtk_selection_owner_set (week_view->invisible, clipboard_atom, GDK_CURRENT_TIME);
}
void
e_week_view_paste_clipboard (EWeekView *week_view)
{
g_return_if_fail (E_IS_WEEK_VIEW (week_view));
- e_week_view_on_paste (NULL, week_view);
+
+ gtk_selection_convert (week_view->invisible,
+ clipboard_atom,
+ GDK_SELECTION_TYPE_STRING,
+ GDK_CURRENT_TIME);
}