core: fix char displayed at the intersection of three windows (bug #39331)

This commit is contained in:
Sebastien Helleu 2013-07-10 08:39:44 +02:00
parent 3744787ec0
commit ff09807c10
2 changed files with 27 additions and 20 deletions

View File

@ -1,7 +1,7 @@
WeeChat ChangeLog WeeChat ChangeLog
================= =================
Sébastien Helleu <flashcode@flashtux.org> Sébastien Helleu <flashcode@flashtux.org>
v0.4.2-dev, 2013-07-08 v0.4.2-dev, 2013-07-10
This document lists all changes for each version. This document lists all changes for each version.
@ -14,6 +14,7 @@ http://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes]
Version 0.4.2 (under dev!) Version 0.4.2 (under dev!)
-------------------------- --------------------------
* core: fix char displayed at the intersection of three windows (bug #39331)
* core: fix crash in evaluation of expression when reading a string in hdata * core: fix crash in evaluation of expression when reading a string in hdata
with a NULL value (bug #39419) with a NULL value (bug #39419)
* core: fix display bugs with some UTF-8 chars that truncates messages displayed * core: fix display bugs with some UTF-8 chars that truncates messages displayed

View File

@ -966,7 +966,7 @@ gui_window_calculate_pos_size (struct t_gui_window *window)
void void
gui_window_draw_separators (struct t_gui_window *window) gui_window_draw_separators (struct t_gui_window *window)
{ {
int separator; int separator_char, separator_horizontal, separator_vertical, x, width;
/* remove separators */ /* remove separators */
if (GUI_WINDOW_OBJECTS(window)->win_separator_horiz) if (GUI_WINDOW_OBJECTS(window)->win_separator_horiz)
@ -980,33 +980,39 @@ gui_window_draw_separators (struct t_gui_window *window)
GUI_WINDOW_OBJECTS(window)->win_separator_vertic = NULL; GUI_WINDOW_OBJECTS(window)->win_separator_vertic = NULL;
} }
/* check if separators must be displayed */
separator_horizontal = (CONFIG_BOOLEAN(config_look_window_separator_horizontal)
&& (window->win_y + window->win_height <
gui_window_get_height () - gui_bar_root_get_size (NULL, GUI_BAR_POSITION_BOTTOM) - 1));
separator_vertical = (CONFIG_BOOLEAN(config_look_window_separator_vertical)
&& (window->win_x > gui_bar_root_get_size (NULL, GUI_BAR_POSITION_LEFT)));
/* create/draw horizontal separator */ /* create/draw horizontal separator */
if (CONFIG_BOOLEAN(config_look_window_separator_horizontal) if (separator_horizontal)
&& (window->win_y + window->win_height <
gui_window_get_height () - gui_bar_root_get_size (NULL, GUI_BAR_POSITION_BOTTOM) - 1))
{ {
x = (separator_vertical) ? window->win_x - 1 : window->win_x;
width = (separator_vertical) ? window->win_width + 1 : window->win_width;
GUI_WINDOW_OBJECTS(window)->win_separator_horiz = newwin (1, GUI_WINDOW_OBJECTS(window)->win_separator_horiz = newwin (1,
window->win_width, width,
window->win_y + window->win_height, window->win_y + window->win_height,
window->win_x); x);
gui_window_set_weechat_color (GUI_WINDOW_OBJECTS(window)->win_separator_horiz, gui_window_set_weechat_color (GUI_WINDOW_OBJECTS(window)->win_separator_horiz,
GUI_COLOR_SEPARATOR); GUI_COLOR_SEPARATOR);
separator = ACS_HLINE; separator_char = ACS_HLINE;
if (CONFIG_STRING(config_look_separator_horizontal) if (CONFIG_STRING(config_look_separator_horizontal)
&& CONFIG_STRING(config_look_separator_horizontal)[0]) && CONFIG_STRING(config_look_separator_horizontal)[0])
{ {
separator = utf8_char_int (CONFIG_STRING(config_look_separator_horizontal)); separator_char = utf8_char_int (CONFIG_STRING(config_look_separator_horizontal));
if (separator > 127) if (separator_char > 127)
separator = ACS_VLINE; separator_char = ACS_VLINE;
} }
mvwhline (GUI_WINDOW_OBJECTS(window)->win_separator_horiz, 0, 0, mvwhline (GUI_WINDOW_OBJECTS(window)->win_separator_horiz, 0, 0,
separator, window->win_width); separator_char, width);
wnoutrefresh (GUI_WINDOW_OBJECTS(window)->win_separator_horiz); wnoutrefresh (GUI_WINDOW_OBJECTS(window)->win_separator_horiz);
} }
/* create/draw vertical separator */ /* create/draw vertical separator */
if (CONFIG_BOOLEAN(config_look_window_separator_vertical) if (separator_vertical)
&& (window->win_x > gui_bar_root_get_size (NULL, GUI_BAR_POSITION_LEFT)))
{ {
GUI_WINDOW_OBJECTS(window)->win_separator_vertic = newwin (window->win_height, GUI_WINDOW_OBJECTS(window)->win_separator_vertic = newwin (window->win_height,
1, 1,
@ -1014,16 +1020,16 @@ gui_window_draw_separators (struct t_gui_window *window)
window->win_x - 1); window->win_x - 1);
gui_window_set_weechat_color (GUI_WINDOW_OBJECTS(window)->win_separator_vertic, gui_window_set_weechat_color (GUI_WINDOW_OBJECTS(window)->win_separator_vertic,
GUI_COLOR_SEPARATOR); GUI_COLOR_SEPARATOR);
separator = ACS_VLINE; separator_char = ACS_VLINE;
if (CONFIG_STRING(config_look_separator_vertical) if (CONFIG_STRING(config_look_separator_vertical)
&& CONFIG_STRING(config_look_separator_vertical)[0]) && CONFIG_STRING(config_look_separator_vertical)[0])
{ {
separator = utf8_char_int (CONFIG_STRING(config_look_separator_vertical)); separator_char = utf8_char_int (CONFIG_STRING(config_look_separator_vertical));
if (separator > 127) if (separator_char > 127)
separator = ACS_VLINE; separator_char = ACS_VLINE;
} }
mvwvline (GUI_WINDOW_OBJECTS(window)->win_separator_vertic, 0, 0, mvwvline (GUI_WINDOW_OBJECTS(window)->win_separator_vertic, 0, 0,
separator, window->win_height); separator_char, window->win_height);
wnoutrefresh (GUI_WINDOW_OBJECTS(window)->win_separator_vertic); wnoutrefresh (GUI_WINDOW_OBJECTS(window)->win_separator_vertic);
} }
} }
@ -1735,7 +1741,7 @@ gui_window_split_vertical (struct t_gui_window *window, int percentage)
} }
/* /*
* Resizes window. * Resizes a window.
*/ */
void void