aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--protocols/purple/purple.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/protocols/purple/purple.c b/protocols/purple/purple.c
index 50770187..6bb8fc99 100644
--- a/protocols/purple/purple.c
+++ b/protocols/purple/purple.c
@@ -242,9 +242,26 @@ static void purple_keepalive( struct im_connection *ic )
{
}
-static int purple_send_typing( struct im_connection *ic, char *who, int typing )
+static int purple_send_typing( struct im_connection *ic, char *who, int flags )
{
- return 1;
+ PurpleTypingState state = PURPLE_NOT_TYPING;
+ PurpleConversation *conv;
+
+ if( flags & OPT_TYPING )
+ state = PURPLE_TYPING;
+ else if( flags & OPT_THINKING )
+ state = PURPLE_TYPED;
+
+ if( ( conv = purple_find_conversation_with_account( PURPLE_CONV_TYPE_IM,
+ who, ic->proto_data ) ) == NULL )
+ {
+ purple_conv_im_set_typing_state( purple_conversation_get_im_data( conv ), state );
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
}
static void purple_ui_init();