diff -ru planner-0.14.5.orig/src/planner-gantt-chart.c planner-0.14.5/src/planner-gantt-chart.c --- planner-0.14.5.orig/src/planner-gantt-chart.c 2009-12-14 10:29:48.000000000 +0000 +++ planner-0.14.5/src/planner-gantt-chart.c 2009-12-14 12:38:26.000000000 +0000 @@ -366,6 +366,7 @@ 0); /* padding */ priv->canvas = GNOME_CANVAS (gnome_canvas_new ()); + planner_gantt_chart_init_tooltips(priv->canvas); priv->canvas->close_enough = 5; gnome_canvas_set_center_scroll_region (priv->canvas, FALSE); diff -ru planner-0.14.5.orig/src/planner-gantt-chart.h planner-0.14.5/src/planner-gantt-chart.h --- planner-0.14.5.orig/src/planner-gantt-chart.h 2009-12-14 10:29:48.000000000 +0000 +++ planner-0.14.5/src/planner-gantt-chart.h 2009-12-14 12:38:26.000000000 +0000 @@ -102,5 +102,7 @@ gboolean planner_gantt_chart_get_nonstandard_days (PlannerGanttChart *chart); +void +planner_gantt_chart_init_tooltips (GnomeCanvas *canvas); #endif /* __PLANNER_GANTT_CHART_H__ */ diff -ru planner-0.14.5.orig/src/planner-gantt-row.c planner-0.14.5/src/planner-gantt-row.c --- planner-0.14.5.orig/src/planner-gantt-row.c 2009-12-14 10:29:48.000000000 +0000 +++ planner-0.14.5/src/planner-gantt-row.c 2009-12-14 12:42:52.000000000 +0000 @@ -3518,3 +3518,50 @@ return list; } + +static gboolean +query_tooltip_canvas_cb(GtkWidget *widget, + int x, + int y, + gboolean keybord_tip, + GtkTooltip *tooltip, + gpointer data) +{ + GnomeCanvasItem *mouse_over_item; + PlannerGanttRow *row; + PlannerGanttRowPriv *priv; + int scrollx, scrolly; + double wx, wy; + + if (keybord_tip) + return FALSE; + + gnome_canvas_get_scroll_offsets (GNOME_CANVAS(widget), &scrollx, &scrolly); + gnome_canvas_window_to_world (GNOME_CANVAS(widget), x+scrollx, y+scrolly, &wx, &wy); + + mouse_over_item = gnome_canvas_get_item_at (GNOME_CANVAS(widget), wx, wy); + if (!mouse_over_item) + return FALSE; + + if (!PLANNER_IS_GANTT_ROW (mouse_over_item)) + return FALSE; + + row = PLANNER_GANTT_ROW (mouse_over_item); + priv = row->priv; + + if (!priv->task) + return FALSE; + + gtk_tooltip_set_text(tooltip, mrp_task_get_name(priv->task)); + + return TRUE; +} + +void +planner_gantt_chart_init_tooltips(GnomeCanvas *canvas) +{ + g_object_set (canvas, "has-tooltip", TRUE, NULL); + g_signal_connect (canvas, "query-tooltip", + G_CALLBACK (query_tooltip_canvas_cb), + NULL ); +} diff -ru planner-0.14.5.orig/src/planner-usage-chart.c planner-0.14.5/src/planner-usage-chart.c --- planner-0.14.5.orig/src/planner-usage-chart.c 2009-12-14 10:29:48.000000000 +0000 +++ planner-0.14.5/src/planner-usage-chart.c 2009-12-14 12:38:26.000000000 +0000 @@ -341,6 +341,7 @@ 0); priv->canvas = GNOME_CANVAS (gnome_canvas_new ()); + planner_usage_chart_init_tooltips(priv->canvas); priv->canvas->close_enough = 5; gnome_canvas_set_center_scroll_region (priv->canvas, FALSE); diff -ru planner-0.14.5.orig/src/planner-usage-chart.h planner-0.14.5/src/planner-usage-chart.h --- planner-0.14.5.orig/src/planner-usage-chart.h 2009-12-14 10:29:48.000000000 +0000 +++ planner-0.14.5/src/planner-usage-chart.h 2009-12-14 12:38:26.000000000 +0000 @@ -79,4 +79,7 @@ void planner_usage_chart_setup_root_task (PlannerUsageChart *chart); +void +planner_usage_chart_init_tooltips (GnomeCanvas *canvas); + #endif /* __PLANNER_USAGE_CHART_H__ */ diff -ru planner-0.14.5.orig/src/planner-usage-row.c planner-0.14.5/src/planner-usage-row.c --- planner-0.14.5.orig/src/planner-usage-row.c 2009-12-14 10:29:48.000000000 +0000 +++ planner-0.14.5/src/planner-usage-row.c 2009-12-14 12:42:48.000000000 +0000 @@ -1632,3 +1632,50 @@ return FALSE; } + +static gboolean +query_tooltip_canvas_cb(GtkWidget *widget, + int x, + int y, + gboolean keybord_tip, + GtkTooltip *tooltip, + gpointer data) +{ + GnomeCanvasItem *mouse_over_item; + PlannerUsageRow *row; + PlannerUsageRowPriv *priv; + int scrollx, scrolly; + double wx, wy; + + if (keybord_tip) + return FALSE; + + gnome_canvas_get_scroll_offsets (GNOME_CANVAS(widget), &scrollx, &scrolly); + gnome_canvas_window_to_world (GNOME_CANVAS(widget), x+scrollx, y+scrolly, &wx, &wy); + + mouse_over_item = gnome_canvas_get_item_at (GNOME_CANVAS(widget), wx, wy); + if (!mouse_over_item) + return FALSE; + + if (!PLANNER_IS_USAGE_ROW (mouse_over_item)) + return FALSE; + + row = PLANNER_USAGE_ROW (mouse_over_item); + priv = row->priv; + + if (!priv->resource) + return FALSE; + + gtk_tooltip_set_text(tooltip, mrp_resource_get_name(priv->resource)); + + return TRUE; +} + +void +planner_usage_chart_init_tooltips(GnomeCanvas *canvas) +{ + g_object_set (canvas, "has-tooltip", TRUE, NULL); + g_signal_connect (canvas, "query-tooltip", + G_CALLBACK (query_tooltip_canvas_cb), + NULL ); +}