diff --git a/Libraries/LibWebView/Application.cpp b/Libraries/LibWebView/Application.cpp index a9cb035eea..91e05bb7b0 100644 --- a/Libraries/LibWebView/Application.cpp +++ b/Libraries/LibWebView/Application.cpp @@ -68,11 +68,6 @@ struct ApplicationSettingsObserver final : public SettingsObserver { Application::the().tab_settings_changed({}); } - virtual void show_bookmarks_bar_changed() override - { - Application::the().show_bookmarks_bar_changed({}); - } - virtual void browsing_data_settings_changed() override { auto const& browsing_data_settings = Application::settings().browsing_data_settings(); @@ -1415,11 +1410,11 @@ void Application::initialize_actions() m_bookmarks_menu->add_action(*m_toggle_bookmark_action); update_bookmark_action_for_current_web_view(); - m_toggle_bookmark_bar_action = Action::create("Toggle Bookmarks Bar"sv, ActionID::ToggleBookmarksBar, [this]() { + m_toggle_bookmark_bar_action = Action::create_checkable("Show Bookmarks Bar"sv, ActionID::ToggleBookmarksBar, [this]() { m_settings.set_show_bookmarks_bar(!m_settings.show_bookmarks_bar()); }); + m_toggle_bookmark_bar_action->set_checked(m_settings.show_bookmarks_bar()); m_bookmarks_menu->add_action(*m_toggle_bookmark_bar_action); - update_bookmarks_bar_action(); m_bookmarks_menu->add_separator(); m_bookmarks_menu_static_size = m_bookmarks_menu->size(); @@ -1653,17 +1648,6 @@ void Application::bookmarks_changed(Badge) rebuild_bookmarks_menu(); } -void Application::update_bookmarks_bar_action() -{ - m_toggle_bookmark_bar_action->set_text(m_settings.show_bookmarks_bar() ? "Hide Bookmark Bar"sv : "Show Bookmark Bar"sv); -} - -void Application::show_bookmarks_bar_changed(Badge) -{ - update_bookmarks_bar_action(); - update_bookmarks_bar_display(m_settings.show_bookmarks_bar()); -} - void Application::create_bookmark_menu_items(Optional data) { auto const& [menu, items, target_folder_id] = data.ensure([&]() -> MenuData { diff --git a/Libraries/LibWebView/Application.h b/Libraries/LibWebView/Application.h index 345f049489..be4a8fa401 100644 --- a/Libraries/LibWebView/Application.h +++ b/Libraries/LibWebView/Application.h @@ -220,7 +220,6 @@ protected: virtual void update_tabs_display() const { } virtual void rebuild_bookmarks_menu() const { } - virtual void update_bookmarks_bar_display([[maybe_unused]] bool show_bookmarks_bar) const { } virtual void on_recently_closed_entries_changed() const { } struct BookmarkID { @@ -256,9 +255,7 @@ private: ErrorOr load_content_blocker_lists(); void initialize_actions(); - void update_vertical_tabs_action(); - void update_bookmarks_bar_action(); struct MenuData { Menu& menu; diff --git a/UI/AppKit/Application/Application.h b/UI/AppKit/Application/Application.h index 5a1836ad2e..0a0ae0c2c3 100644 --- a/UI/AppKit/Application/Application.h +++ b/UI/AppKit/Application/Application.h @@ -33,7 +33,6 @@ private: virtual void insert_clipboard_entry(Web::Clipboard::SystemClipboardRepresentation) override; virtual void rebuild_bookmarks_menu() const override; - virtual void update_bookmarks_bar_display(bool) const override; virtual void show_bookmark_context_menu(Gfx::IntPoint, Optional, Optional target_folder_id) override; virtual Optional bookmark_item_id_for_context_menu() const override; virtual NonnullRefPtr display_add_bookmark_dialog() const override; diff --git a/UI/AppKit/Application/Application.mm b/UI/AppKit/Application/Application.mm index f4cb9103b5..b5aa93a2b9 100644 --- a/UI/AppKit/Application/Application.mm +++ b/UI/AppKit/Application/Application.mm @@ -170,12 +170,6 @@ void Application::rebuild_bookmarks_menu() const [delegate rebuildBookmarksMenu]; } -void Application::update_bookmarks_bar_display(bool show_bookmarks_bar) const -{ - ApplicationDelegate* delegate = [NSApp delegate]; - [delegate updateBookmarksBarDisplay:show_bookmarks_bar]; -} - void Application::show_bookmark_context_menu(Gfx::IntPoint content_position, Optional item, Optional target_folder_id) { ApplicationDelegate* delegate = [NSApp delegate]; diff --git a/UI/AppKit/Application/ApplicationDelegate.h b/UI/AppKit/Application/ApplicationDelegate.h index d896837f79..073e33fd8f 100644 --- a/UI/AppKit/Application/ApplicationDelegate.h +++ b/UI/AppKit/Application/ApplicationDelegate.h @@ -38,7 +38,6 @@ - (void)removeTab:(nonnull TabController*)controller; - (void)rebuildBookmarksMenu; -- (void)updateBookmarksBarDisplay:(bool)show_bookmarks_bar; - (void)onDevtoolsEnabled; - (void)onDevtoolsDisabled; diff --git a/UI/AppKit/Application/ApplicationDelegate.mm b/UI/AppKit/Application/ApplicationDelegate.mm index 0b006aeb35..cab984ac1e 100644 --- a/UI/AppKit/Application/ApplicationDelegate.mm +++ b/UI/AppKit/Application/ApplicationDelegate.mm @@ -146,15 +146,6 @@ } } -- (void)updateBookmarksBarDisplay:(bool)show_bookmarks_bar -{ - for (TabController* controller in self.managed_tabs) { - if (auto* tab = (Tab*)[controller window]; ([tab styleMask] & NSWindowStyleMaskFullScreen) == 0) { - [tab updateBookmarksBarDisplay:show_bookmarks_bar]; - } - } -} - - (void)onDevtoolsEnabled { if (!self.info_bar) { diff --git a/UI/AppKit/Interface/Tab.mm b/UI/AppKit/Interface/Tab.mm index 2698d169b1..e2b96bcde4 100644 --- a/UI/AppKit/Interface/Tab.mm +++ b/UI/AppKit/Interface/Tab.mm @@ -33,18 +33,17 @@ static constexpr NSUInteger const TAB_LOADING_SPINNER_SEGMENT_COUNT = 12; class TabSettingsObserver final : public WebView::SettingsObserver { public: - explicit TabSettingsObserver(Function callback) - : m_callback(move(callback)) + explicit TabSettingsObserver(Tab* tab) + : m_tab(tab) { } - virtual void config_variable_changed(WebView::ConfigVariableID variable) override - { - m_callback(variable); - } - private: - Function m_callback; + // These are forward-declared so that they may access non-public Tab methods. + virtual void show_bookmarks_bar_changed() override; + virtual void config_variable_changed(WebView::ConfigVariableID variable) override; + + __weak Tab* m_tab { nil }; }; static NSImage* tab_loading_spinner_icon(NSUInteger frame) @@ -141,20 +140,13 @@ static NSImage* tab_loading_spinner_icon(NSUInteger frame) self.favicon = [Tab defaultFavicon]; self.title = @"New Tab"; - __weak Tab* weak_self = self; - m_settings_observer = make([weak_self](WebView::ConfigVariableID variable) { - if (variable != WebView::ConfigVariableID::ShowWebContentProcessIDInTabTitle) - return; - Tab* strong_self = weak_self; - if (strong_self == nil) - return; - [strong_self updateTabTitleAndFavicon]; - }); [self updateTabTitleAndFavicon]; [self setTitleVisibility:NSWindowTitleHidden]; [self setIsVisible:YES]; + m_settings_observer = make(self); + auto* bookmarks_bar = [[BookmarksBar alloc] init]; self.bookmarks_bar_controller = [[NSTitlebarAccessoryViewController alloc] init]; [self.bookmarks_bar_controller setView:bookmarks_bar]; @@ -477,3 +469,14 @@ static NSImage* tab_loading_spinner_icon(NSUInteger frame) } @end + +void TabSettingsObserver::show_bookmarks_bar_changed() +{ + [m_tab updateBookmarksBarDisplay:WebView::Application::settings().show_bookmarks_bar()]; +} + +void TabSettingsObserver::config_variable_changed(WebView::ConfigVariableID variable) +{ + if (variable == WebView::ConfigVariableID::ShowWebContentProcessIDInTabTitle) + [m_tab updateTabTitleAndFavicon]; +} diff --git a/UI/Gtk/Application.cpp b/UI/Gtk/Application.cpp index 1b92f1ad9b..117f789061 100644 --- a/UI/Gtk/Application.cpp +++ b/UI/Gtk/Application.cpp @@ -287,10 +287,6 @@ void Application::rebuild_bookmarks_menu() const { } -void Application::update_bookmarks_bar_display(bool) const -{ -} - void Application::on_devtools_enabled() const { WebView::Application::on_devtools_enabled(); diff --git a/UI/Gtk/Application.h b/UI/Gtk/Application.h index 33e36159c4..dcc186b2d8 100644 --- a/UI/Gtk/Application.h +++ b/UI/Gtk/Application.h @@ -60,7 +60,6 @@ private: virtual bool should_capture_web_content_output() const override { return false; } virtual void rebuild_bookmarks_menu() const override; - virtual void update_bookmarks_bar_display(bool) const override; virtual void on_devtools_enabled() const override; virtual void on_devtools_disabled() const override; diff --git a/UI/Qt/Application.cpp b/UI/Qt/Application.cpp index 203a646b58..74406a5d89 100644 --- a/UI/Qt/Application.cpp +++ b/UI/Qt/Application.cpp @@ -319,14 +319,6 @@ void Application::rebuild_bookmarks_menu() const } } -void Application::update_bookmarks_bar_display(bool show_bookmarks_bar) const -{ - for (auto* widget : QApplication::topLevelWidgets()) { - if (auto* window = as_if(widget)) - window->update_bookmarks_bar_display(show_bookmarks_bar); - } -} - void Application::update_reopen_recently_closed_actions() const { for (auto* widget : QApplication::topLevelWidgets()) { diff --git a/UI/Qt/Application.h b/UI/Qt/Application.h index d2a494b857..68831c370c 100644 --- a/UI/Qt/Application.h +++ b/UI/Qt/Application.h @@ -64,7 +64,6 @@ private: virtual void update_tabs_display() const override; virtual void rebuild_bookmarks_menu() const override; - virtual void update_bookmarks_bar_display(bool) const override; virtual void show_bookmark_context_menu(Gfx::IntPoint, Optional, Optional target_folder_id) override; virtual Optional bookmark_item_id_for_context_menu() const override; virtual NonnullRefPtr display_add_bookmark_dialog() const override; diff --git a/UI/Qt/BrowserWindow.cpp b/UI/Qt/BrowserWindow.cpp index d1a5d7e7ed..0d6541f19f 100644 --- a/UI/Qt/BrowserWindow.cpp +++ b/UI/Qt/BrowserWindow.cpp @@ -512,11 +512,12 @@ void BrowserWindow::rebuild_bookmarks_menu() }); } -void BrowserWindow::update_bookmarks_bar_display(bool show_bookmarks_bar) +void BrowserWindow::show_bookmarks_bar_changed() { + auto show_bookmarks_bar = WebView::Application::settings().show_bookmarks_bar(); + for_each_tab([&](Tab& tab) { - if (tab.view().is_fullscreen() == Web::ViewportIsFullscreen::No) - tab.bookmarks_bar().setVisible(show_bookmarks_bar); + tab.bookmarks_bar().setVisible(show_bookmarks_bar); }); } diff --git a/UI/Qt/BrowserWindow.h b/UI/Qt/BrowserWindow.h index 9e0e338112..a394a1e8a1 100644 --- a/UI/Qt/BrowserWindow.h +++ b/UI/Qt/BrowserWindow.h @@ -114,7 +114,6 @@ public: void update_tabs_display(); void rebuild_bookmarks_menu(); - void update_bookmarks_bar_display(bool show_bookmarks_bar); void update_reopen_recently_closed_action(); void detach_tab_to_new_window(int index, QPoint global_position); void move_tab_to_window(int index, BrowserWindow& target_window, int target_index); @@ -158,6 +157,7 @@ private: virtual void closeEvent(QCloseEvent*) override; virtual void show_menu_bar_changed() override; + virtual void show_bookmarks_bar_changed() override; virtual void config_variable_changed(WebView::ConfigVariableID) override; Tab& create_new_tab(Web::HTML::ActivateTab, Tab& parent, Optional page_index);