# HG changeset patch # User Paul Aurich # Date 1273646128 0 # Node ID 716d6bb38829681027682c5db11287fa2361b36a # Parent e63ea24aa2914feb056d266cf209716774876f21 jabber: Refined logic for determining "is typing" support. This was pointed out by the people in #11819 as being slightly better (ignore stray stanzas and no way to "escape") diff -r e63ea24aa291 -r 716d6bb38829 libpurple/protocols/jabber/message.c --- a/libpurple/protocols/jabber/message.c Wed May 12 05:21:47 2010 +0000 +++ b/libpurple/protocols/jabber/message.c Wed May 12 06:35:28 2010 +0000 @@ -75,12 +75,8 @@ jbr = jabber_buddy_find_resource(jb, jid->resource); if(!jm->xhtml && !jm->body) { - if (jbr) { - if (jm->chat_state != JM_STATE_NONE) - jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; - else - jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; - } + if (jbr && jm->chat_state != JM_STATE_NONE) + jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; if(JM_STATE_COMPOSING == jm->chat_state) { serv_got_typing(gc, jm->from, 0, PURPLE_TYPING); @@ -142,10 +138,13 @@ } if(jbr) { - if (jm->chat_state != JM_STATE_NONE) - jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; - else - jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; + /* Treat SUPPORTED as a terminal with no escape :) */ + if (jbr->chat_states != JABBER_CHAT_STATES_SUPPORTED) { + if (jm->chat_state != JM_STATE_NONE) + jbr->chat_states = JABBER_CHAT_STATES_SUPPORTED; + else + jbr->chat_states = JABBER_CHAT_STATES_UNSUPPORTED; + } if(jbr->thread_id) g_free(jbr->thread_id);