diff options
-rw-r--r-- | calendar/ChangeLog | 9 | ||||
-rw-r--r-- | calendar/gui/e-day-view.c | 56 | ||||
-rw-r--r-- | calendar/gui/e-week-view.c | 37 |
3 files changed, 93 insertions, 9 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 1a75c62023..8e5e1c08d8 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,12 @@ +2001-07-01 Rodrigo Moya <rodrigo@ximian.com> + + * gui/e-day-view.c (e_day_view_*_clipboard): fixed clibpoard + command activation from the menu entries. CTRL-C and CTRL-X don't + work though, since it seems the key presses are being captured by + the text item + + gui/e-week-view.c (e_week_view_*_clipboard): ditto + 2001-06-30 Federico Mena Quintero <federico@ximian.com> * gui/e-week-view-event-item.c diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c index 155506f516..b8564647d0 100644 --- a/calendar/gui/e-day-view.c +++ b/calendar/gui/e-day-view.c @@ -2538,25 +2538,69 @@ e_day_view_set_week_start_day (EDayView *day_view, e_day_view_recalc_work_week (day_view); } +static EDayViewEvent * +get_current_event (EDayView *day_view) +{ + g_return_val_if_fail (E_IS_DAY_VIEW (day_view), NULL); + + if (day_view->editing_event_num == -1) + return NULL; + + if (day_view->editing_event_day == E_DAY_VIEW_LONG_EVENT) + return &g_array_index (day_view->long_events, + EDayViewEvent, + day_view->editing_event_num); + else + return &g_array_index (day_view->events[day_view->editing_event_day], + EDayViewEvent, + day_view->editing_event_num); +} + void e_day_view_cut_clipboard (EDayView *day_view) { + EDayViewEvent *event; + char *uid; + g_return_if_fail (E_IS_DAY_VIEW (day_view)); - e_day_view_on_cut (NULL, day_view); + + event = get_current_event (day_view); + if (event == NULL) + return; + + e_day_view_copy_clipboard (day_view); + cal_component_get_uid (event->comp, &uid); + cal_client_remove_object (day_view->client, uid); } void e_day_view_copy_clipboard (EDayView *day_view) { + EDayViewEvent *event; + char *comp_str; + g_return_if_fail (E_IS_DAY_VIEW (day_view)); - e_day_view_on_copy (NULL, day_view); + + event = get_current_event (day_view); + if (event == NULL) + return; + + comp_str = cal_component_get_as_string (event->comp); + if (day_view->clipboard_selection != NULL) + g_free (day_view->clipboard_selection); + day_view->clipboard_selection = comp_str; + gtk_selection_owner_set (day_view->invisible, clipboard_atom, GDK_CURRENT_TIME); } void e_day_view_paste_clipboard (EDayView *day_view) { g_return_if_fail (E_IS_DAY_VIEW (day_view)); - e_day_view_on_paste (NULL, day_view); + + gtk_selection_convert (day_view->invisible, + clipboard_atom, + GDK_SELECTION_TYPE_STRING, + GDK_CURRENT_TIME); } static void @@ -3413,16 +3457,16 @@ e_day_view_on_cut (GtkWidget *widget, gpointer data) { EDayView *day_view; EDayViewEvent *event; - const char *uid; + char *uid; day_view = E_DAY_VIEW (data); - e_day_view_on_copy (widget, data); - event = e_day_view_get_popup_menu_event (day_view); if (event == NULL) return; + e_day_view_on_copy (widget, data); + cal_component_get_uid (event->comp, &uid); cal_client_remove_object (day_view->client, uid); } 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); } |