1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-27 21:36:37 +02:00

Fix alignment problem for buffer name when a merged buffer is closed (bug #27617)

This commit is contained in:
Sebastien Helleu
2009-10-06 21:25:15 +02:00
parent 74fd27cc07
commit 5535ec5f46
3 changed files with 41 additions and 19 deletions
+35 -18
View File
@@ -1472,7 +1472,7 @@ void
gui_buffer_close (struct t_gui_buffer *buffer)
{
struct t_gui_window *ptr_window;
struct t_gui_buffer *ptr_buffer;
struct t_gui_buffer *ptr_buffer, *ptr_back_to_buffer;
int index;
struct t_gui_buffer_visited *ptr_buffer_visited;
@@ -1484,9 +1484,14 @@ gui_buffer_close (struct t_gui_buffer *buffer)
(void)(buffer->close_callback) (buffer->close_callback_data, buffer);
}
ptr_back_to_buffer = NULL;
/* first unmerge buffer if it is merged to at least one other buffer */
if (gui_buffer_count_merged_buffers (buffer->number) > 1)
{
ptr_back_to_buffer = gui_buffer_get_next_active_buffer (buffer);
gui_buffer_unmerge (buffer, -1);
}
if (!weechat_quit)
{
@@ -1515,26 +1520,29 @@ gui_buffer_close (struct t_gui_buffer *buffer)
/* switch to previous buffer */
if (gui_buffers != last_gui_buffer)
{
if (ptr_buffer_visited)
if (ptr_back_to_buffer)
{
gui_window_switch_to_buffer (ptr_window,
ptr_back_to_buffer,
1);
}
else if (ptr_buffer_visited)
{
gui_window_switch_to_buffer (ptr_window,
ptr_buffer_visited->buffer,
1);
}
else if (ptr_window->buffer->prev_buffer)
{
gui_window_switch_to_buffer (ptr_window,
ptr_window->buffer->prev_buffer,
1);
}
else
{
if (ptr_window->buffer->prev_buffer)
{
gui_window_switch_to_buffer (ptr_window,
ptr_window->buffer->prev_buffer,
1);
}
else
{
gui_window_switch_to_buffer (ptr_window,
last_gui_buffer,
1);
}
gui_window_switch_to_buffer (ptr_window,
last_gui_buffer,
1);
}
}
}
@@ -1891,12 +1899,14 @@ void
gui_buffer_unmerge (struct t_gui_buffer *buffer, int number)
{
int num_merged;
struct t_gui_buffer *ptr_buffer;
struct t_gui_buffer *ptr_buffer, *ptr_new_active_buffer;
/* if only one buffer then return */
if (gui_buffers == last_gui_buffer)
return;
ptr_new_active_buffer = NULL;
num_merged = gui_buffer_count_merged_buffers (buffer->number);
/* can't unmerge if buffer is not merged to at least one buffer */
@@ -1933,9 +1943,9 @@ gui_buffer_unmerge (struct t_gui_buffer *buffer, int number)
else
{
/* remove this buffer from mixed_lines, but keep other buffers merged */
ptr_buffer = gui_buffer_get_next_active_buffer (buffer);
if (ptr_buffer)
gui_buffer_set_active_buffer (ptr_buffer);
ptr_new_active_buffer = gui_buffer_get_next_active_buffer (buffer);
if (ptr_new_active_buffer)
gui_buffer_set_active_buffer (ptr_new_active_buffer);
gui_line_mixed_free_buffer (buffer);
buffer->mixed_lines = NULL;
buffer->lines = buffer->own_lines;
@@ -1986,6 +1996,13 @@ gui_buffer_unmerge (struct t_gui_buffer *buffer, int number)
}
gui_buffer_compute_num_displayed ();
if (ptr_new_active_buffer)
{
gui_line_compute_prefix_max_length (ptr_new_active_buffer->mixed_lines);
gui_line_compute_buffer_max_length (ptr_new_active_buffer,
ptr_new_active_buffer->mixed_lines);
}
gui_window_ask_refresh (1);
+3
View File
@@ -83,6 +83,9 @@ extern int gui_line_match_regex (struct t_gui_line *line,
extern int gui_line_match_tags (struct t_gui_line *line, int tags_count,
char **tags_array);
extern int gui_line_has_highlight (struct t_gui_line *line);
extern void gui_line_compute_buffer_max_length (struct t_gui_buffer *buffer,
struct t_gui_lines *lines);
extern void gui_line_compute_prefix_max_length (struct t_gui_lines *lines);
extern void gui_line_mixed_free_buffer (struct t_gui_buffer *buffer);
extern void gui_line_mixed_free_all (struct t_gui_buffer *buffer);
extern void gui_line_free (struct t_gui_buffer *buffer,