mirror of
https://github.com/weechat/weechat.git
synced 2026-07-01 07:16:37 +02:00
Close all buffers created by a plugin when plugin is unloaded (bug #22978)
This commit is contained in:
+12
-12
@@ -564,6 +564,18 @@ plugin_remove (struct t_weechat_plugin *plugin)
|
||||
struct t_weechat_plugin *new_weechat_plugins;
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
|
||||
/* close buffers created by this plugin */
|
||||
for (ptr_buffer = gui_buffers; ptr_buffer;
|
||||
ptr_buffer = ptr_buffer->next_buffer)
|
||||
{
|
||||
if (ptr_buffer->plugin == plugin)
|
||||
{
|
||||
ptr_buffer->close_callback = NULL;
|
||||
ptr_buffer->close_callback_data = NULL;
|
||||
gui_buffer_close (ptr_buffer, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* remove plugin from list */
|
||||
if (last_weechat_plugin == plugin)
|
||||
last_weechat_plugin = plugin->prev_plugin;
|
||||
@@ -587,18 +599,6 @@ plugin_remove (struct t_weechat_plugin *plugin)
|
||||
/* remove all bar items */
|
||||
gui_bar_item_free_all_plugin (plugin);
|
||||
|
||||
/* remove pointer to this plugin on buffers */
|
||||
for (ptr_buffer = gui_buffers; ptr_buffer;
|
||||
ptr_buffer = ptr_buffer->next_buffer)
|
||||
{
|
||||
if (ptr_buffer->plugin == plugin)
|
||||
{
|
||||
ptr_buffer->plugin = NULL;
|
||||
ptr_buffer->close_callback = NULL;
|
||||
ptr_buffer->close_callback_data = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* free data */
|
||||
if (plugin->filename)
|
||||
free (plugin->filename);
|
||||
|
||||
Reference in New Issue
Block a user