summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--src/gtkblist.c23
-rw-r--r--src/gtkconv.h12
-rw-r--r--src/plugin.c8
4 files changed, 26 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 1560b72b66..d04f083581 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -39,6 +39,7 @@ version 2.0.0:
with the same name are fixed (Andrew Hart)
* Added tab management options to the tab right-click menu (Sadrul Habib
Chowdhury)
+ * Brand new message queueing system (Casey Harkins)
Sounds:
* Beautiful new default sounds (Brad Turcotte)
diff --git a/src/gtkblist.c b/src/gtkblist.c
index 2f9fb423e4..39788bff11 100644
--- a/src/gtkblist.c
+++ b/src/gtkblist.c
@@ -3136,23 +3136,38 @@ conversation_updated_cb(GaimConversation *conv, GaimConvUpdateType type,
GaimGtkBuddyList *gtkblist)
{
GtkWidget *img = NULL;
+ GString *tooltip_text = NULL;
if(gtkblist->menutrayicon) {
gtk_widget_destroy(gtkblist->menutrayicon);
gtkblist->menutrayicon = NULL;
}
- if(gaim_gtk_conversations_get_first_unseen(GAIM_CONV_TYPE_IM, GAIM_UNSEEN_TEXT))
+ if(gaim_gtk_conversations_get_first_unseen(GAIM_CONV_TYPE_IM, GAIM_UNSEEN_TEXT)) {
+ GList *convs = gaim_get_ims();
+ tooltip_text = g_string_new("");
+ while(convs) {
+ conv = convs->data;
+ if(GAIM_IS_GTK_CONVERSATION(conv)) {
+ GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
+ if(gtkconv->unseen_state >= GAIM_UNSEEN_TEXT) {
+ g_string_append_printf(tooltip_text,
+ _("Unread messages from %s\n"), gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
+ }
+ }
+ convs = convs->next;
+ }
+ /* get rid of the last newline */
+ tooltip_text = g_string_truncate(tooltip_text, tooltip_text->len -1);
img = gtk_image_new_from_stock(GAIM_STOCK_PENDING, GTK_ICON_SIZE_MENU);
- if(img) {
gtkblist->menutrayicon = gtk_event_box_new();
gtk_container_add(GTK_CONTAINER(gtkblist->menutrayicon), img);
gtk_widget_show(img);
gtk_widget_show(gtkblist->menutrayicon);
g_signal_connect(G_OBJECT(gtkblist->menutrayicon), "button-press-event", G_CALLBACK(menutray_press_cb), NULL);
-
- gaim_gtk_menu_tray_append(GAIM_GTK_MENU_TRAY(gtkblist->menutray), gtkblist->menutrayicon, NULL);
+
+ gaim_gtk_menu_tray_append(GAIM_GTK_MENU_TRAY(gtkblist->menutray), gtkblist->menutrayicon, g_string_free(tooltip_text, FALSE));
}
}
diff --git a/src/gtkconv.h b/src/gtkconv.h
index fb01ef1636..c1f4c1a53a 100644
--- a/src/gtkconv.h
+++ b/src/gtkconv.h
@@ -219,18 +219,6 @@ gaim_gtk_conversations_get_first_unseen(GaimConversationType type,
*/
void gaim_gtkconv_present_conversation(GaimConversation *conv);
-/**
- * Finds the first conversations of the given type which has an
- * unseen state greater than or equal to the given minimum
- * state.
- *
- * @param type The type of conversation.
- * @param min_state The minimum unseen state.
- * @return First conversation matching critera, or NULL.
- */
-GaimConversation * gaim_gtk_conversations_get_first_unseen(
- GaimConversationType type, GaimUnseenState min_state);
-
GaimGtkWindow *gaim_gtkconv_get_window(GaimGtkConversation *gtkconv);
GdkPixbuf *gaim_gtkconv_get_tab_icon(GaimConversation *conv, gboolean small_icon);
void gaim_gtkconv_new(GaimConversation *conv);
diff --git a/src/plugin.c b/src/plugin.c
index 447662c695..fff2778f57 100644
--- a/src/plugin.c
+++ b/src/plugin.c
@@ -467,11 +467,15 @@ gaim_plugin_unload(GaimPlugin *plugin)
for (l = prpl_info->protocol_options; l != NULL; l = l->next)
gaim_account_option_destroy(l->data);
- if (prpl_info->user_splits != NULL)
+ if (prpl_info->user_splits != NULL) {
g_list_free(prpl_info->user_splits);
+ prpl_info->user_splits = NULL;
+ }
- if (prpl_info->protocol_options != NULL)
+ if (prpl_info->protocol_options != NULL) {
g_list_free(prpl_info->protocol_options);
+ prpl_info->protocol_options = NULL;
+ }
}
}
else {