comparison src/gtkblist.c @ 12117:cb77957d644c

[gaim-migrate @ 14417] changelogify the awesome queueing system from Casey Harkins, add my own touch of awesomeness to it, and commit a patch I found somewhere earlier today to fix crashing on NetBSD. It might have been in the tracker, I'll have to hunt for it committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Wed, 16 Nov 2005 22:33:15 +0000
parents e75ef7aa913e
children 312efb43c49a
comparison
equal deleted inserted replaced
12116:e75ef7aa913e 12117:cb77957d644c
3134 static void 3134 static void
3135 conversation_updated_cb(GaimConversation *conv, GaimConvUpdateType type, 3135 conversation_updated_cb(GaimConversation *conv, GaimConvUpdateType type,
3136 GaimGtkBuddyList *gtkblist) 3136 GaimGtkBuddyList *gtkblist)
3137 { 3137 {
3138 GtkWidget *img = NULL; 3138 GtkWidget *img = NULL;
3139 GString *tooltip_text = NULL;
3139 3140
3140 if(gtkblist->menutrayicon) { 3141 if(gtkblist->menutrayicon) {
3141 gtk_widget_destroy(gtkblist->menutrayicon); 3142 gtk_widget_destroy(gtkblist->menutrayicon);
3142 gtkblist->menutrayicon = NULL; 3143 gtkblist->menutrayicon = NULL;
3143 } 3144 }
3144 3145
3145 if(gaim_gtk_conversations_get_first_unseen(GAIM_CONV_TYPE_IM, GAIM_UNSEEN_TEXT)) 3146 if(gaim_gtk_conversations_get_first_unseen(GAIM_CONV_TYPE_IM, GAIM_UNSEEN_TEXT)) {
3147 GList *convs = gaim_get_ims();
3148 tooltip_text = g_string_new("");
3149 while(convs) {
3150 conv = convs->data;
3151 if(GAIM_IS_GTK_CONVERSATION(conv)) {
3152 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
3153 if(gtkconv->unseen_state >= GAIM_UNSEEN_TEXT) {
3154 g_string_append_printf(tooltip_text,
3155 _("Unread messages from %s\n"), gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
3156 }
3157 }
3158 convs = convs->next;
3159 }
3160 /* get rid of the last newline */
3161 tooltip_text = g_string_truncate(tooltip_text, tooltip_text->len -1);
3146 img = gtk_image_new_from_stock(GAIM_STOCK_PENDING, GTK_ICON_SIZE_MENU); 3162 img = gtk_image_new_from_stock(GAIM_STOCK_PENDING, GTK_ICON_SIZE_MENU);
3147 3163
3148 if(img) {
3149 gtkblist->menutrayicon = gtk_event_box_new(); 3164 gtkblist->menutrayicon = gtk_event_box_new();
3150 gtk_container_add(GTK_CONTAINER(gtkblist->menutrayicon), img); 3165 gtk_container_add(GTK_CONTAINER(gtkblist->menutrayicon), img);
3151 gtk_widget_show(img); 3166 gtk_widget_show(img);
3152 gtk_widget_show(gtkblist->menutrayicon); 3167 gtk_widget_show(gtkblist->menutrayicon);
3153 g_signal_connect(G_OBJECT(gtkblist->menutrayicon), "button-press-event", G_CALLBACK(menutray_press_cb), NULL); 3168 g_signal_connect(G_OBJECT(gtkblist->menutrayicon), "button-press-event", G_CALLBACK(menutray_press_cb), NULL);
3154 3169
3155 gaim_gtk_menu_tray_append(GAIM_GTK_MENU_TRAY(gtkblist->menutray), gtkblist->menutrayicon, NULL); 3170 gaim_gtk_menu_tray_append(GAIM_GTK_MENU_TRAY(gtkblist->menutray), gtkblist->menutrayicon, g_string_free(tooltip_text, FALSE));
3156 } 3171 }
3157 } 3172 }
3158 3173
3159 /********************************************************************************** 3174 /**********************************************************************************
3160 * Public API Functions * 3175 * Public API Functions *