From 2cab42047a094b70833bb88b3898703499099710 Mon Sep 17 00:00:00 2001 From: James Westby Date: Sun, 5 Apr 2009 12:03:31 +0100 Subject: Be aware that appinfo can be NULL. --- src/app-menu-item.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/app-menu-item.c b/src/app-menu-item.c index 4fe3298..4501f43 100644 --- a/src/app-menu-item.c +++ b/src/app-menu-item.c @@ -192,11 +192,11 @@ update_label (AppMenuItem * self) if (priv->count_on_label && !priv->unreadcount < 1) { /* TRANSLATORS: This is the name of the program and the number of indicators. So it would read something like "Mail Client (5)" */ - gchar * label = g_strdup_printf(_("%s (%d)"), g_app_info_get_name(priv->appinfo), priv->unreadcount); + gchar * label = g_strdup_printf(_("%s (%d)"), app_menu_item_get_name(self), priv->unreadcount); gtk_label_set_text(GTK_LABEL(priv->name), label); g_free(label); } else { - gtk_label_set_text(GTK_LABEL(priv->name), g_app_info_get_name(priv->appinfo)); + gtk_label_set_text(GTK_LABEL(priv->name), app_menu_item_get_name(self)); } return; @@ -220,7 +220,7 @@ desktop_cb (IndicateListener * listener, IndicateListenerServer * server, gchar g_return_if_fail(priv->appinfo != NULL); update_label(self); - g_signal_emit(G_OBJECT(self), signals[NAME_CHANGED], 0, g_app_info_get_name(priv->appinfo), TRUE); + g_signal_emit(G_OBJECT(self), signals[NAME_CHANGED], 0, app_menu_item_get_name(self), TRUE); return; } -- cgit v1.2.3 From 8f513aa30b0b2a9bebbbdb133d329f1fc6869eba Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 20 Apr 2009 14:04:36 -0500 Subject: Adding a ref'ing and deref'ing of the listener to the application menu item to ensure it stays around while we hav signals attached to it. Fix by Code Russell on bug 362124. --- src/app-menu-item.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/app-menu-item.c b/src/app-menu-item.c index c769d47..56b3ec5 100644 --- a/src/app-menu-item.c +++ b/src/app-menu-item.c @@ -131,6 +131,8 @@ app_menu_item_finalize (GObject *object) g_signal_handlers_disconnect_by_func(G_OBJECT(priv->listener), G_CALLBACK(indicator_added_cb), self); g_signal_handlers_disconnect_by_func(G_OBJECT(priv->listener), G_CALLBACK(indicator_removed_cb), self); + g_object_unref(priv->listener); + G_OBJECT_CLASS (app_menu_item_parent_class)->finalize (object); return; @@ -144,7 +146,9 @@ app_menu_item_new (IndicateListener * listener, IndicateListenerServer * server) AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(self); priv->listener = listener; + g_object_ref(G_OBJECT(listener)); priv->server = server; + /* Can not ref as not real GObject */ g_signal_connect(G_OBJECT(listener), INDICATE_LISTENER_SIGNAL_INDICATOR_ADDED, G_CALLBACK(indicator_added_cb), self); g_signal_connect(G_OBJECT(listener), INDICATE_LISTENER_SIGNAL_INDICATOR_REMOVED, G_CALLBACK(indicator_removed_cb), self); -- cgit v1.2.3 From f30fe10fea03b79da41d82f8ea276291a9624fcf Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 20 Apr 2009 14:06:35 -0500 Subject: Moving signal disconnecting and unref to the dispose function instead of finalize. Fix by Cody Russell on bug 362124. --- src/app-menu-item.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/app-menu-item.c b/src/app-menu-item.c index 56b3ec5..d4536ac 100644 --- a/src/app-menu-item.c +++ b/src/app-menu-item.c @@ -119,6 +119,14 @@ app_menu_item_init (AppMenuItem *self) static void app_menu_item_dispose (GObject *object) { + AppMenuItem * self = APP_MENU_ITEM(object); + AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(self); + + g_signal_handlers_disconnect_by_func(G_OBJECT(priv->listener), G_CALLBACK(indicator_added_cb), self); + g_signal_handlers_disconnect_by_func(G_OBJECT(priv->listener), G_CALLBACK(indicator_removed_cb), self); + + g_object_unref(priv->listener); + G_OBJECT_CLASS (app_menu_item_parent_class)->dispose (object); } @@ -128,11 +136,6 @@ app_menu_item_finalize (GObject *object) AppMenuItem * self = APP_MENU_ITEM(object); AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(self); - g_signal_handlers_disconnect_by_func(G_OBJECT(priv->listener), G_CALLBACK(indicator_added_cb), self); - g_signal_handlers_disconnect_by_func(G_OBJECT(priv->listener), G_CALLBACK(indicator_removed_cb), self); - - g_object_unref(priv->listener); - G_OBJECT_CLASS (app_menu_item_parent_class)->finalize (object); return; -- cgit v1.2.3 From b5159bc66b25208344bb456f968cf6494815045b Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 20 Apr 2009 14:12:44 -0500 Subject: Freeing the appinfo and type from the application object on finalize --- src/app-menu-item.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/app-menu-item.c b/src/app-menu-item.c index d4536ac..f6472af 100644 --- a/src/app-menu-item.c +++ b/src/app-menu-item.c @@ -136,6 +136,14 @@ app_menu_item_finalize (GObject *object) AppMenuItem * self = APP_MENU_ITEM(object); AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(self); + if (priv->type != NULL) { + g_free(priv->type); + } + + if (priv->appinfo != NULL) { + g_object_unref(priv->appinfo); + } + G_OBJECT_CLASS (app_menu_item_parent_class)->finalize (object); return; @@ -181,8 +189,14 @@ type_cb (IndicateListener * listener, IndicateListenerServer * server, gchar * v if (priv->type != NULL) { g_free(priv->type); + priv->type = NULL; } + if (value == NULL) { + g_warning("Type value is NULL, that shouldn't really happen"); + return; + } + priv->type = g_strdup(value); if (!(!g_strcmp0(priv->type, "message.instant") || !g_strcmp0(priv->type, "message.micro") || !g_strcmp0(priv->type, "message.im"))) { -- cgit v1.2.3 From 124486885e4ed122d4a536dbef844413faffb3a5 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 22 Apr 2009 15:10:24 -0500 Subject: Installing to indicator dir instead of other fun places --- configure.ac | 8 ++++++++ src/Makefile.am | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/configure.ac b/configure.ac index ea25eac..183fec8 100644 --- a/configure.ac +++ b/configure.ac @@ -34,6 +34,13 @@ PKG_CHECK_MODULES(APPLET, gtk+-2.0 >= $GTK_REQUIRED_VERSION AC_SUBST(APPLET_CFLAGS) AC_SUBST(APPLET_LIBS) +########################### +# Indicator Info +########################### + +INDICATORDIR=`$PKG_CONFIG --variable=indicatordir indicator` +AC_SUBST(INDICATORDIR) + ########################### # Files ########################### @@ -66,4 +73,5 @@ AC_MSG_NOTICE([ Messaging Indicator Configuration: Prefix: $prefix + Indicator Dir: $INDICATORDIR ]) diff --git a/src/Makefile.am b/src/Makefile.am index eb6ba12..986e89d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,5 +1,5 @@ -messaginglibdir = $(libdir)/indicators/1 +messaginglibdir = $(INDICATORDIR) messaginglib_LTLIBRARIES = libmessaging.la libmessaging_la_SOURCES = indicator-messages.c im-menu-item.c im-menu-item.h app-menu-item.c app-menu-item.h libmessaging_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Wl,-Bsymbolic-functions -Wl,-z,defs -Wl,--as-needed -- cgit v1.2.3 From aa4253123e3e2dffada0a3016944afdac5efc26f Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 22 Apr 2009 15:13:29 -0500 Subject: Including the indicator info --- src/indicator-messages.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/indicator-messages.c b/src/indicator-messages.c index 3df1329..c180bd4 100644 --- a/src/indicator-messages.c +++ b/src/indicator-messages.c @@ -24,6 +24,9 @@ with this program. If not, see . #include #include +#include +INDICATOR_SET_VERSION + #include "im-menu-item.h" #include "app-menu-item.h" -- cgit v1.2.3 From 512db5f75c09790866f08675e2fee12afb475e7f Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 22 Apr 2009 15:20:02 -0500 Subject: Breaking out into libindicator style function calls. --- src/indicator-messages.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/indicator-messages.c b/src/indicator-messages.c index c180bd4..6cb6be7 100644 --- a/src/indicator-messages.c +++ b/src/indicator-messages.c @@ -471,23 +471,30 @@ indicator_removed (IndicateListener * listener, IndicateListenerServer * server, return; } -GtkWidget * -get_menu_item (void) +GtkLabel * +get_label (void) { - design_team_size = gtk_icon_size_register("design-team-size", 22, 22); - - listener = indicate_listener_new(); - serverList = NULL; + return NULL; +} - main_menu = gtk_menu_item_new(); - gtk_widget_set_name(main_menu, "fast-user-switch-menuitem"); +GtkImage * +get_icon (void) +{ + design_team_size = gtk_icon_size_register("design-team-size", 22, 22); main_image = gtk_image_new_from_icon_name("indicator-messages", DESIGN_TEAM_SIZE); gtk_widget_show(main_image); - gtk_container_add(GTK_CONTAINER(main_menu), main_image); + + return main_image; +} + +GtkMenu * +get_menu (void) +{ + listener = indicate_listener_new(); + serverList = NULL; GtkWidget * submenu = gtk_menu_new(); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(main_menu), submenu); gtk_widget_show(submenu); g_signal_connect(listener, INDICATE_LISTENER_SIGNAL_INDICATOR_ADDED, G_CALLBACK(indicator_added), submenu); @@ -495,6 +502,6 @@ get_menu_item (void) g_signal_connect(listener, INDICATE_LISTENER_SIGNAL_SERVER_ADDED, G_CALLBACK(server_added), submenu); g_signal_connect(listener, INDICATE_LISTENER_SIGNAL_SERVER_REMOVED, G_CALLBACK(server_removed), submenu); - return main_menu; + return GTK_MENU(submenu); } -- cgit v1.2.3 From 7021ff0eee6d989be93175a567065db7cde08343 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 22 Apr 2009 15:30:18 -0500 Subject: Fixing return type --- src/indicator-messages.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/indicator-messages.c b/src/indicator-messages.c index 6cb6be7..e2140e3 100644 --- a/src/indicator-messages.c +++ b/src/indicator-messages.c @@ -485,7 +485,7 @@ get_icon (void) main_image = gtk_image_new_from_icon_name("indicator-messages", DESIGN_TEAM_SIZE); gtk_widget_show(main_image); - return main_image; + return GTK_IMAGE(main_image); } GtkMenu * -- cgit v1.2.3