1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-11-03 19:37:16 -05:00

Merge pull request #1557 from profanity-im/fix/1231-display

Fix wrong message display when mention is triggered
This commit is contained in:
Michael Vetter 2021-06-08 22:14:06 +02:00 committed by GitHub
commit efcb0c31ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -389,26 +389,36 @@ _mucwin_print_mention(ProfWin* window, const char* const message, const char* co
while (curr) {
pos = GPOINTER_TO_INT(curr->data);
char* before_str = g_strndup(message + last_pos, pos - last_pos);
char *before_str = g_utf8_substring(message, last_pos, last_pos + pos - last_pos);
if (strncmp(before_str, "/me ", 4) == 0) {
win_print_them(window, THEME_ROOMMENTION, ch, flags, "");
win_append_highlight(window, THEME_ROOMMENTION, "*%s ", from);
win_append_highlight(window, THEME_ROOMMENTION, "%s", before_str + 4);
} else {
win_print_them(window, THEME_ROOMMENTION, ch, flags, from);
// print time and nick only once at beginning of the line
if (last_pos == 0) {
win_print_them(window, THEME_ROOMMENTION, ch, flags, from);
}
win_append_highlight(window, THEME_ROOMMENTION, "%s", before_str);
}
g_free(before_str);
char* mynick_str = g_strndup(message + pos, strlen(mynick));
glong mynick_len = g_utf8_strlen(mynick, -1);
char* mynick_str = g_utf8_substring(message, pos, pos + mynick_len);
win_append_highlight(window, THEME_ROOMMENTION_TERM, "%s", mynick_str);
g_free(mynick_str);
last_pos = pos + strlen(mynick);
last_pos = pos + mynick_len;
curr = g_slist_next(curr);
}
if (last_pos < strlen(message)) {
win_appendln_highlight(window, THEME_ROOMMENTION, "%s", &message[last_pos]);
glong message_len = g_utf8_strlen(message, -1);
if (last_pos < message_len) {
char* rest = g_utf8_substring(message, last_pos, last_pos + message_len);
win_appendln_highlight(window, THEME_ROOMMENTION, "%s", rest);
g_free(rest);
} else {
win_appendln_highlight(window, THEME_ROOMMENTION, "");
}