im.pidgin.pidgin: 4c59953fd39724c7b48e897585df61dab901c4d2
charkins at pidgin.im
charkins at pidgin.im
Tue Oct 16 00:35:43 EDT 2007
-----------------------------------------------------------------
Revision: 4c59953fd39724c7b48e897585df61dab901c4d2
Ancestor: 2859800860a726be81d3a19e19a5138521211b27
Author: charkins at pidgin.im
Date: 2007-10-16T04:27:20
Branch: im.pidgin.pidgin
Modified files:
pidgin/gtkblist.c
ChangeLog:
Make the docklet and buddy list menutray agree on unread messages. Both
will notify of any ims that are unread and any chats where nick was said,
regardless of whether the conversation is hidden or not. I think this was
the behavior up until detachable convs were added, but I could be wrong.
This also fixes a bug where the menutray was showing an icon for chats,
but clicking it wouldn't present the chat.
-------------- next part --------------
============================================================
--- pidgin/gtkblist.c 9d7585771d8ec030379b11d97c96606ab6c01914
+++ pidgin/gtkblist.c a328bc40e19ff30466a882f34a0cd63d2a4fd9e4
@@ -3877,13 +3877,26 @@ unseen_conv_menu()
{
static GtkWidget *menu = NULL;
GList *convs = NULL;
+ GList *chats, *ims;
if (menu) {
gtk_widget_destroy(menu);
menu = NULL;
}
- convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_ANY, PIDGIN_UNSEEN_TEXT, TRUE, 0);
+ ims = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM,
+ PIDGIN_UNSEEN_TEXT, FALSE, 0);
+
+ chats = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_CHAT,
+ PIDGIN_UNSEEN_NICK, FALSE, 0);
+
+ if(ims && chats)
+ convs = g_list_concat(ims, chats);
+ else if(ims && !chats)
+ convs = ims;
+ else if(!ims && chats)
+ convs = chats;
+
if (!convs)
/* no conversations added, don't show the menu */
return;
@@ -3905,7 +3918,11 @@ menutray_press_cb(GtkWidget *widget, Gdk
switch (event->button) {
case 1:
convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM,
- PIDGIN_UNSEEN_TEXT, TRUE, 1);
+ PIDGIN_UNSEEN_TEXT, FALSE, 1);
+
+ if(!convs)
+ convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_CHAT,
+ PIDGIN_UNSEEN_NICK, FALSE, 1);
if (convs) {
pidgin_conv_present_conversation((PurpleConversation*)convs->data);
g_list_free(convs);
@@ -3923,6 +3940,7 @@ conversation_updated_cb(PurpleConversati
PidginBuddyList *gtkblist)
{
GList *convs = NULL;
+ GList *ims, *chats;
GList *l = NULL;
if (type != PURPLE_CONV_UPDATE_UNSEEN)
@@ -3939,7 +3957,19 @@ conversation_updated_cb(PurpleConversati
gtkblist->menutrayicon = NULL;
}
- convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_ANY, PIDGIN_UNSEEN_TEXT, TRUE, 0);
+ ims = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM,
+ PIDGIN_UNSEEN_TEXT, FALSE, 0);
+
+ chats = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_CHAT,
+ PIDGIN_UNSEEN_NICK, FALSE, 0);
+
+ if(ims && chats)
+ convs = g_list_concat(ims, chats);
+ else if(ims && !chats)
+ convs = ims;
+ else if(!ims && chats)
+ convs = chats;
+
if (convs) {
GtkWidget *img = NULL;
GString *tooltip_text = NULL;
@@ -3947,7 +3977,14 @@ conversation_updated_cb(PurpleConversati
tooltip_text = g_string_new("");
l = convs;
while (l != NULL) {
- int count = GPOINTER_TO_INT(purple_conversation_get_data(l->data, "unseen-count"));
+ int count = 0;
+ PidginConversation *gtkconv = PIDGIN_CONVERSATION((PurpleConversation *)l->data);
+
+ if(gtkconv)
+ count = gtkconv->unseen_count;
+ else if(purple_conversation_get_data(l->data, "unseen-count"))
+ count = GPOINTER_TO_INT(purple_conversation_get_data(l->data, "unseen-count"));
+
g_string_append_printf(tooltip_text,
ngettext("%d unread message from %s\n", "%d unread messages from %s\n", count),
count, purple_conversation_get_name(l->data));
More information about the Commits
mailing list