aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/e-week-view.c
diff options
context:
space:
mode:
authorSrinivasa Ragavan <sragavan@novell.com>2005-11-23 16:19:00 +0800
committerSrinivasa Ragavan <sragavan@src.gnome.org>2005-11-23 16:19:00 +0800
commita722e3281e5404a902eefe0f20005f59b5b2d813 (patch)
treec589fa71f218ee0c0e17f86bf066f2866ca1ee41 /calendar/gui/e-week-view.c
parent80f4fd336fed8066ba8db8dd398c5023b0ff4ff7 (diff)
downloadgsoc2013-evolution-a722e3281e5404a902eefe0f20005f59b5b2d813.tar
gsoc2013-evolution-a722e3281e5404a902eefe0f20005f59b5b2d813.tar.gz
gsoc2013-evolution-a722e3281e5404a902eefe0f20005f59b5b2d813.tar.bz2
gsoc2013-evolution-a722e3281e5404a902eefe0f20005f59b5b2d813.tar.lz
gsoc2013-evolution-a722e3281e5404a902eefe0f20005f59b5b2d813.tar.xz
gsoc2013-evolution-a722e3281e5404a902eefe0f20005f59b5b2d813.tar.zst
gsoc2013-evolution-a722e3281e5404a902eefe0f20005f59b5b2d813.zip
Added a function to get tooltip tooltip widget
2005-11-23 Srinivasa Ragavan <sragavan@novell.com> * gui/e-calendar-view.c (tooltip_grab), (get_label), (e_calendar_view_get_tooltips): Added a function to get tooltip tooltip widget * gui/e-calendar-view.h: * gui/e-day-view.c (e_day_view_add_event), (e_day_view_reshape_long_event), (e_day_view_reshape_day_event), (e_day_view_on_text_item_event): Added tooltip for day/work week view. * gui/e-week-view.c (e_week_view_add_event), (tooltip_event_cb), (e_week_view_reshape_event_span), (e_week_view_on_text_item_event): Added tooltip for week/month view. * gui/e-week-view.h: * gui/misc.c (get_position_in_array), (calculate_time): Added a function for converting time to string. * gui/misc.h: svn path=/trunk/; revision=30648
Diffstat (limited to 'calendar/gui/e-week-view.c')
-rw-r--r--calendar/gui/e-week-view.c90
1 files changed, 86 insertions, 4 deletions
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
index a3cd52bba3..d6a0aba123 100644
--- a/calendar/gui/e-week-view.c
+++ b/calendar/gui/e-week-view.c
@@ -2391,6 +2391,9 @@ e_week_view_add_event (ECalComponent *comp,
}
event.start = start;
event.end = end;
+ event.tooltip = NULL;
+ event.timeout = -1;
+ event.color = NULL;
event.spans_index = 0;
event.num_spans = 0;
event.comp_data->instance_start = start;
@@ -2547,6 +2550,50 @@ e_week_view_reshape_events (EWeekView *week_view)
}
+static gboolean
+tooltip_event_cb (GnomeCanvasItem *item,
+ GdkEvent *event,
+ EWeekView *view)
+{
+ EWeekViewEvent *pevent = g_object_get_data ((GObject *)item, "event");
+
+ switch (event->type) {
+ case GDK_ENTER_NOTIFY:
+
+ pevent->x = ((GdkEventCrossing *)event)->x_root;
+ pevent->y = ((GdkEventCrossing *)event)->y_root;
+ pevent->tooltip = NULL;
+ pevent->timeout = g_timeout_add (500, (GSourceFunc)e_calendar_view_get_tooltips, pevent);
+
+ return TRUE;
+
+ case GDK_LEAVE_NOTIFY:
+ if (pevent && pevent->tooltip) {
+ gtk_widget_destroy (pevent->tooltip);
+ pevent->tooltip = NULL;
+ }
+
+ if (pevent && pevent->timeout != -1) {
+ g_source_remove (pevent->timeout);
+ pevent->timeout = -1;
+ }
+ return TRUE;
+ case GDK_MOTION_NOTIFY:
+ pevent->x = ((GdkEventMotion *)event)->x_root;
+ pevent->y = ((GdkEventMotion *)event)->y_root;
+
+ if (pevent->tooltip) {
+ gtk_window_move ((GtkWindow *)pevent->tooltip, ((int)((GdkEventMotion *)event)->x_root)+16, ((int)((GdkEventMotion *)event)->y_root) +16);
+ }
+
+ return TRUE;
+ default:
+ return FALSE;
+ }
+
+ return FALSE;
+}
+
static void
e_week_view_reshape_event_span (EWeekView *week_view,
gint event_num,
@@ -2640,7 +2687,12 @@ e_week_view_reshape_event_span (EWeekView *week_view,
e_week_view_event_item_get_type (),
NULL);
}
-
+
+ g_object_set_data ((GObject *)span->background_item, "event", event);
+ g_signal_connect (span->background_item, "event",
+ G_CALLBACK (tooltip_event_cb),
+ week_view);
+
gnome_canvas_item_set (span->background_item,
"event_num", event_num,
"span_num", span_num,
@@ -2671,7 +2723,7 @@ e_week_view_reshape_event_span (EWeekView *week_view,
&& e_cal_util_component_has_attendee (event->comp_data->icalcomp)) {
set_text_as_bold (event, span);
} */
-
+ g_object_set_data ((GObject *)span->text_item, "event", event);
g_signal_connect (span->text_item, "event",
G_CALLBACK (e_week_view_on_text_item_event),
week_view);
@@ -2940,11 +2992,12 @@ e_week_view_on_text_item_event (GnomeCanvasItem *item,
{
EWeekViewEvent *event;
gint event_num, span_num;
-
+ EWeekViewEvent *pevent = g_object_get_data ((GObject *)item, "event");
+
#if 0
g_print ("In e_week_view_on_text_item_event\n");
#endif
-
+
switch (gdkevent->type) {
case GDK_KEY_PRESS:
if (gdkevent && gdkevent->key.keyval == GDK_Return) {
@@ -3055,6 +3108,35 @@ e_week_view_on_text_item_event (GnomeCanvasItem *item,
}
week_view->pressed_event_num = -1;
break;
+ case GDK_ENTER_NOTIFY:
+
+ pevent->x = ((GdkEventCrossing *)gdkevent)->x_root;
+ pevent->y = ((GdkEventCrossing *)gdkevent)->y_root;
+ pevent->tooltip = NULL;
+ pevent->timeout = g_timeout_add (500, (GSourceFunc)e_calendar_view_get_tooltips, pevent);
+
+ return TRUE;
+
+ case GDK_LEAVE_NOTIFY:
+ if (pevent && pevent->tooltip) {
+ gtk_widget_destroy (pevent->tooltip);
+ pevent->tooltip = NULL;
+ }
+
+ if (pevent && pevent->timeout != -1) {
+ g_source_remove (pevent->timeout);
+ pevent->timeout = -1;
+ }
+ return TRUE;
+ case GDK_MOTION_NOTIFY:
+ pevent->x = ((GdkEventMotion *)gdkevent)->x_root;
+ pevent->y = ((GdkEventMotion *)gdkevent)->y_root;
+
+ if (pevent->tooltip) {
+ gtk_window_move ((GtkWindow *)pevent->tooltip, ((int)((GdkEventMotion *)gdkevent)->x_root)+16, ((int)((GdkEventMotion *)gdkevent)->y_root) +16);
+ }
+
+ return TRUE;
case GDK_FOCUS_CHANGE:
if (gdkevent->focus_change.in) {
e_week_view_on_editing_started (week_view, item);