parent
8218151c31
commit
43029de8f5
@ -1,10 +1,11 @@
|
||||
WeeChat - Wee Enhanced Environment for Chat
|
||||
===========================================
|
||||
|
||||
ChangeLog - 2008-07-06
|
||||
ChangeLog - 2008-07-28
|
||||
|
||||
|
||||
Version 0.2.7 (under dev!):
|
||||
* fix display bug with some weird UTF-8 chars (bug #19687)
|
||||
* fix bug with wide chars in input (bug #16356)
|
||||
* add number of lines remaining after last line displayed in "-MORE-"
|
||||
indicator (task #6702)
|
||||
|
@ -787,23 +787,25 @@ gui_bar_window_print_string (struct t_gui_bar_window *bar_window,
|
||||
snprintf (utf_char, sizeof (utf_char), ".");
|
||||
|
||||
size_on_screen = utf8_char_size_screen (utf_char);
|
||||
if (*x + size_on_screen > bar_window->width)
|
||||
if (size_on_screen > 0)
|
||||
{
|
||||
if (CONFIG_INTEGER(gui_bar_get_option_filling (bar_window->bar)) == GUI_BAR_FILLING_VERTICAL)
|
||||
return 0;
|
||||
if (*y >= bar_window->height - 1)
|
||||
return 0;
|
||||
*x = 0;
|
||||
(*y)++;
|
||||
wmove (bar_window->win_bar, *y, *x);
|
||||
if (*x + size_on_screen > bar_window->width)
|
||||
{
|
||||
if (CONFIG_INTEGER(gui_bar_get_option_filling (bar_window->bar)) == GUI_BAR_FILLING_VERTICAL)
|
||||
return 0;
|
||||
if (*y >= bar_window->height - 1)
|
||||
return 0;
|
||||
*x = 0;
|
||||
(*y)++;
|
||||
wmove (bar_window->win_bar, *y, *x);
|
||||
}
|
||||
output = string_iconv_from_internal (NULL, utf_char);
|
||||
wprintw (bar_window->win_bar, "%s",
|
||||
(output) ? output : utf_char);
|
||||
if (output)
|
||||
free (output);
|
||||
*x += size_on_screen;
|
||||
}
|
||||
output = string_iconv_from_internal (NULL, utf_char);
|
||||
wprintw (bar_window->win_bar, "%s",
|
||||
(output) ? output : utf_char);
|
||||
if (output)
|
||||
free (output);
|
||||
|
||||
*x += size_on_screen;
|
||||
|
||||
string = next_char;
|
||||
}
|
||||
|
@ -446,18 +446,21 @@ gui_chat_display_word_raw (struct t_gui_window *window, const char *string,
|
||||
utf_char[next_char - string] = '\0';
|
||||
if (gui_window_utf_char_valid (utf_char))
|
||||
{
|
||||
size_on_screen = utf8_strlen_screen (utf_char);
|
||||
if (max_chars_on_screen > 0)
|
||||
{
|
||||
size_on_screen = utf8_strlen_screen (utf_char);
|
||||
if (chars_displayed + size_on_screen > max_chars_on_screen)
|
||||
return;
|
||||
chars_displayed += size_on_screen;
|
||||
}
|
||||
output = string_iconv_from_internal (NULL, utf_char);
|
||||
wprintw (GUI_CURSES(window)->win_chat,
|
||||
"%s", (output) ? output : utf_char);
|
||||
if (output)
|
||||
free (output);
|
||||
if (size_on_screen > 0)
|
||||
{
|
||||
output = string_iconv_from_internal (NULL, utf_char);
|
||||
wprintw (GUI_CURSES(window)->win_chat,
|
||||
"%s", (output) ? output : utf_char);
|
||||
if (output)
|
||||
free (output);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -121,7 +121,7 @@ gui_chat_prefix_build ()
|
||||
int
|
||||
gui_chat_strlen_screen (const char *string)
|
||||
{
|
||||
int length;
|
||||
int length, size_on_screen;
|
||||
|
||||
length = 0;
|
||||
while (string && string[0])
|
||||
@ -129,7 +129,9 @@ gui_chat_strlen_screen (const char *string)
|
||||
string = gui_chat_string_next_char (NULL, (unsigned char *)string, 0);
|
||||
if (string)
|
||||
{
|
||||
length += utf8_char_size_screen (string);
|
||||
size_on_screen = utf8_char_size_screen (string);
|
||||
if (size_on_screen > 0)
|
||||
length += size_on_screen;
|
||||
string = utf8_next_char (string);
|
||||
}
|
||||
}
|
||||
@ -167,6 +169,7 @@ int
|
||||
gui_chat_string_real_pos (const char *string, int pos)
|
||||
{
|
||||
const char *real_pos, *ptr_string;
|
||||
int size_on_screen;
|
||||
|
||||
if (pos <= 0)
|
||||
return 0;
|
||||
@ -180,7 +183,9 @@ gui_chat_string_real_pos (const char *string, int pos)
|
||||
0);
|
||||
if (ptr_string)
|
||||
{
|
||||
pos -= utf8_char_size_screen (ptr_string);
|
||||
size_on_screen = utf8_char_size_screen (ptr_string);
|
||||
if (size_on_screen > 0)
|
||||
pos -= size_on_screen;
|
||||
ptr_string = utf8_next_char (ptr_string);
|
||||
real_pos = ptr_string;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user