aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/80indicator-debugging14
-rw-r--r--tools/Makefile.am5
-rw-r--r--tools/indicator-loader.c21
3 files changed, 40 insertions, 0 deletions
diff --git a/tools/80indicator-debugging b/tools/80indicator-debugging
new file mode 100644
index 0000000..f21559c
--- /dev/null
+++ b/tools/80indicator-debugging
@@ -0,0 +1,14 @@
+# These are environment variables that effect the behavior
+# of libindicator's service manager and indicator service
+# objects. They turn off various robustness features that
+# make debugging difficult and are not recommended for
+# daily use. Development use only!
+
+# Timeout after 1 minute
+export INDICATOR_SERVICE_SHUTDOWN_TIMEOUT=60000
+
+# If no one connects, still stay alive
+export INDICATOR_ALLOW_NO_WATCHERS=1
+
+# Don't restart the services if they crash
+export INDICATOR_SERVICE_RESTART_DISABLE=1
diff --git a/tools/Makefile.am b/tools/Makefile.am
index d2964f9..6c67491 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -24,3 +24,8 @@ indicator_loader_LDADD = \
-L$(top_builddir)/libindicator/.libs \
$(INDICATOR_LIB)
+xsessiondir = $(sysconfdir)/X11/Xsession.d
+
+xsession_DATA = 80indicator-debugging
+
+EXTRA_DIST = $(xsession_DATA)
diff --git a/tools/indicator-loader.c b/tools/indicator-loader.c
index 0f4a7be..03614aa 100644
--- a/tools/indicator-loader.c
+++ b/tools/indicator-loader.c
@@ -28,6 +28,17 @@ License along with this library. If not, see
#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 @@ entry_added (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_d
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);
@@ -79,6 +92,13 @@ entry_removed (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user
return;
}
+static void
+menu_show (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp, gpointer user_data)
+{
+ g_debug("Show Menu: %s", entry->label != NULL ? gtk_label_get_text(entry->label) : "No Label");
+ return;
+}
+
static gboolean
load_module (const gchar * name, GtkWidget * menu)
{
@@ -97,6 +117,7 @@ load_module (const gchar * name, GtkWidget * menu)
/* Connect to it's signals */
g_signal_connect(G_OBJECT(io), INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED, G_CALLBACK(entry_added), menu);
g_signal_connect(G_OBJECT(io), INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED, G_CALLBACK(entry_removed), menu);
+ g_signal_connect(G_OBJECT(io), INDICATOR_OBJECT_SIGNAL_MENU_SHOW, G_CALLBACK(menu_show), NULL);
/* Work on the entries */
GList * entries = indicator_object_get_entries(io);