From f4e4f55de1f27893a46323e70ae37eff923fb59c Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Sat, 29 Jun 2013 13:43:27 +0200 Subject: [PATCH] core: fix display bugs with some UTF-8 chars that truncates messages displayed Example of char causing problems: U+26C4 (snowman without snow) --- ChangeLog | 4 +++- src/gui/gui-chat.c | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ae2a039ab..81882e955 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,7 @@ WeeChat ChangeLog ================= Sébastien Helleu -v0.4.2-dev, 2013-06-28 +v0.4.2-dev, 2013-06-29 This document lists all changes for each version. @@ -14,6 +14,8 @@ http://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes] Version 0.4.2 (under dev!) -------------------------- +* core: fix display bugs with some UTF-8 chars that truncates messages displayed + (for example U+26C4) * core: update man page and add translations (in french, german, italian, and japanese) * core: remove extra space after empty prefix (when prefix for action, error, diff --git a/src/gui/gui-chat.c b/src/gui/gui-chat.c index ba665ea7d..7219a6645 100644 --- a/src/gui/gui-chat.c +++ b/src/gui/gui-chat.c @@ -150,11 +150,19 @@ gui_chat_utf_char_valid (const char *utf_char) int gui_chat_char_size_screen (const char *utf_char) { + int size_screen; + /* if char is invalid, it will be displayed as one space on screen */ if (!gui_chat_utf_char_valid (utf_char)) return 1; - return utf8_char_size_screen (utf_char); + size_screen = utf8_char_size_screen (utf_char); + + /* + * ensure the size is always >= 1, to prevent any display bug + * (for example UTF-8 char U+26C4 returns size < 1) + */ + return (size_screen >= 1) ? size_screen : 1; } /*