mirror of
https://github.com/weechat/weechat.git
synced 2026-06-27 21:36:37 +02:00
Free all buffers when exiting from WeeChat
This commit is contained in:
@@ -346,7 +346,7 @@ gui_line_free (t_gui_line *line)
|
||||
*/
|
||||
|
||||
void
|
||||
gui_buffer_free (t_gui_buffer *buffer)
|
||||
gui_buffer_free (t_gui_buffer *buffer, int switch_to_another)
|
||||
{
|
||||
t_gui_window *ptr_win;
|
||||
t_gui_buffer *ptr_buffer;
|
||||
@@ -355,11 +355,14 @@ gui_buffer_free (t_gui_buffer *buffer)
|
||||
|
||||
create_new = (buffer->server || buffer->channel);
|
||||
|
||||
for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window)
|
||||
if (switch_to_another)
|
||||
{
|
||||
if ((buffer == ptr_win->buffer) &&
|
||||
((buffer->next_buffer) || (buffer->prev_buffer)))
|
||||
gui_switch_to_previous_buffer (ptr_win);
|
||||
for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window)
|
||||
{
|
||||
if ((buffer == ptr_win->buffer) &&
|
||||
((buffer->next_buffer) || (buffer->prev_buffer)))
|
||||
gui_switch_to_previous_buffer (ptr_win);
|
||||
}
|
||||
}
|
||||
|
||||
/* decrease buffer number for all next buffers */
|
||||
@@ -393,7 +396,7 @@ gui_buffer_free (t_gui_buffer *buffer)
|
||||
free (buffer);
|
||||
|
||||
/* always at least one buffer */
|
||||
if (!gui_buffers && create_new)
|
||||
if (!gui_buffers && create_new && switch_to_another)
|
||||
(void) gui_buffer_new (gui_windows, NULL, NULL, 1);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -230,6 +230,7 @@ extern void gui_buffer_clear (t_gui_buffer *);
|
||||
extern void gui_buffer_clear_all ();
|
||||
extern void gui_infobar_printf (int, int, char *, ...);
|
||||
extern void gui_infobar_remove ();
|
||||
extern void gui_buffer_free (t_gui_buffer *, int);
|
||||
extern t_gui_line *gui_new_line (t_gui_buffer *);
|
||||
extern t_gui_message *gui_new_message (t_gui_buffer *);
|
||||
extern void gui_optimize_input_buffer_size (t_gui_buffer *);
|
||||
@@ -264,7 +265,6 @@ extern void gui_pre_init (int *, char **[]);
|
||||
extern void gui_init_colors ();
|
||||
extern void gui_set_window_title ();
|
||||
extern void gui_init ();
|
||||
extern void gui_buffer_free (t_gui_buffer *);
|
||||
extern void gui_end ();
|
||||
extern void gui_printf_color_type (/*@null@*/ t_gui_buffer *, int, int, char *, ...);
|
||||
extern void gui_main_loop ();
|
||||
|
||||
+1
-1
@@ -818,7 +818,7 @@ irc_cmd_recv_part (t_irc_server *server, char *host, char *arguments)
|
||||
if (strcmp (ptr_nick->nick, server->nick) == 0)
|
||||
{
|
||||
/* part request was issued by local client */
|
||||
gui_buffer_free (ptr_channel->buffer);
|
||||
gui_buffer_free (ptr_channel->buffer, 1);
|
||||
channel_free (server, ptr_channel);
|
||||
gui_draw_buffer_status (gui_current_window->buffer, 1);
|
||||
gui_draw_buffer_input (gui_current_window->buffer, 1);
|
||||
|
||||
+1
-1
@@ -686,7 +686,7 @@ irc_cmd_send_part (t_irc_server *server, char *arguments)
|
||||
if (BUFFER_IS_PRIVATE(gui_current_window->buffer))
|
||||
{
|
||||
ptr_channel = CHANNEL(gui_current_window->buffer);
|
||||
gui_buffer_free (ptr_channel->buffer);
|
||||
gui_buffer_free (ptr_channel->buffer, 1);
|
||||
channel_free (server, ptr_channel);
|
||||
gui_draw_buffer_status (gui_current_window->buffer, 1);
|
||||
gui_draw_buffer_input (gui_current_window->buffer, 1);
|
||||
|
||||
@@ -270,8 +270,6 @@ server_free (t_irc_server *server)
|
||||
(server->next_server)->prev_server = server->prev_server;
|
||||
|
||||
server_destroy (server);
|
||||
if (server->buffer)
|
||||
gui_buffer_free (server->buffer);
|
||||
free (server);
|
||||
irc_servers = new_irc_servers;
|
||||
}
|
||||
|
||||
@@ -346,7 +346,7 @@ gui_line_free (t_gui_line *line)
|
||||
*/
|
||||
|
||||
void
|
||||
gui_buffer_free (t_gui_buffer *buffer)
|
||||
gui_buffer_free (t_gui_buffer *buffer, int switch_to_another)
|
||||
{
|
||||
t_gui_window *ptr_win;
|
||||
t_gui_buffer *ptr_buffer;
|
||||
@@ -355,11 +355,14 @@ gui_buffer_free (t_gui_buffer *buffer)
|
||||
|
||||
create_new = (buffer->server || buffer->channel);
|
||||
|
||||
for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window)
|
||||
if (switch_to_another)
|
||||
{
|
||||
if ((buffer == ptr_win->buffer) &&
|
||||
((buffer->next_buffer) || (buffer->prev_buffer)))
|
||||
gui_switch_to_previous_buffer (ptr_win);
|
||||
for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window)
|
||||
{
|
||||
if ((buffer == ptr_win->buffer) &&
|
||||
((buffer->next_buffer) || (buffer->prev_buffer)))
|
||||
gui_switch_to_previous_buffer (ptr_win);
|
||||
}
|
||||
}
|
||||
|
||||
/* decrease buffer number for all next buffers */
|
||||
@@ -393,7 +396,7 @@ gui_buffer_free (t_gui_buffer *buffer)
|
||||
free (buffer);
|
||||
|
||||
/* always at least one buffer */
|
||||
if (!gui_buffers && create_new)
|
||||
if (!gui_buffers && create_new && switch_to_another)
|
||||
(void) gui_buffer_new (gui_windows, NULL, NULL, 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -230,6 +230,7 @@ extern void gui_buffer_clear (t_gui_buffer *);
|
||||
extern void gui_buffer_clear_all ();
|
||||
extern void gui_infobar_printf (int, int, char *, ...);
|
||||
extern void gui_infobar_remove ();
|
||||
extern void gui_buffer_free (t_gui_buffer *, int);
|
||||
extern t_gui_line *gui_new_line (t_gui_buffer *);
|
||||
extern t_gui_message *gui_new_message (t_gui_buffer *);
|
||||
extern void gui_optimize_input_buffer_size (t_gui_buffer *);
|
||||
@@ -264,7 +265,6 @@ extern void gui_pre_init (int *, char **[]);
|
||||
extern void gui_init_colors ();
|
||||
extern void gui_set_window_title ();
|
||||
extern void gui_init ();
|
||||
extern void gui_buffer_free (t_gui_buffer *);
|
||||
extern void gui_end ();
|
||||
extern void gui_printf_color_type (/*@null@*/ t_gui_buffer *, int, int, char *, ...);
|
||||
extern void gui_main_loop ();
|
||||
|
||||
@@ -818,7 +818,7 @@ irc_cmd_recv_part (t_irc_server *server, char *host, char *arguments)
|
||||
if (strcmp (ptr_nick->nick, server->nick) == 0)
|
||||
{
|
||||
/* part request was issued by local client */
|
||||
gui_buffer_free (ptr_channel->buffer);
|
||||
gui_buffer_free (ptr_channel->buffer, 1);
|
||||
channel_free (server, ptr_channel);
|
||||
gui_draw_buffer_status (gui_current_window->buffer, 1);
|
||||
gui_draw_buffer_input (gui_current_window->buffer, 1);
|
||||
|
||||
@@ -686,7 +686,7 @@ irc_cmd_send_part (t_irc_server *server, char *arguments)
|
||||
if (BUFFER_IS_PRIVATE(gui_current_window->buffer))
|
||||
{
|
||||
ptr_channel = CHANNEL(gui_current_window->buffer);
|
||||
gui_buffer_free (ptr_channel->buffer);
|
||||
gui_buffer_free (ptr_channel->buffer, 1);
|
||||
channel_free (server, ptr_channel);
|
||||
gui_draw_buffer_status (gui_current_window->buffer, 1);
|
||||
gui_draw_buffer_input (gui_current_window->buffer, 1);
|
||||
|
||||
@@ -270,8 +270,6 @@ server_free (t_irc_server *server)
|
||||
(server->next_server)->prev_server = server->prev_server;
|
||||
|
||||
server_destroy (server);
|
||||
if (server->buffer)
|
||||
gui_buffer_free (server->buffer);
|
||||
free (server);
|
||||
irc_servers = new_irc_servers;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user