? patch
Index: gnome-panel/foobar-widget.c
===================================================================
RCS file: /cvs/gnome/gnome-panel/gnome-panel/foobar-widget.c,v
retrieving revision 1.176
diff -p -u -r1.176 foobar-widget.c
--- gnome-panel/foobar-widget.c	10 Oct 2002 18:23:52 -0000	1.176
+++ gnome-panel/foobar-widget.c	17 Oct 2002 03:26:12 -0000
@@ -16,6 +16,7 @@
 
 #include <libgnome/libgnome.h>
 #include <gdk/gdkkeysyms.h>
+#include <libgnomeui/gnome-stock-icons.h>
 
 /* Yes, yes I know, now bugger off ... */
 #define WNCK_I_KNOW_THIS_IS_UNSTABLE
@@ -163,7 +164,7 @@ foobar_enter_notify (GtkWidget *widget,
 }
 
 static void
-append_actions_menu (FoobarWidget *foo,
+append_desktop_menu (FoobarWidget *foo,
 		     GtkWidget    *menu_bar)
 {
 	GtkWidget *menu, *item;
@@ -249,13 +250,62 @@ append_actions_menu (FoobarWidget *foo,
 
 	/* FIXME: shutdown or reboot */
 
-	item = gtk_menu_item_new_with_label (_("Actions"));
+	item = gtk_menu_item_new_with_label (_("Desktop"));
 	gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
 	gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), item);
 
 	panel_stretch_events_to_toplevel (item, PANEL_STRETCH_TOP);
 }
 
+static void
+append_help_menu (FoobarWidget *foo,
+		     GtkWidget    *menu_bar)
+{
+	GtkWidget *menu, *item;
+
+	menu = panel_menu_new ();
+
+	if (panel_is_program_in_path  ("yelp")) {
+		item = stock_menu_item_new (
+				_("Contents"),
+				GTK_STOCK_HELP,
+				FALSE);
+
+		gtk_tooltips_set_tip (panel_tooltips, item,
+				      _("Get help with GNOME"),
+				      NULL);
+
+		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+		
+		g_signal_connect (item, "activate",
+				  G_CALLBACK (panel_action_help), NULL);
+	}
+
+
+
+	if (panel_is_program_in_path ("gnome-about")) {
+		item = stock_menu_item_new (_("About GNOME"),
+					    GNOME_STOCK_ABOUT,
+					    FALSE);
+		gtk_tooltips_set_tip (panel_tooltips, item,
+			      	      _("Gnome was brought to you by..."),
+			              NULL);
+		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+      
+		
+		g_signal_connect (item, "activate",
+			  	  G_CALLBACK (panel_action_about), NULL);	 
+	}
+
+	
+	item = gtk_menu_item_new_with_label (_("Help"));
+	gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
+	gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), item);
+
+	panel_stretch_events_to_toplevel (item, PANEL_STRETCH_TOP);
+}
+
+
 void
 foobar_widget_update_winhints (FoobarWidget *foo)
 {
@@ -750,7 +800,8 @@ foobar_widget_instance_init (FoobarWidge
 	panel_stretch_events_to_toplevel (
 		menuitem, PANEL_STRETCH_TOP | PANEL_STRETCH_LEFT);
 
-	append_actions_menu (foo, menu_bar);
+	append_desktop_menu (foo, menu_bar);
+	append_help_menu(foo, menu_bar);
 
 	gtk_box_pack_start (GTK_BOX (foo->hbox), menu_bar, FALSE, FALSE, 0);
 	
Index: gnome-panel/menu.c
===================================================================
RCS file: /cvs/gnome/gnome-panel/gnome-panel/menu.c,v
retrieving revision 1.620
diff -p -u -r1.620 menu.c
--- gnome-panel/menu.c	10 Oct 2002 18:23:52 -0000	1.620
+++ gnome-panel/menu.c	17 Oct 2002 03:26:34 -0000
@@ -318,20 +318,6 @@ about_cb (GtkWidget *menuitem, gpointer 
 }
 
 static void
-about_gnome_cb (GtkWidget *menuitem,
-		char      *program_path)
-{
-	GdkScreen *screen = menuitem_to_screen (menuitem);
-
-	if (egg_screen_execute_async (screen, g_get_home_dir (), 1, &program_path) < 0)
-		panel_error_dialog (screen,
-				    "cannot_exec_about_gnome",
-				    _("<b>Can't execute 'About GNOME'</b>\n\n"
-				    "Details: %s probably does not exist"),
-				    program_path);
-}
-
-static void
 activate_app_def (GtkWidget  *menuitem,
 		  const char *item_loc)
 {
@@ -3526,8 +3512,6 @@ create_panel_submenu (GtkWidget *menu,
 		      gboolean   is_basep)
 {
 	GtkWidget *menuitem;
-	char *char_tmp;
-
 	if (!menu)
 		menu = menu_new();
 
@@ -3541,22 +3525,6 @@ create_panel_submenu (GtkWidget *menu,
 	g_signal_connect (menuitem, "activate",
 			  G_CALLBACK (about_cb), NULL);
 	
-	char_tmp = g_find_program_in_path ("gnome-about");
-	if(!char_tmp)
-		char_tmp = g_find_program_in_path ("guname");
-
-	if (char_tmp) {
-		menuitem = gtk_image_menu_item_new ();
-		setup_menuitem (menuitem,
-				gtk_image_new_from_stock (GNOME_STOCK_ABOUT, panel_menu_icon_get_size ()),
-				_("About _GNOME"));
-		gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
-		g_signal_connect_data (G_OBJECT (menuitem), "activate",
-				       G_CALLBACK (about_gnome_cb),
-				       char_tmp,
-				       (GClosureNotify)g_free,
-				       G_CONNECT_AFTER);
-	}
 	return menu;
 }
 
Index: gnome-panel/panel-action-button.c
===================================================================
RCS file: /cvs/gnome/gnome-panel/gnome-panel/panel-action-button.c,v
retrieving revision 1.2
diff -p -u -r1.2 panel-action-button.c
--- gnome-panel/panel-action-button.c	28 Sep 2002 00:35:52 -0000	1.2
+++ gnome-panel/panel-action-button.c	17 Oct 2002 03:26:38 -0000
@@ -171,6 +171,38 @@ panel_action_screenshot (GtkWidget *widg
 				    _("Cannot execute gnome-panel-screenshot"));
 }
 
+/* Launch Help Browser
+ */
+void
+panel_action_help (GtkWidget *widget)
+{
+	GdkScreen *screen;
+	char      *argv [2] = {"yelp", NULL};
+
+	screen = gtk_widget_get_screen (widget);
+
+	if (egg_screen_execute_async (screen, g_get_home_dir (), 1, argv) < 0)
+		panel_error_dialog (screen,
+				    "cannot_exec_yelp",
+				    _("Cannot execute yelp"));
+}
+
+/* Gnome About
+ */
+void
+panel_action_about (GtkWidget *widget)
+{
+	GdkScreen *screen;
+	char      *argv [2] = {"gnome-about", NULL};
+
+	screen = gtk_widget_get_screen (widget);
+
+	if (egg_screen_execute_async (screen, g_get_home_dir (), 1, argv) < 0)
+		panel_error_dialog (screen,
+				    "cannot_exec_gnome-about",
+				    _("Cannot execute gnome-about"));
+}
+
 typedef struct {
 	PanelActionButtonType   type;
 	char                   *stock_icon;
Index: gnome-panel/panel-action-button.h
===================================================================
RCS file: /cvs/gnome/gnome-panel/gnome-panel/panel-action-button.h,v
retrieving revision 1.1
diff -p -u -r1.1 panel-action-button.h
--- gnome-panel/panel-action-button.h	24 Sep 2002 08:59:00 -0000	1.1
+++ gnome-panel/panel-action-button.h	17 Oct 2002 03:26:40 -0000
@@ -97,6 +97,8 @@ void       panel_action_logout      (Gtk
 void       panel_action_run_program (GtkWidget *widget);
 void       panel_action_search      (GtkWidget *widget);
 void       panel_action_screenshot  (GtkWidget *widget);
+void       panel_action_help        (GtkWidget *widget);
+void       panel_action_about	    (GtkWidget *widget);
 
 G_END_DECLS
 
