=== modified file 'libindicator/Makefile.am'
--- libindicator/Makefile.am	2010-04-09 17:51:25 +0000
+++ libindicator/Makefile.am	2010-09-17 21:19:22 +0000
@@ -42,6 +42,11 @@
 libindicator_la_LIBADD = \
 	$(LIBINDICATOR_LIBS)
 
+libindicator_la_LDFLAGS = \
+	-version-info 1:0:0 \
+	-no-undefined \
+	-export-symbols-regex "^[^_].*"
+
 pkgconfig_DATA = indicator.pc
 pkgconfigdir = $(libdir)/pkgconfig
 

=== modified file 'libindicator/indicator-object.c'
--- libindicator/indicator-object.c	2010-09-14 14:55:16 +0000
+++ libindicator/indicator-object.c	2010-09-17 21:19:22 +0000
@@ -432,3 +432,28 @@
 
 	return 0;
 }
+
+/**
+	indicator_object_entry_activate:
+	@io: #IndicatorObject to query
+	@entry: The #IndicatorObjectEntry whose entry was shown
+	@timestamp: The X11 timestamp of the event
+
+	Used to signal to the indicator that the menu on an entry has
+	been clicked on.  This can either be an activate or a showing
+	of the menu.  Note, this does not actually show the menu that's
+	left up to the reader.
+*/
+void
+indicator_object_entry_activate (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp)
+{
+	g_return_if_fail(INDICATOR_IS_OBJECT(io));
+	IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io);
+
+	if (class->entry_activate != NULL) {
+		return class->entry_activate(io, entry, timestamp);
+	}
+
+	return;
+}
+

=== modified file 'libindicator/indicator-object.h'
--- libindicator/indicator-object.h	2010-09-14 14:51:06 +0000
+++ libindicator/indicator-object.h	2010-09-17 21:19:22 +0000
@@ -94,6 +94,8 @@
 	GList *    (*get_entries) (IndicatorObject * io);
 	guint      (*get_location) (IndicatorObject * io, IndicatorObjectEntry * entry);
 
+	void       (*entry_activate) (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp);
+
 	/* Signals */
 	void       (*entry_added)   (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_data);
 	void       (*entry_removed) (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_data);
@@ -102,6 +104,12 @@
 	void       (*menu_show)     (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp, gpointer user_data);
 
 	/* Reserved */
+	void       (*reserved1)     (void);
+	void       (*reserved2)     (void);
+	void       (*reserved3)     (void);
+	void       (*reserved4)     (void);
+	void       (*reserved5)     (void);
+	void       (*reserved6)     (void);
 };
 
 /**
@@ -132,6 +140,7 @@
 
 GList * indicator_object_get_entries (IndicatorObject * io);
 guint   indicator_object_get_location (IndicatorObject * io, IndicatorObjectEntry * entry);
+void    indicator_object_entry_activate (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp);
 
 G_END_DECLS
 

=== modified file 'libindicator/indicator.pc.in'
--- libindicator/indicator.pc.in	2009-11-04 17:34:44 +0000
+++ libindicator/indicator.pc.in	2010-09-17 21:19:22 +0000
@@ -4,7 +4,7 @@
 bindir=@bindir@
 includedir=@includedir@
 
-indicatordir=${libdir}/indicators/3/
+indicatordir=${libdir}/indicators/4/
 iconsdir=@datarootdir@/@PACKAGE@/icons/
 
 Cflags: -I${includedir}/libindicator-0.3

=== modified file 'tools/indicator-loader.c'
--- tools/indicator-loader.c	2010-09-15 13:58:07 +0000
+++ tools/indicator-loader.c	2010-09-17 21:19:22 +0000
@@ -28,6 +28,17 @@
 #define ENTRY_DATA_NAME "indicator-custom-entry-data"
 
 static void
+activate_entry (GtkWidget * widget, gpointer user_data)
+{
+	g_return_if_fail(INDICATOR_IS_OBJECT(user_data));
+	gpointer entry = g_object_get_data(G_OBJECT(widget), ENTRY_DATA_NAME);
+	g_return_if_fail(entry == NULL);
+
+	indicator_object_entry_activate(INDICATOR_OBJECT(user_data), (IndicatorObjectEntry *)entry, gtk_get_current_event_time());
+	return;
+}
+
+static void
 entry_added (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_data)
 {
 	g_debug("Signal: Entry Added");
@@ -48,6 +59,8 @@
 		gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), GTK_WIDGET(entry->menu));
 	}
 
+	g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(activate_entry), io);
+
 	gtk_menu_shell_append(GTK_MENU_SHELL(user_data), menuitem);
 	gtk_widget_show(menuitem);
 

