diff options
author | Xavier Claessens <xclaesse@gmail.com> | 2009-04-11 01:31:39 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2009-04-11 01:31:39 +0800 |
commit | 0a7bfb1f2dc560ab367327628a71fb24b6249993 (patch) | |
tree | 52220f6755f5cbfa9dcca42146a3f7619ec7b7f6 | |
parent | 05ec8e2615766849326543337c1a58cd7b63b0f5 (diff) | |
download | gsoc2013-empathy-0a7bfb1f2dc560ab367327628a71fb24b6249993.tar gsoc2013-empathy-0a7bfb1f2dc560ab367327628a71fb24b6249993.tar.gz gsoc2013-empathy-0a7bfb1f2dc560ab367327628a71fb24b6249993.tar.bz2 gsoc2013-empathy-0a7bfb1f2dc560ab367327628a71fb24b6249993.tar.lz gsoc2013-empathy-0a7bfb1f2dc560ab367327628a71fb24b6249993.tar.xz gsoc2013-empathy-0a7bfb1f2dc560ab367327628a71fb24b6249993.tar.zst gsoc2013-empathy-0a7bfb1f2dc560ab367327628a71fb24b6249993.zip |
Fix support for /me and /say commands.
From: Xavier Claessens <xclaesse@gmail.com>
svn path=/trunk/; revision=2809
-rw-r--r-- | libempathy-gtk/empathy-chat.c | 52 |
1 files changed, 16 insertions, 36 deletions
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c index d11f33161..5f54c12eb 100644 --- a/libempathy-gtk/empathy-chat.c +++ b/libempathy-gtk/empathy-chat.c @@ -349,6 +349,7 @@ chat_send (EmpathyChat *chat, const gchar *msg) { EmpathyChatPriv *priv; + EmpathyMessage *message; if (EMP_STR_EMPTY (msg)) { return; @@ -358,24 +359,25 @@ chat_send (EmpathyChat *chat, chat_sent_message_add (chat, msg); - /* If this is not a command, send the message */ - if (msg[0] != '/') { - EmpathyMessage *message; - - message = empathy_message_new (msg); - empathy_tp_chat_send (priv->tp_chat, message); - g_object_unref (message); + if (g_str_has_prefix (msg, "/clear")) { + empathy_chat_view_clear (chat->view); return; } - /* Check for all supported commands */ - if (g_str_has_prefix (msg, "/clear")) { - empathy_chat_view_clear (chat->view); + /* Blacklist messages begining by '/', except for "/me" and "/say" + * because they are handled in EmpathyMessage */ + if (msg[0] == '/' && + !g_str_has_prefix (msg, "/me") && + !g_str_has_prefix (msg, "/say")) { + empathy_chat_view_append_event (chat->view, + _("Unsupported command")); return; } - /* This is an unknown command, display a message to the user */ - empathy_chat_view_append_event (chat->view, _("Unsupported command")); + /* We can send the message */ + message = empathy_message_new (msg); + empathy_tp_chat_send (priv->tp_chat, message); + g_object_unref (message); } static void @@ -567,28 +569,6 @@ chat_property_changed_cb (EmpathyTpChat *tp_chat, } } -static gboolean -chat_get_is_command (const gchar *str) -{ - g_return_val_if_fail (str != NULL, FALSE); - - if (str[0] != '/') { - return FALSE; - } - - if (g_str_has_prefix (str, "/me")) { - return TRUE; - } - else if (g_str_has_prefix (str, "/nick")) { - return TRUE; - } - else if (g_str_has_prefix (str, "/topic")) { - return TRUE; - } - - return FALSE; -} - static void chat_input_text_buffer_changed_cb (GtkTextBuffer *buffer, EmpathyChat *chat) @@ -648,8 +628,8 @@ chat_input_text_buffer_changed_cb (GtkTextBuffer *buffer, str = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); - /* spell check string */ - if (!chat_get_is_command (str)) { + /* spell check string if not a command */ + if (str[0] != '/') { correct = empathy_spell_check (str); } else { correct = TRUE; |