--- objects.c.orig	Mon Jun  3 18:58:23 2002
+++ objects.c	Wed Dec  4 15:38:46 2002
@@ -1420,13 +1420,23 @@
 }
 
 /* handle tooltips */
+static
+char const * get_tooltip(FL_OBJECT * obj)
+{
+    if (!obj) return 0;
+    if (obj->parent) return obj->parent->tooltip;
+    return obj->tooltip;
+}
+
+
 static void
 tooltip_handler(int ID, void *data)
 {
     FL_OBJECT *obj = data;
+    char const * const tooltip = get_tooltip(obj);
 
-    if (obj->tooltip && *(obj->tooltip))
-	fl_show_tooltip(obj->tooltip, obj->form->x + obj->x,
+    if (tooltip && *(tooltip))
+	fl_show_tooltip(tooltip, obj->form->x + obj->x,
 			obj->form->y + obj->y + obj->h + 1);
     obj->tipID = 0;
 }
@@ -1463,13 +1473,18 @@
     switch (event)
     {
     case FL_ENTER:
-	if (obj->tooltip && *(obj->tooltip) && !obj->form->no_tooltip)
+    {
+	char const * const tooltip = get_tooltip(obj);
+	if (tooltip && *(tooltip) && !obj->form->no_tooltip)
 	    obj->tipID = fl_add_timeout(fl_context->tooltip_time,
 					tooltip_handler, obj);
 	obj->belowmouse = 1;
 	break;
+    }
     case FL_LEAVE:
-	if (obj->tooltip && *(obj->tooltip))
+    {
+	char const * const tooltip = get_tooltip(obj);
+	if (tooltip && *(tooltip))
 	{
 	    fl_hide_tooltip();
 	    if (obj->tipID)
@@ -1478,6 +1493,7 @@
 	}
 	obj->belowmouse = 0;
 	break;
+    }
     case FL_PUSH:
 	if (obj->tooltip && *(obj->tooltip))
 	{
