about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2012-11-10 04:18:34 +0000
committerJames Booth <boothj5@gmail.com>2012-11-10 04:18:34 +0000
commitc0f9b61f082189a4aa1c57d990e9374ae7652396 (patch)
tree73356870ea17cc24fe4b59e652c936294fa8bc4a
parentbe2fb1c809c73ccf607fb5bbc6e42578edecd450 (diff)
downloadprofani-tty-c0f9b61f082189a4aa1c57d990e9374ae7652396.tar.gz
Handle /me in chat rooms
-rw-r--r--src/windows.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/src/windows.c b/src/windows.c
index b05e2fbc..4c705977 100644
--- a/src/windows.c
+++ b/src/windows.c
@@ -631,8 +631,14 @@ win_show_room_history(const char * const room_jid, const char * const nick,
     g_date_time_unref(time);
     g_free(date_fmt);
 
-    wprintw(win, "%s: ", nick);
-    _win_show_message(win, message);
+    if (strncmp(message, "/me ", 4) == 0) {
+        wprintw(win, "*%s ", nick);
+        wprintw(win, message + 4);
+        wprintw(win, "\n");
+    } else {
+        wprintw(win, "%s: ", nick);
+        _win_show_message(win, message);
+    }
 
     if (win_index == _curr_prof_win)
         dirty = TRUE;
@@ -647,11 +653,29 @@ win_show_room_message(const char * const room_jid, const char * const nick,
 
     _win_show_time(win);
     if (strcmp(nick, room_get_nick_for_room(room_jid)) != 0) {
-        _win_show_user(win, nick, 1);
+        if (strncmp(message, "/me ", 4) == 0) {
+            wattron(win, COLOUR_ONLINE);
+            wprintw(win, "*%s ", nick);
+            wprintw(win, message + 4);
+            wprintw(win, "\n");
+            wattroff(win, COLOUR_ONLINE);
+        } else {
+            _win_show_user(win, nick, 1);
+            _win_show_message(win, message);
+        }
+
     } else {
-        _win_show_user(win, nick, 0);
+        if (strncmp(message, "/me ", 4) == 0) {
+            wattron(win, COLOUR_INC);
+            wprintw(win, "*%s ", nick);
+            wprintw(win, message + 4);
+            wprintw(win, "\n");
+            wattroff(win, COLOUR_INC);
+        } else {
+            _win_show_user(win, nick, 0);
+            _win_show_message(win, message);
+        }
     }
-    _win_show_message(win, message);
 
     // currently in groupchat window
     if (win_index == _curr_prof_win) {