LibWebView+UI/Qt: Move the show menu bar setting to LibWebView settings
This commit is contained in:
parent
0e8a4f9747
commit
83105b8349
11 changed files with 67 additions and 53 deletions
|
|
@ -1391,6 +1391,11 @@ void Application::initialize_actions()
|
|||
});
|
||||
update_vertical_tabs_action();
|
||||
|
||||
m_toggle_menu_bar_action = Action::create_checkable("Show Menubar"sv, ActionID::ToggleMenuBar, [this]() {
|
||||
m_settings.set_show_menu_bar(!m_settings.show_menu_bar());
|
||||
});
|
||||
m_toggle_menu_bar_action->set_checked(m_settings.show_menu_bar());
|
||||
|
||||
m_bookmarks_menu = Menu::create("Bookmarks"sv);
|
||||
m_bookmarks_menu->add_action(Action::create("Manage Bookmarks"sv, ActionID::ManageBookmarks, [this]() {
|
||||
open_url_in_new_tab(URL::about_bookmarks(), Web::HTML::ActivateTab::Yes);
|
||||
|
|
|
|||
|
|
@ -183,6 +183,8 @@ public:
|
|||
|
||||
Action& toggle_vertical_tabs_expanded_action() { return *m_toggle_vertical_tabs_expanded_action; }
|
||||
|
||||
Action& toggle_menu_bar_action() { return *m_toggle_menu_bar_action; }
|
||||
|
||||
Menu& bookmarks_menu() { return *m_bookmarks_menu; }
|
||||
Menu& bookmarks_bar_context_menu() { return *m_bookmarks_bar_context_menu; }
|
||||
Menu& bookmark_context_menu() { return *m_bookmark_context_menu; }
|
||||
|
|
@ -379,6 +381,8 @@ private:
|
|||
|
||||
RefPtr<Action> m_toggle_vertical_tabs_expanded_action;
|
||||
|
||||
RefPtr<Action> m_toggle_menu_bar_action;
|
||||
|
||||
RefPtr<Menu> m_bookmarks_menu;
|
||||
RefPtr<Action> m_toggle_bookmark_action;
|
||||
RefPtr<Action> m_toggle_bookmark_bar_action;
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@ enum class ActionID {
|
|||
|
||||
ToggleVerticalTabsExpanded,
|
||||
|
||||
ToggleMenuBar,
|
||||
|
||||
ManageBookmarks,
|
||||
ToggleBookmark,
|
||||
ToggleBookmarkViaToolbar,
|
||||
|
|
|
|||
|
|
@ -28,6 +28,9 @@ static constexpr auto VERTICAL_TABS_EXPANDED_KEY = "verticalTabsExpanded"sv;
|
|||
static constexpr auto VERTICAL_TABS_EXPAND_ON_HOVER_KEY = "verticalTabsExpandOnHover"sv;
|
||||
static constexpr auto VERTICAL_TABS_EXPANDED_WIDTH_KEY = "verticalTabsExpandedWidth"sv;
|
||||
|
||||
static constexpr auto SHOW_MENU_BAR_KEY = "showMenuBar"sv;
|
||||
static constexpr auto DEFAULT_SHOW_MENU_BAR = false;
|
||||
|
||||
static constexpr auto SHOW_BOOKMARKS_BAR_KEY = "showBookmarksBar"sv;
|
||||
static constexpr auto DEFAULT_SHOW_BOOKMARKS_BAR = true;
|
||||
|
||||
|
|
@ -194,6 +197,9 @@ Settings Settings::create(Badge<Application>)
|
|||
if (auto tab_settings = settings_json.value().get(TAB_SETTINGS_KEY); tab_settings.has_value())
|
||||
settings.m_tab_settings = parse_tab_settings(*tab_settings);
|
||||
|
||||
if (auto show_menu_bar = settings_json.value().get_bool(SHOW_MENU_BAR_KEY); show_menu_bar.has_value())
|
||||
settings.m_show_menu_bar = *show_menu_bar;
|
||||
|
||||
if (auto show_bookmarks_bar = settings_json.value().get_bool(SHOW_BOOKMARKS_BAR_KEY); show_bookmarks_bar.has_value())
|
||||
settings.m_show_bookmarks_bar = *show_bookmarks_bar;
|
||||
|
||||
|
|
@ -279,6 +285,7 @@ Settings Settings::create(Badge<Application>)
|
|||
Settings::Settings(ByteString settings_path)
|
||||
: m_settings_path(move(settings_path))
|
||||
, m_new_tab_page_url(URL::about_newtab())
|
||||
, m_show_menu_bar(DEFAULT_SHOW_MENU_BAR)
|
||||
, m_show_bookmarks_bar(DEFAULT_SHOW_BOOKMARKS_BAR)
|
||||
, m_default_zoom_level_factor(INITIAL_ZOOM_LEVEL_FACTOR)
|
||||
, m_languages({ DEFAULT_LANGUAGE })
|
||||
|
|
@ -301,6 +308,7 @@ JsonValue Settings::serialize_json() const
|
|||
tab_settings.set(VERTICAL_TABS_EXPANDED_WIDTH_KEY, *m_tab_settings.vertical_tabs_expanded_width);
|
||||
settings.set(TAB_SETTINGS_KEY, move(tab_settings));
|
||||
|
||||
settings.set(SHOW_MENU_BAR_KEY, m_show_menu_bar);
|
||||
settings.set(SHOW_BOOKMARKS_BAR_KEY, m_show_bookmarks_bar);
|
||||
settings.set(DEFAULT_ZOOM_LEVEL_FACTOR_KEY, m_default_zoom_level_factor);
|
||||
|
||||
|
|
@ -445,6 +453,15 @@ void Settings::set_tab_settings(TabSettings tab_settings)
|
|||
observer.tab_settings_changed();
|
||||
}
|
||||
|
||||
void Settings::set_show_menu_bar(bool show_menu_bar)
|
||||
{
|
||||
m_show_menu_bar = show_menu_bar;
|
||||
persist_settings();
|
||||
|
||||
for (auto& observer : m_observers)
|
||||
observer.show_menu_bar_changed();
|
||||
}
|
||||
|
||||
void Settings::set_show_bookmarks_bar(bool show_bookmarks_bar)
|
||||
{
|
||||
m_show_bookmarks_bar = show_bookmarks_bar;
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@ public:
|
|||
|
||||
virtual void new_tab_page_url_changed() { }
|
||||
virtual void tab_settings_changed() { }
|
||||
virtual void show_menu_bar_changed() { }
|
||||
virtual void show_bookmarks_bar_changed() { }
|
||||
virtual void default_zoom_level_factor_changed() { }
|
||||
virtual void zoom_per_host_changed(StringView host) { (void)host; }
|
||||
|
|
@ -106,6 +107,9 @@ public:
|
|||
TabSettings const& tab_settings() const { return m_tab_settings; }
|
||||
void set_tab_settings(TabSettings);
|
||||
|
||||
bool show_menu_bar() const { return m_show_menu_bar; }
|
||||
void set_show_menu_bar(bool);
|
||||
|
||||
bool show_bookmarks_bar() const { return m_show_bookmarks_bar; }
|
||||
void set_show_bookmarks_bar(bool);
|
||||
|
||||
|
|
@ -170,6 +174,7 @@ private:
|
|||
|
||||
URL::URL m_new_tab_page_url;
|
||||
TabSettings m_tab_settings;
|
||||
bool m_show_menu_bar { false };
|
||||
bool m_show_bookmarks_bar { true };
|
||||
double m_default_zoom_level_factor { 0 };
|
||||
HashMap<String, double> m_zoom_per_host;
|
||||
|
|
|
|||
|
|
@ -264,11 +264,7 @@ BrowserWindow::BrowserWindow(Vector<URL::URL> const& initial_urls, IsPopupWindow
|
|||
menuBar()->setObjectName("LadybirdMenuBar");
|
||||
create_menu_bar_window_controls();
|
||||
update_menu_bar_style();
|
||||
update_menu_bar_visibility(Settings::the()->show_menubar());
|
||||
|
||||
QObject::connect(Settings::the(), &Settings::show_menubar_changed, this, [this](bool show_menubar) {
|
||||
update_menu_bar_visibility(show_menubar);
|
||||
});
|
||||
update_menu_bar_visibility();
|
||||
|
||||
auto* file_menu = menuBar()->addMenu("&File");
|
||||
|
||||
|
|
@ -369,15 +365,8 @@ BrowserWindow::BrowserWindow(Vector<URL::URL> const& initial_urls, IsPopupWindow
|
|||
view_menu->addMenu(create_application_menu(*view_menu, application.motion_menu()));
|
||||
view_menu->addSeparator();
|
||||
|
||||
if (show_menubar_option_available()) {
|
||||
auto* show_menubar = new QAction("Show &Menubar", this);
|
||||
show_menubar->setCheckable(true);
|
||||
show_menubar->setChecked(Settings::the()->show_menubar());
|
||||
view_menu->addAction(show_menubar);
|
||||
QObject::connect(show_menubar, &QAction::triggered, this, [](bool checked) {
|
||||
Settings::the()->set_show_menubar(checked);
|
||||
});
|
||||
}
|
||||
if (show_menubar_option_available())
|
||||
view_menu->addAction(create_application_action(*view_menu, application.toggle_menu_bar_action(), IncludeActionIcon::No));
|
||||
|
||||
m_bookmarks_menu = create_application_menu(*this, application.bookmarks_menu());
|
||||
m_hamburger_menu->addMenu(m_bookmarks_menu);
|
||||
|
|
@ -938,12 +927,14 @@ void BrowserWindow::update_menu_bar_style()
|
|||
menuBar()->setStyleSheet(ChromeStyle::menu_bar_style_sheet(palette()));
|
||||
}
|
||||
|
||||
void BrowserWindow::update_menu_bar_visibility(bool show_menubar)
|
||||
void BrowserWindow::update_menu_bar_visibility()
|
||||
{
|
||||
menuBar()->setVisible(show_menubar);
|
||||
auto show_menu_bar = show_menubar_option_available() && WebView::Application::settings().show_menu_bar();
|
||||
menuBar()->setVisible(show_menu_bar);
|
||||
|
||||
if (m_menu_bar_window_controls)
|
||||
m_menu_bar_window_controls->setVisible(show_menubar && uses_client_side_decorations());
|
||||
m_tabs_container->set_window_controls_visible(!show_menubar && uses_client_side_decorations());
|
||||
m_menu_bar_window_controls->setVisible(show_menu_bar && uses_client_side_decorations());
|
||||
m_tabs_container->set_window_controls_visible(!show_menu_bar && uses_client_side_decorations());
|
||||
}
|
||||
|
||||
void BrowserWindow::update_menu_bar_window_control_icons()
|
||||
|
|
@ -982,7 +973,7 @@ void BrowserWindow::update_window_decoration_state()
|
|||
}
|
||||
}
|
||||
|
||||
update_menu_bar_visibility(Settings::the()->show_menubar());
|
||||
update_menu_bar_visibility();
|
||||
}
|
||||
|
||||
void BrowserWindow::toggle_window_maximized()
|
||||
|
|
@ -1337,6 +1328,11 @@ void BrowserWindow::changeEvent(QEvent* event)
|
|||
QWidget::changeEvent(event);
|
||||
}
|
||||
|
||||
void BrowserWindow::show_menu_bar_changed()
|
||||
{
|
||||
update_menu_bar_visibility();
|
||||
}
|
||||
|
||||
void BrowserWindow::config_variable_changed(WebView::ConfigVariableID variable)
|
||||
{
|
||||
if (variable == WebView::ConfigVariableID::UseRoundedWindowCorners)
|
||||
|
|
|
|||
|
|
@ -156,6 +156,8 @@ private:
|
|||
virtual void moveEvent(QMoveEvent*) override;
|
||||
virtual void wheelEvent(QWheelEvent*) override;
|
||||
virtual void closeEvent(QCloseEvent*) override;
|
||||
|
||||
virtual void show_menu_bar_changed() override;
|
||||
virtual void config_variable_changed(WebView::ConfigVariableID) override;
|
||||
|
||||
Tab& create_new_tab(Web::HTML::ActivateTab, Tab& parent, Optional<u64> page_index);
|
||||
|
|
@ -180,7 +182,7 @@ private:
|
|||
void create_menu_bar_window_controls();
|
||||
void update_tab_button_icons();
|
||||
void update_menu_bar_style();
|
||||
void update_menu_bar_visibility(bool);
|
||||
void update_menu_bar_visibility();
|
||||
void update_menu_bar_window_control_icons();
|
||||
void update_window_decoration_state();
|
||||
void toggle_window_maximized();
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
*/
|
||||
|
||||
#include <AK/LexicalPath.h>
|
||||
#include <UI/Qt/ChromeLayout.h>
|
||||
#include <UI/Qt/Settings.h>
|
||||
#include <UI/Qt/StringUtils.h>
|
||||
|
||||
|
|
@ -55,22 +54,4 @@ void Settings::set_is_maximized(bool is_maximized)
|
|||
m_qsettings->setValue("is_maximized", is_maximized);
|
||||
}
|
||||
|
||||
bool Settings::show_menubar()
|
||||
{
|
||||
if (!show_menubar_option_available())
|
||||
return false;
|
||||
|
||||
return m_qsettings->value("show_menubar", false).toBool();
|
||||
}
|
||||
|
||||
void Settings::set_show_menubar(bool show_menubar)
|
||||
{
|
||||
if (!show_menubar_option_available())
|
||||
show_menubar = false;
|
||||
else
|
||||
m_qsettings->setValue("show_menubar", show_menubar);
|
||||
|
||||
emit show_menubar_changed(show_menubar);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,12 +42,6 @@ public:
|
|||
bool is_maximized();
|
||||
void set_is_maximized(bool is_maximized);
|
||||
|
||||
bool show_menubar();
|
||||
void set_show_menubar(bool show_menubar);
|
||||
|
||||
signals:
|
||||
void show_menubar_changed(bool show_menubar);
|
||||
|
||||
protected:
|
||||
Settings();
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@
|
|||
#include <UI/Qt/ChromeStyle.h>
|
||||
#include <UI/Qt/Icon.h>
|
||||
#include <UI/Qt/Menu.h>
|
||||
#include <UI/Qt/Settings.h>
|
||||
#include <UI/Qt/StringUtils.h>
|
||||
#include <UI/Qt/WindowControlButton.h>
|
||||
|
||||
|
|
@ -243,12 +242,6 @@ Tab::Tab(BrowserWindow* window, RefPtr<WebView::WebContentClient> parent_client,
|
|||
update_chrome_style();
|
||||
set_toolbar_window_controls_visible(false);
|
||||
|
||||
m_hamburger_button->setVisible(!Settings::the()->show_menubar());
|
||||
|
||||
QObject::connect(Settings::the(), &Settings::show_menubar_changed, this, [this](bool show_menubar) {
|
||||
m_hamburger_button->setVisible(!show_menubar);
|
||||
});
|
||||
|
||||
view().on_activate_tab = [this] {
|
||||
m_window->activate_tab(tab_index());
|
||||
};
|
||||
|
|
@ -582,7 +575,6 @@ void Tab::set_window(BrowserWindow& window)
|
|||
m_window = &window;
|
||||
m_hamburger_button->setMenu(&m_window->hamburger_menu());
|
||||
connect_hamburger_menu();
|
||||
m_hamburger_button->setVisible(!Settings::the()->show_menubar());
|
||||
recreate_toolbar_icons();
|
||||
}
|
||||
|
||||
|
|
@ -644,6 +636,14 @@ void Tab::connect_hamburger_menu()
|
|||
QObject::connect(&m_window->hamburger_menu(), &QMenu::aboutToHide, m_hamburger_button, [this]() {
|
||||
m_hamburger_button->setDown(false);
|
||||
});
|
||||
|
||||
update_hamburger_menu();
|
||||
}
|
||||
|
||||
void Tab::update_hamburger_menu()
|
||||
{
|
||||
auto show_menu_bar = show_menubar_option_available() && WebView::Application::settings().show_menu_bar();
|
||||
m_hamburger_button->setVisible(!show_menu_bar);
|
||||
}
|
||||
|
||||
void Tab::navigate(URL::URL const& url)
|
||||
|
|
@ -690,6 +690,11 @@ void Tab::update_tab_title()
|
|||
emit title_changed(tab_index(), title());
|
||||
}
|
||||
|
||||
void Tab::show_menu_bar_changed()
|
||||
{
|
||||
update_hamburger_menu();
|
||||
}
|
||||
|
||||
void Tab::config_variable_changed(WebView::ConfigVariableID variable)
|
||||
{
|
||||
if (variable == WebView::ConfigVariableID::ShowWebContentProcessIDInTabTitle)
|
||||
|
|
|
|||
|
|
@ -103,10 +103,13 @@ signals:
|
|||
private:
|
||||
virtual void resizeEvent(QResizeEvent*) override;
|
||||
virtual bool event(QEvent*) override;
|
||||
|
||||
virtual void show_menu_bar_changed() override;
|
||||
virtual void config_variable_changed(WebView::ConfigVariableID) override;
|
||||
|
||||
void recreate_toolbar_icons();
|
||||
void connect_hamburger_menu();
|
||||
void update_hamburger_menu();
|
||||
void update_chrome_style();
|
||||
void update_tab_title();
|
||||
void set_loading(bool);
|
||||
|
|
|
|||
Loading…
Reference in a new issue