summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSébastien Helleu <flashcode@flashtux.org>2019-02-23 11:17:02 +0100
committerSébastien Helleu <flashcode@flashtux.org>2019-02-23 11:17:02 +0100
commit7b79fbbd09edfeeaf106937437205800aeecee08 (patch)
tree049d56d8d392117261fa64ee115cbc9201bf13b3 /src
parentbdc905df168ef22e2ecaf1914481182c95ad63c6 (diff)
parent8ac4a75969ede80c9d3c9900f376c7d6deb71b07 (diff)
downloadweechat-7b79fbbd09edfeeaf106937437205800aeecee08.zip
Merge remote-tracking branch 'origin/pr/1311'
Diffstat (limited to 'src')
-rw-r--r--src/core/wee-command.c13
-rw-r--r--src/core/wee-config.c2
-rw-r--r--src/gui/gui-filter.c17
-rw-r--r--src/gui/gui-filter.h2
4 files changed, 22 insertions, 12 deletions
diff --git a/src/core/wee-command.c b/src/core/wee-command.c
index 9f4408308..aceee8605 100644
--- a/src/core/wee-command.c
+++ b/src/core/wee-command.c
@@ -2177,7 +2177,7 @@ COMMAND_CALLBACK(filter)
if (!ptr_filter->enabled)
{
ptr_filter->enabled = 1;
- gui_filter_all_buffers ();
+ gui_filter_all_buffers (ptr_filter);
gui_chat_printf_date_tags (NULL, 0,
GUI_FILTER_TAG_NO_FILTER,
_("Filter \"%s\" enabled"),
@@ -2235,7 +2235,7 @@ COMMAND_CALLBACK(filter)
if (ptr_filter->enabled)
{
ptr_filter->enabled = 0;
- gui_filter_all_buffers ();
+ gui_filter_all_buffers (ptr_filter);
gui_chat_printf_date_tags (NULL, 0,
GUI_FILTER_TAG_NO_FILTER,
_("Filter \"%s\" disabled"),
@@ -2289,7 +2289,7 @@ COMMAND_CALLBACK(filter)
if (ptr_filter)
{
ptr_filter->enabled ^= 1;
- gui_filter_all_buffers ();
+ gui_filter_all_buffers (ptr_filter);
}
else
{
@@ -2330,7 +2330,7 @@ COMMAND_CALLBACK(filter)
argv_eol[5]);
if (ptr_filter)
{
- gui_filter_all_buffers ();
+ gui_filter_all_buffers (ptr_filter);
gui_chat_printf (NULL, "");
gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER,
_("Filter \"%s\" added:"),
@@ -2384,7 +2384,7 @@ COMMAND_CALLBACK(filter)
if (gui_filters)
{
gui_filter_free_all ();
- gui_filter_all_buffers ();
+ gui_filter_all_buffers (NULL);
gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER,
_("All filters have been deleted"));
}
@@ -2399,8 +2399,9 @@ COMMAND_CALLBACK(filter)
ptr_filter = gui_filter_search_by_name (argv[2]);
if (ptr_filter)
{
+ ptr_filter->enabled = 0; // disable before refilter
+ gui_filter_all_buffers (ptr_filter); // refilter before free
gui_filter_free (ptr_filter);
- gui_filter_all_buffers ();
gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER,
_("Filter \"%s\" deleted"),
argv[2]);
diff --git a/src/core/wee-config.c b/src/core/wee-config.c
index 45fda9c0d..7516dfae0 100644
--- a/src/core/wee-config.c
+++ b/src/core/wee-config.c
@@ -1359,7 +1359,7 @@ config_weechat_init_after_read ()
}
/* apply filters on all buffers */
- gui_filter_all_buffers ();
+ gui_filter_all_buffers (NULL);
config_change_look_nick_color_force (NULL, NULL, NULL);
}
diff --git a/src/gui/gui-filter.c b/src/gui/gui-filter.c
index b839744a6..325c851ff 100644
--- a/src/gui/gui-filter.c
+++ b/src/gui/gui-filter.c
@@ -186,17 +186,26 @@ gui_filter_buffer (struct t_gui_buffer *buffer,
/*
* Filters all buffers, using message filters.
+ *
+ * If filter is NULL, filters all buffers.
+ * If filter is not NULL, filters only buffers matched by this filter.
*/
void
-gui_filter_all_buffers ()
+gui_filter_all_buffers (struct t_gui_filter *filter)
{
struct t_gui_buffer *ptr_buffer;
for (ptr_buffer = gui_buffers; ptr_buffer;
ptr_buffer = ptr_buffer->next_buffer)
{
- gui_filter_buffer (ptr_buffer, NULL);
+ if (!filter
+ || gui_buffer_match_list_split (ptr_buffer,
+ filter->num_buffers,
+ filter->buffers))
+ {
+ gui_filter_buffer (ptr_buffer, NULL);
+ }
}
}
@@ -210,7 +219,7 @@ gui_filter_global_enable ()
if (!gui_filters_enabled)
{
gui_filters_enabled = 1;
- gui_filter_all_buffers ();
+ gui_filter_all_buffers (NULL);
(void) hook_signal_send ("filters_enabled",
WEECHAT_HOOK_SIGNAL_STRING, NULL);
}
@@ -226,7 +235,7 @@ gui_filter_global_disable ()
if (gui_filters_enabled)
{
gui_filters_enabled = 0;
- gui_filter_all_buffers ();
+ gui_filter_all_buffers (NULL);
(void) hook_signal_send ("filters_disabled",
WEECHAT_HOOK_SIGNAL_STRING, NULL);
}
diff --git a/src/gui/gui-filter.h b/src/gui/gui-filter.h
index ee2888211..e426262f5 100644
--- a/src/gui/gui-filter.h
+++ b/src/gui/gui-filter.h
@@ -56,7 +56,7 @@ extern int gui_filters_enabled;
extern int gui_filter_check_line (struct t_gui_line_data *line_data);
extern void gui_filter_buffer (struct t_gui_buffer *buffer,
struct t_gui_line_data *line_data);
-extern void gui_filter_all_buffers ();
+extern void gui_filter_all_buffers (struct t_gui_filter *filter);
extern void gui_filter_global_enable ();
extern void gui_filter_global_disable ();
extern struct t_gui_filter *gui_filter_search_by_name (const char *name);