aboutsummaryrefslogtreecommitdiff
path: root/libindicate
diff options
context:
space:
mode:
Diffstat (limited to 'libindicate')
-rw-r--r--libindicate/Makefile.am48
-rw-r--r--libindicate/indicator.c4
-rw-r--r--libindicate/server.c30
3 files changed, 52 insertions, 30 deletions
diff --git a/libindicate/Makefile.am b/libindicate/Makefile.am
index 5b43425..3eb14af 100644
--- a/libindicate/Makefile.am
+++ b/libindicate/Makefile.am
@@ -74,28 +74,28 @@ listener-marshal.c: $(srcdir)/listener-marshal.list
pkgconfig_DATA = indicate.pc
pkgconfigdir = $(libdir)/pkgconfig
-gobjectintrospection_gir_DATA = \
- Indicate-0.1.gir
-gobjectintrospection_girdir = $(datadir)/gir
-
-gobjectintrospection_type_DATA = \
- Indicate-0.1.typelib
-gobjectintrospection_typedir = $(libdir)/girepository
-
-irscanner_headers = $(patsubst %,$(srcdir)/%,$(indicate_headers))
-Indicate-0.1.gir: $(irscanner_headers)
- $(G_IR_SCANNER) \
- -v --namespace Indicate \
- --nsversion=0.1 \
- --add-include-path=$(srcdir) \
- --include=GObject-2.0 \
- --include=GLib-2.0 \
- --include=GdkPixbuf-2.0 \
- --library=indicate --pkg indicate \
- --output Indicate-0.1.gir $(irscanner_headers)
-
-Indicate-0.1.typelib: Indicate-0.1.gir
- $(G_IR_COMPILER) \
- --includedir=$(srcdir) Indicate-0.1.gir \
- -o Indicate-0.1.typelib
+#gobjectintrospection_gir_DATA = \
+# Indicate-0.1.gir
+#gobjectintrospection_girdir = $(datadir)/gir
+#
+#gobjectintrospection_type_DATA = \
+# Indicate-0.1.typelib
+#gobjectintrospection_typedir = $(libdir)/girepository
+#
+#irscanner_headers = $(patsubst %,$(srcdir)/%,$(indicate_headers))
+#Indicate-0.1.gir: $(irscanner_headers)
+# $(G_IR_SCANNER) \
+# -v --namespace Indicate \
+# --nsversion=0.1 \
+# --add-include-path=$(srcdir) \
+# --include=GObject-2.0 \
+# --include=GLib-2.0 \
+# --include=GdkPixbuf-2.0 \
+# --library=indicate --pkg indicate \
+# --output Indicate-0.1.gir $(irscanner_headers)
+#
+#Indicate-0.1.typelib: Indicate-0.1.gir
+# $(G_IR_COMPILER) \
+# --includedir=$(srcdir) Indicate-0.1.gir \
+# -o Indicate-0.1.typelib
diff --git a/libindicate/indicator.c b/libindicate/indicator.c
index b77d7d7..cf77316 100644
--- a/libindicate/indicator.c
+++ b/libindicate/indicator.c
@@ -255,7 +255,9 @@ set_property (IndicateIndicator * indicator, const gchar * key, const gchar * da
/* If the value has changed or there is no value */
gchar * newkey = g_strdup(key);
g_hash_table_insert(priv->properties, newkey, g_strdup(data));
- g_signal_emit(indicator, signals[MODIFIED], 0, newkey, TRUE);
+ if (indicate_indicator_is_visible(indicator)) {
+ g_signal_emit(indicator, signals[MODIFIED], 0, newkey, TRUE);
+ }
}
return;
diff --git a/libindicate/server.c b/libindicate/server.c
index f5bd0bb..7daedc7 100644
--- a/libindicate/server.c
+++ b/libindicate/server.c
@@ -40,6 +40,7 @@ static guint signals[LAST_SIGNAL] = { 0 };
typedef struct _IndicateServerPrivate IndicateServerPrivate;
struct _IndicateServerPrivate
{
+ DBusGConnection *connection;
gchar * path;
GSList * indicators;
gboolean visible;
@@ -175,7 +176,9 @@ indicate_server_finalize (GObject * obj)
IndicateServerPrivate * priv = INDICATE_SERVER_GET_PRIVATE(server);
/* TODO: This probably shouldn't be as far down as finalize, but it's fine here. */
- g_signal_emit(server, signals[SERVER_HIDE], 0, priv->type ? priv->type : "", TRUE);
+ if (priv->visible) {
+ g_signal_emit(server, signals[SERVER_HIDE], 0, priv->type ? priv->type : "", TRUE);
+ }
if (priv->path) {
g_free(priv->path);
@@ -261,11 +264,9 @@ indicate_server_show (IndicateServer * server)
if (priv->visible)
return;
- DBusGConnection * connection;
-
- connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL);
+ priv->connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL);
- dbus_g_connection_register_g_object(connection,
+ dbus_g_connection_register_g_object(priv->connection,
priv->path,
G_OBJECT(server));
priv->visible = TRUE;
@@ -275,6 +276,25 @@ indicate_server_show (IndicateServer * server)
return;
}
+void
+indicate_server_hide (IndicateServer * server)
+{
+ g_return_if_fail(INDICATE_IS_SERVER(server));
+ IndicateServerPrivate * priv = INDICATE_SERVER_GET_PRIVATE(server);
+
+ if (priv->visible)
+ return;
+
+ priv->visible = FALSE;
+
+ g_signal_emit(server, signals[SERVER_HIDE], 0, priv->type ? priv->type : "", TRUE);
+
+ dbus_g_connection_unref (priv->connection);
+ priv->connection = NULL;
+
+ return;
+}
+
static guint
get_next_id (IndicateServer * server)
{