changeset 3012:08327a2f25aa

[gaim-migrate @ 3025] Lots of people have a problem with people who were added to their MSN reverse list while they were offline, not being prompted to add them to their allow list. Jason Willis fixed that. Also added a global buddy icon animation preference by Luke Schierer. committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Wed, 06 Mar 2002 00:18:02 +0000
parents c809f2ed3d92
children 47d0f8979fb1
files ChangeLog src/conversation.c src/gaim.h src/prefs.c src/protocols/msn/msn.c src/protocols/oscar/ft.c
diffstat 6 files changed, 37 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Mar 05 23:20:51 2002 +0000
+++ b/ChangeLog	Wed Mar 06 00:18:02 2002 +0000
@@ -4,6 +4,10 @@
 	* Compiles without GdkPixbuf again
 	* GtkIMHtml will refresh when you set a new GTK+ theme
 	* Improved Yahoo! typing notification (thanks Brian Macke)
+	* Prompt to authorize MSN buddies who added you while you
+	  were offline (Thanks Jason Willis)
+	* Option to globally disable Buddy Icon animation (Thanks
+	  Luke Schierer)
 	
 version 0.53 (02/28/2002):
 	* Updated Polish Translation (thanks Przemyslaw Sulek)
--- a/src/conversation.c	Tue Mar 05 23:20:51 2002 +0000
+++ b/src/conversation.c	Wed Mar 06 00:18:02 2002 +0000
@@ -3287,6 +3287,8 @@
 	gtk_widget_set_usize(c->icon, sf, sf);
 	gtk_container_add(GTK_CONTAINER(event), c->icon);
 	gtk_widget_show(c->icon);
+	if(im_options & OPT_IM_NO_ANIMATION)
+		stop_anim(c->icon, c);		
 	gdk_pixmap_unref(pm);
 	if (bm)
 		gdk_bitmap_unref(bm);
--- a/src/gaim.h	Tue Mar 05 23:20:51 2002 +0000
+++ b/src/gaim.h	Wed Mar 06 00:18:02 2002 +0000
@@ -233,6 +233,7 @@
 #define OPT_IM_SIDE_TAB			0x00000020
 #define OPT_IM_BR_TAB			0x00000040
 #define OPT_IM_HIDE_ICONS		0x00000080
+#define OPT_IM_NO_ANIMATION		0x00000100
 #define OPT_IM_ALIAS_TAB		0x00002000
 #define OPT_IM_POPDOWN			0x00004000
 
--- a/src/prefs.c	Tue Mar 05 23:20:51 2002 +0000
+++ b/src/prefs.c	Wed Mar 06 00:18:02 2002 +0000
@@ -1009,7 +1009,12 @@
 	gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5);
 	gtk_widget_show(vbox);
 
-	gaim_button(_("Hide Buddy Icons"), &im_options, OPT_IM_HIDE_ICONS, vbox);
+	hbox = gtk_hbox_new(FALSE, 5);	
+	gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 5);
+	gtk_widget_show(hbox);
+	gaim_button(_("Hide Buddy Icons"), &im_options, OPT_IM_HIDE_ICONS, hbox);
+	
+	gaim_button(_("Disable Buddy Icon Animation"), &im_options, OPT_IM_NO_ANIMATION, hbox);
 #endif
 
 	gtk_widget_show(prefdialog);
--- a/src/protocols/msn/msn.c	Tue Mar 05 23:20:51 2002 +0000
+++ b/src/protocols/msn/msn.c	Wed Mar 06 00:18:02 2002 +0000
@@ -699,7 +699,6 @@
 		return;
 	}
 	build_allow_list(); /* er. right. we'll need to have a thing for this in CUI too */
-
 	show_got_added(map->gc, NULL, map->user, map->friend, NULL);
 }
 
@@ -847,6 +846,10 @@
 		serv_got_update(gc, user, 1, 0, 0, 0, status, 0);
 	} else if (!g_strncasecmp(buf, "LST", 3)) {
 		char *which, *who, *friend, *tmp = buf;
+		struct msn_add_permit *ap; /* for any as yet undealt with buddies who've added you to their buddy list when you were off-line.  How dare they! */
+		GSList *perm = gc->permit; /* current permit list */
+		char msg[MSN_BUF_LEN];
+		int new = 1;
 		int pos, tot;
 
 		GET_NEXT(tmp);
@@ -874,8 +877,25 @@
 		} else if (!g_strcasecmp(which, "BL") && pos) {
 			gc->deny = g_slist_append(gc->deny, g_strdup(who));
 		} else if (!g_strcasecmp(which, "RL")) {
-			if (pos != tot)
-				return 1;
+			while(perm) {
+				if(!g_strcasecmp(perm->data, who))
+					new = 0;
+				perm = perm->next;
+			}
+
+			if(new) {
+				debug_printf("Unresolved MSN RL entry");
+				ap = g_new0(struct msn_add_permit, 1);
+				ap->user = g_strdup(who);
+				ap->friend = g_strdup(friend);
+				ap->gc = gc;
+                         
+		                g_snprintf(msg, sizeof(msg), "The user %s (%s) wants to add you to their buddy list",ap->user, url_decode(ap->friend));
+				do_ask_dialog(msg, ap, msn_accept_add, msn_cancel_add);
+			}
+			
+			if (pos != tot) 
+				return 1; /* this isn't the last one in the RL, so return. */
 
 			g_snprintf(sendbuf, sizeof(sendbuf), "CHG %d NLN\r\n", ++md->trId);
 			if (msn_write(md->fd, sendbuf, strlen(sendbuf)) < 0) {
--- a/src/protocols/oscar/ft.c	Tue Mar 05 23:20:51 2002 +0000
+++ b/src/protocols/oscar/ft.c	Wed Mar 06 00:18:02 2002 +0000
@@ -1115,7 +1115,7 @@
 				i = aim_recv(conn->fd, msg2, 1024);
 			else 
 				i = aim_recv(conn->fd, msg2, payloadlength - recvd);
-			if (i == 0) {
+			if (i <= 0) {
 				free(msg);
 				return -1;
 			}