mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-10 10:01:13 +09:00
Browser: Update content filters if the config file changes
This commit is contained in:
parent
2575184242
commit
5d8cda59ae
Notes:
sideshowbarker
2024-07-17 18:35:15 +09:00
Author: https://github.com/sppmacd
Commit: 5d8cda59ae
Pull-request: https://github.com/SerenityOS/serenity/pull/12241
3 changed files with 23 additions and 0 deletions
|
@ -442,6 +442,11 @@ void Tab::context_menu_requested(const Gfx::IntPoint& screen_position)
|
||||||
m_tab_context_menu->popup(screen_position);
|
m_tab_context_menu->popup(screen_position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Tab::content_filters_changed()
|
||||||
|
{
|
||||||
|
m_web_content_view->set_content_filters(g_content_filters);
|
||||||
|
}
|
||||||
|
|
||||||
GUI::AbstractScrollableWidget& Tab::view()
|
GUI::AbstractScrollableWidget& Tab::view()
|
||||||
{
|
{
|
||||||
return *m_web_content_view;
|
return *m_web_content_view;
|
||||||
|
|
|
@ -49,6 +49,7 @@ public:
|
||||||
|
|
||||||
void did_become_active();
|
void did_become_active();
|
||||||
void context_menu_requested(const Gfx::IntPoint& screen_position);
|
void context_menu_requested(const Gfx::IntPoint& screen_position);
|
||||||
|
void content_filters_changed();
|
||||||
|
|
||||||
void action_entered(GUI::Action&);
|
void action_entered(GUI::Action&);
|
||||||
void action_left(GUI::Action&);
|
void action_left(GUI::Action&);
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "AK/IterationDecision.h"
|
||||||
|
#include "LibCore/FileWatcher.h"
|
||||||
#include <AK/StringBuilder.h>
|
#include <AK/StringBuilder.h>
|
||||||
#include <Applications/Browser/Browser.h>
|
#include <Applications/Browser/Browser.h>
|
||||||
#include <Applications/Browser/BrowserWindow.h>
|
#include <Applications/Browser/BrowserWindow.h>
|
||||||
|
@ -102,6 +104,21 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
Browser::CookieJar cookie_jar;
|
Browser::CookieJar cookie_jar;
|
||||||
auto window = Browser::BrowserWindow::construct(cookie_jar, first_url);
|
auto window = Browser::BrowserWindow::construct(cookie_jar, first_url);
|
||||||
|
|
||||||
|
auto content_filters_watcher = TRY(Core::FileWatcher::create());
|
||||||
|
content_filters_watcher->on_change = [&](Core::FileWatcherEvent const&) {
|
||||||
|
dbgln("Reloading content filters because config file changed");
|
||||||
|
auto error = load_content_filters();
|
||||||
|
if (error.is_error()) {
|
||||||
|
dbgln("Reloading content filters failed: {}", error.release_error());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
window->tab_widget().for_each_child_of_type<Browser::Tab>([](auto& tab) {
|
||||||
|
tab.content_filters_changed();
|
||||||
|
return IterationDecision::Continue;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
TRY(content_filters_watcher->add_watch(String::formatted("{}/BrowserContentFilters.txt", Core::StandardPaths::config_directory()), Core::FileWatcherEvent::Type::ContentModified));
|
||||||
|
|
||||||
app->on_action_enter = [&](GUI::Action& action) {
|
app->on_action_enter = [&](GUI::Action& action) {
|
||||||
if (auto* browser_window = dynamic_cast<Browser::BrowserWindow*>(app->active_window())) {
|
if (auto* browser_window = dynamic_cast<Browser::BrowserWindow*>(app->active_window())) {
|
||||||
auto* tab = static_cast<Browser::Tab*>(browser_window->tab_widget().active_widget());
|
auto* tab = static_cast<Browser::Tab*>(browser_window->tab_widget().active_widget());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue