From 99410a510064d26d35344e1e8f600c1986f46b53 Mon Sep 17 00:00:00 2001 From: charmlesscoin Date: Sat, 3 Aug 2013 17:29:18 -0400 Subject: [PATCH] fix for issue #306 --- chat.c | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/chat.c b/chat.c index 7cae1c0..a90bb2a 100644 --- a/chat.c +++ b/chat.c @@ -77,6 +77,18 @@ static void chat_onStatusChange(ToxWindow* self, int num, uint8_t* status, uint1 } +/* check that the string has one non-space character */ +int string_is_empty(char *string) +{ + int rc = 0; + char *copy = strdup(string); + + rc = ((strtok(copy, " ") == NULL) ? 1:0); + free(copy); + + return rc; +} + static void chat_onKey(ToxWindow* self, int key) { ChatContext* ctx = (ChatContext*) self->x; @@ -92,23 +104,28 @@ static void chat_onKey(ToxWindow* self, int key) { ctx->line[ctx->pos] = '\0'; } } + else if(key == '\n') { - wattron(ctx->history, COLOR_PAIR(2)); - wprintw(ctx->history, "%02d:%02d:%02d ", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); - wattron(ctx->history, COLOR_PAIR(1)); - wprintw(ctx->history, "you: ", ctx->line); - wattroff(ctx->history, COLOR_PAIR(1)); - wprintw(ctx->history, "%s\n", ctx->line); + if(!string_is_empty(ctx->line)) { + /* make sure the string has at least non-space character */ + wattron(ctx->history, COLOR_PAIR(2)); + wprintw(ctx->history, "%02d:%02d:%02d ", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); + wattron(ctx->history, COLOR_PAIR(1)); + wprintw(ctx->history, "you: ", ctx->line); + wattroff(ctx->history, COLOR_PAIR(1)); + wprintw(ctx->history, "%s\n", ctx->line); - if(m_sendmessage(ctx->friendnum, (uint8_t*) ctx->line, strlen(ctx->line)+1) < 0) { - wattron(ctx->history, COLOR_PAIR(3)); - wprintw(ctx->history, " * Failed to send message.\n"); - wattroff(ctx->history, COLOR_PAIR(3)); + if(m_sendmessage(ctx->friendnum, (uint8_t*) ctx->line, strlen(ctx->line)+1) < 0) { + wattron(ctx->history, COLOR_PAIR(3)); + wprintw(ctx->history, " * Failed to send message.\n"); + wattroff(ctx->history, COLOR_PAIR(3)); + } + + ctx->line[0] = '\0'; + ctx->pos = 0; } - - ctx->line[0] = '\0'; - ctx->pos = 0; } + else if(key == 0x107 || key == 0x8 || key == 0x7f) { if(ctx->pos != 0) { ctx->line[--ctx->pos] = '\0';