From 6f65f647f8fbe8a1d45b0bd6779d7c3bff91ba88 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Thu, 30 Oct 2008 18:09:45 +0100 Subject: [PATCH] Fix clear of buffers with free content (allowed, but not from user with /buffer clear) --- src/core/wee-command.c | 7 +++++-- src/gui/gui-buffer.c | 34 ++++++++++++++++------------------ 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/core/wee-command.c b/src/core/wee-command.c index cbd763792..a5d6e73e5 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -529,14 +529,17 @@ command_buffer (void *data, struct t_gui_buffer *buffer, if (error && !error[0]) { ptr_buffer = gui_buffer_search_by_number (number); - if (ptr_buffer) + if (ptr_buffer && (ptr_buffer->type == GUI_BUFFER_TYPE_FORMATED)) gui_buffer_clear (ptr_buffer); } } } } else - gui_buffer_clear (buffer); + { + if (buffer->type == GUI_BUFFER_TYPE_FORMATED) + gui_buffer_clear (buffer); + } return WEECHAT_RC_OK; } diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c index 59736806f..152ad0d5d 100644 --- a/src/gui/gui-buffer.c +++ b/src/gui/gui-buffer.c @@ -1137,27 +1137,24 @@ gui_buffer_clear (struct t_gui_buffer *buffer) if (!buffer) return; - if (buffer->type == GUI_BUFFER_TYPE_FORMATED) + /* remove buffer from hotlist */ + gui_hotlist_remove_buffer (buffer); + + /* remove all lines */ + gui_chat_line_free_all (buffer); + + /* remove any scroll for buffer */ + for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window) { - /* remove buffer from hotlist */ - gui_hotlist_remove_buffer (buffer); - - /* remove all lines */ - gui_chat_line_free_all (buffer); - - /* remove any scroll for buffer */ - for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window) + if (ptr_win->buffer == buffer) { - if (ptr_win->buffer == buffer) - { - ptr_win->first_line_displayed = 1; - ptr_win->start_line = NULL; - ptr_win->start_line_pos = 0; - } + ptr_win->first_line_displayed = 1; + ptr_win->start_line = NULL; + ptr_win->start_line_pos = 0; } - - gui_buffer_ask_chat_refresh (buffer, 2); } + + gui_buffer_ask_chat_refresh (buffer, 2); } /* @@ -1172,7 +1169,8 @@ gui_buffer_clear_all () for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer) { - gui_buffer_clear (ptr_buffer); + if (ptr_buffer->type == GUI_BUFFER_TYPE_FORMATED) + gui_buffer_clear (ptr_buffer); } }