Blob Blame History Raw
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 );
+}