aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui
diff options
context:
space:
mode:
authorRodrigo Moya <rodrigo@ximian.com>2001-07-01 08:21:39 +0800
committerRodrigo Moya <rodrigo@src.gnome.org>2001-07-01 08:21:39 +0800
commit0318bd9626855693602a5fe47b037dff86fda962 (patch)
treedd32ef5a76904485fc0ffd48b47419a65e69ad89 /calendar/gui
parent1e53a6e3d58c50e1f28c8cc289f7d6da8e9d76aa (diff)
downloadgsoc2013-evolution-0318bd9626855693602a5fe47b037dff86fda962.tar.gz
gsoc2013-evolution-0318bd9626855693602a5fe47b037dff86fda962.tar.zst
gsoc2013-evolution-0318bd9626855693602a5fe47b037dff86fda962.zip
fixed clibpoard command activation from the menu entries. CTRL-C and
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 svn path=/trunk/; revision=10641
Diffstat (limited to 'calendar/gui')
-rw-r--r--calendar/gui/e-day-view.c56
-rw-r--r--calendar/gui/e-week-view.c37
2 files changed, 84 insertions, 9 deletions
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);
}