diff options
Diffstat (limited to 'libindicate')
-rw-r--r-- | libindicate/Makefile.am | 48 | ||||
-rw-r--r-- | libindicate/indicator.c | 4 | ||||
-rw-r--r-- | libindicate/server.c | 30 |
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) { |