Fix color display bug on lines (when length of line is more than chat width)
This commit is contained in:
parent
238c6bf5c2
commit
ff03d203a1
@ -444,6 +444,8 @@ gui_chat_display_word (struct t_gui_window *window,
|
|||||||
char *end_line, saved_char_end, saved_char, str_space[] = " ";
|
char *end_line, saved_char_end, saved_char, str_space[] = " ";
|
||||||
int pos_saved_char, chars_to_display, num_displayed;
|
int pos_saved_char, chars_to_display, num_displayed;
|
||||||
int length_align;
|
int length_align;
|
||||||
|
attr_t attrs;
|
||||||
|
short pair;
|
||||||
|
|
||||||
if (!data ||
|
if (!data ||
|
||||||
((!simulate) && (window->win_chat_cursor_y >= window->win_chat_height)))
|
((!simulate) && (window->win_chat_cursor_y >= window->win_chat_height)))
|
||||||
@ -486,6 +488,7 @@ gui_chat_display_word (struct t_gui_window *window,
|
|||||||
{
|
{
|
||||||
if (!simulate)
|
if (!simulate)
|
||||||
{
|
{
|
||||||
|
wattr_get (GUI_CURSES(window)->win_chat, &attrs, &pair, NULL);
|
||||||
gui_window_set_weechat_color (GUI_CURSES(window)->win_chat,
|
gui_window_set_weechat_color (GUI_CURSES(window)->win_chat,
|
||||||
GUI_COLOR_CHAT_PREFIX_SUFFIX);
|
GUI_COLOR_CHAT_PREFIX_SUFFIX);
|
||||||
gui_chat_display_word_raw (window,
|
gui_chat_display_word_raw (window,
|
||||||
@ -497,8 +500,7 @@ gui_chat_display_word (struct t_gui_window *window,
|
|||||||
gui_chat_display_word_raw (window, str_space, 0, 1);
|
gui_chat_display_word_raw (window, str_space, 0, 1);
|
||||||
window->win_chat_cursor_x += gui_chat_strlen_screen (str_space);
|
window->win_chat_cursor_x += gui_chat_strlen_screen (str_space);
|
||||||
if (!simulate)
|
if (!simulate)
|
||||||
gui_window_set_weechat_color (GUI_CURSES(window)->win_chat,
|
wattr_set (GUI_CURSES(window)->win_chat, attrs, pair, NULL);
|
||||||
GUI_COLOR_CHAT);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -680,7 +682,7 @@ gui_chat_display_time_and_prefix (struct t_gui_window *window,
|
|||||||
* (beginning from the end)
|
* (beginning from the end)
|
||||||
* if simulate == 1, nothing is displayed
|
* if simulate == 1, nothing is displayed
|
||||||
* (for counting how many lines would have been
|
* (for counting how many lines would have been
|
||||||
* lines displayed)
|
* displayed)
|
||||||
* returns: number of lines displayed (or simulated)
|
* returns: number of lines displayed (or simulated)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -746,8 +748,10 @@ gui_chat_display_line (struct t_gui_window *window, struct t_gui_line *line,
|
|||||||
gui_window_reset_style (GUI_CURSES(window)->win_chat, GUI_COLOR_CHAT);
|
gui_window_reset_style (GUI_CURSES(window)->win_chat, GUI_COLOR_CHAT);
|
||||||
|
|
||||||
if (!line->message || !line->message[0])
|
if (!line->message || !line->message[0])
|
||||||
|
{
|
||||||
gui_chat_display_new_line (window, num_lines, count,
|
gui_chat_display_new_line (window, num_lines, count,
|
||||||
&lines_displayed, simulate);
|
&lines_displayed, simulate);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ptr_data = line->message;
|
ptr_data = line->message;
|
||||||
@ -813,7 +817,7 @@ gui_chat_display_line (struct t_gui_window *window, struct t_gui_line *line,
|
|||||||
break;
|
break;
|
||||||
ptr_data = gui_chat_string_next_char (window,
|
ptr_data = gui_chat_string_next_char (window,
|
||||||
(unsigned char *)next_char,
|
(unsigned char *)next_char,
|
||||||
0);
|
1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,10 +46,14 @@
|
|||||||
#include "gui-curses.h"
|
#include "gui-curses.h"
|
||||||
|
|
||||||
|
|
||||||
int current_style_fg; /* current foreground color */
|
int window_current_style_fg; /* current foreground color */
|
||||||
int current_style_bg; /* current background color */
|
int window_current_style_bg; /* current background color */
|
||||||
int current_style_attr; /* current attributes (bold, ..) */
|
int window_current_style_attr; /* current attributes (bold, ..) */
|
||||||
int current_color_attr; /* attr sum of last color(s) used */
|
int window_current_color_attr; /* attr sum of last color(s) used */
|
||||||
|
int window_save_current_style_fg; /* used to save fg temporarirly */
|
||||||
|
int window_save_current_style_bg; /* used to save bg temporarirly */
|
||||||
|
int window_save_current_style_attr; /* used to save current attr temp. */
|
||||||
|
int window_save_current_color_attr; /* used to save attr temporarirly */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -235,10 +239,10 @@ gui_window_clear (WINDOW *window, int bg)
|
|||||||
void
|
void
|
||||||
gui_window_reset_style (WINDOW *window, int num_color)
|
gui_window_reset_style (WINDOW *window, int num_color)
|
||||||
{
|
{
|
||||||
current_style_fg = -1;
|
window_current_style_fg = -1;
|
||||||
current_style_bg = -1;
|
window_current_style_bg = -1;
|
||||||
current_style_attr = 0;
|
window_current_style_attr = 0;
|
||||||
current_color_attr = 0;
|
window_current_color_attr = 0;
|
||||||
|
|
||||||
wattron (window, COLOR_PAIR(gui_color_get_pair (num_color)) |
|
wattron (window, COLOR_PAIR(gui_color_get_pair (num_color)) |
|
||||||
gui_color[num_color]->attributes);
|
gui_color[num_color]->attributes);
|
||||||
@ -252,7 +256,7 @@ gui_window_reset_style (WINDOW *window, int num_color)
|
|||||||
void
|
void
|
||||||
gui_window_set_color_style (WINDOW *window, int style)
|
gui_window_set_color_style (WINDOW *window, int style)
|
||||||
{
|
{
|
||||||
current_color_attr |= style;
|
window_current_color_attr |= style;
|
||||||
wattron (window, style);
|
wattron (window, style);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,7 +267,7 @@ gui_window_set_color_style (WINDOW *window, int style)
|
|||||||
void
|
void
|
||||||
gui_window_remove_color_style (WINDOW *window, int style)
|
gui_window_remove_color_style (WINDOW *window, int style)
|
||||||
{
|
{
|
||||||
current_color_attr &= !style;
|
window_current_color_attr &= !style;
|
||||||
wattroff (window, style);
|
wattroff (window, style);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,8 +278,8 @@ gui_window_remove_color_style (WINDOW *window, int style)
|
|||||||
void
|
void
|
||||||
gui_window_set_color (WINDOW *window, int fg, int bg)
|
gui_window_set_color (WINDOW *window, int fg, int bg)
|
||||||
{
|
{
|
||||||
current_style_fg = fg;
|
window_current_style_fg = fg;
|
||||||
current_style_bg = bg;
|
window_current_style_bg = bg;
|
||||||
|
|
||||||
if (((fg == -1) || (fg == 99))
|
if (((fg == -1) || (fg == 99))
|
||||||
&& ((bg == -1) || (bg == 99)))
|
&& ((bg == -1) || (bg == 99)))
|
||||||
@ -343,8 +347,8 @@ gui_window_set_custom_color_fg (WINDOW *window, int fg)
|
|||||||
|
|
||||||
if ((fg >= 0) && (fg < GUI_CURSES_NUM_WEECHAT_COLORS))
|
if ((fg >= 0) && (fg < GUI_CURSES_NUM_WEECHAT_COLORS))
|
||||||
{
|
{
|
||||||
current_attr = current_style_attr;
|
current_attr = window_current_style_attr;
|
||||||
current_bg = current_style_bg;
|
current_bg = window_current_style_bg;
|
||||||
gui_window_remove_color_style (window, A_BOLD);
|
gui_window_remove_color_style (window, A_BOLD);
|
||||||
gui_window_set_color_style (window, gui_weechat_colors[fg].attributes);
|
gui_window_set_color_style (window, gui_weechat_colors[fg].attributes);
|
||||||
gui_window_set_color (window,
|
gui_window_set_color (window,
|
||||||
@ -365,8 +369,8 @@ gui_window_set_custom_color_bg (WINDOW *window, int bg)
|
|||||||
|
|
||||||
if ((bg >= 0) && (bg < GUI_CURSES_NUM_WEECHAT_COLORS))
|
if ((bg >= 0) && (bg < GUI_CURSES_NUM_WEECHAT_COLORS))
|
||||||
{
|
{
|
||||||
current_attr = current_style_attr;
|
current_attr = window_current_style_attr;
|
||||||
current_fg = current_style_fg;
|
current_fg = window_current_style_fg;
|
||||||
gui_window_set_color_style (window, current_attr);
|
gui_window_set_color_style (window, current_attr);
|
||||||
gui_window_set_color (window, current_fg,
|
gui_window_set_color (window, current_fg,
|
||||||
gui_weechat_colors[bg].foreground);
|
gui_weechat_colors[bg].foreground);
|
||||||
@ -381,7 +385,7 @@ void
|
|||||||
gui_window_clrtoeol_with_current_bg (WINDOW *window)
|
gui_window_clrtoeol_with_current_bg (WINDOW *window)
|
||||||
{
|
{
|
||||||
wbkgdset (window,
|
wbkgdset (window,
|
||||||
' ' | COLOR_PAIR ((current_style_bg < 0) ? 63 : current_style_bg * 8));
|
' ' | COLOR_PAIR ((window_current_style_bg < 0) ? 63 : window_current_style_bg * 8));
|
||||||
wclrtoeol (window);
|
wclrtoeol (window);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user