diff libpurple/server.c @ 25581:1cf0b4f71d16

*** Plucked rev 0257ab6e (wabz@pidgin.im): Set PURPLE_MESSAGE_RECV before receiving-im-msg. Also set it when receiving chat messages. *** Plucked rev eed05980 (wabz@pidgin.im): Set _MESSAGE_{RECV,SEND} properly when receiving chat messages. Thanks Sadrul! *** Plucked rev ec236422 (sadrul@pidgin.im): Chat's nick is normalized. So normalize before comparing with it. Also, remove an extra normalization operation.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Wed, 29 Apr 2009 18:19:22 +0000
parents 75690a3eeee0
children 51ff18d00dea
line wrap: on
line diff
--- a/libpurple/server.c	Wed Apr 29 00:52:08 2009 +0000
+++ b/libpurple/server.c	Wed Apr 29 18:19:22 2009 +0000
@@ -583,6 +583,11 @@
 
 	account  = purple_connection_get_account(gc);
 
+	/*
+	 * XXX: Should we be setting this here, or relying on prpls to set it?
+	 */
+	flags |= PURPLE_MESSAGE_RECV;
+
 	if (PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc))->set_permit_deny == NULL) {
 		/* protocol does not support privacy, handle it ourselves */
 		if (!purple_privacy_check(account, who)) {
@@ -626,11 +631,6 @@
 	if (conv == NULL)
 		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, name, gc->account);
 
-	/*
-	 * XXX: Should we be setting this here, or relying on prpls to set it?
-	 */
-	flags |= PURPLE_MESSAGE_RECV;
-
 	if (conv == NULL)
 		conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name);
 
@@ -935,6 +935,15 @@
 	if (!conv)
 		return;
 
+	/* Did I send the message? */
+	if (purple_strequal(purple_conv_chat_get_nick(chat),
+				purple_normalize(purple_conversation_get_account(conv), who))) {
+		flags |= PURPLE_MESSAGE_SEND;
+		flags &= ~PURPLE_MESSAGE_RECV; /* Just in case some prpl sets it! */
+	} else {
+		flags |= PURPLE_MESSAGE_RECV;
+	}
+
 	/*
 	 * Make copies of the message and the sender in case plugins want
 	 * to free these strings and replace them with a modifed version.