changeset 31183:feff62713d9c

conversation: Move the "not typing" logic for receipt of a message to purple_conv_im_write. This causes issues when a UI implements the write_im UI op and doesn't call purple_conversation_write (which Spectrum doesn't do), and ends up with a buddy appearing to be stuck in the typing state. Patch from Jan "HanzZ" Kaluza committer: Paul Aurich <paul@darkrain42.org>
author hanzz.k@gmail.com
date Sat, 05 Feb 2011 22:38:55 +0000
parents b935d9f5cc68
children ab175460cea7
files ChangeLog libpurple/conversation.c
diffstat 2 files changed, 6 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Feb 03 04:38:19 2011 +0000
+++ b/ChangeLog	Sat Feb 05 22:38:55 2011 +0000
@@ -32,6 +32,8 @@
 	  Samstag) (#13073)
 	* Fixed bugs in purple_str_to_time() that caused the most recent 'make
 	  check' failures.  (Nader Morshed) (#13131)
+	* Correct an issue that caused some UIs other than Pidgin or Finch to
+	  leave a buddy in the "is typing" state.  (Jan Kaluza)
 
 	Pidgin:
 	* Support using the Page Up and Page Down keys on the numeric keypad in
--- a/libpurple/conversation.c	Thu Feb 03 04:38:19 2011 +0000
+++ b/libpurple/conversation.c	Sat Feb 05 22:38:55 2011 +0000
@@ -999,12 +999,6 @@
 		}
 	}
 
-	if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
-		if ((flags & PURPLE_MESSAGE_RECV) == PURPLE_MESSAGE_RECV) {
-			purple_conv_im_set_typing_state(PURPLE_CONV_IM(conv), PURPLE_NOT_TYPING);
-		}
-	}
-
 	if (ops && ops->write_conv)
 		ops->write_conv(conv, who, alias, displayed, flags, mtime);
 
@@ -1229,6 +1223,10 @@
 		c->ui_ops->write_im(c, who, message, flags, mtime);
 	else
 		purple_conversation_write(c, who, message, flags, mtime);
+
+	if ((flags & PURPLE_MESSAGE_RECV) == PURPLE_MESSAGE_RECV) {
+		purple_conv_im_set_typing_state(im, PURPLE_NOT_TYPING);
+	}
 }
 
 gboolean purple_conv_present_error(const char *who, PurpleAccount *account, const char *what)