1
0
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:
Sebastien Helleu
2004-07-10 12:29:20 +00:00
parent ab393805fb
commit 4c660ad565
10 changed files with 24 additions and 22 deletions
+9 -6
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
-2
View File
@@ -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;
}
+9 -6
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
-2
View File
@@ -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;
}