From 039d5edc6f7c852ab9da39bc581f55ef11f1790c Mon Sep 17 00:00:00 2001 From: MacDue Date: Sun, 26 Mar 2023 19:41:06 +0100 Subject: [PATCH] Browser: Show current zoom level in view menu --- .../Applications/Browser/BrowserWindow.cpp | 18 +++++++++++++++--- Userland/Applications/Browser/BrowserWindow.h | 4 ++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Userland/Applications/Browser/BrowserWindow.cpp b/Userland/Applications/Browser/BrowserWindow.cpp index 9e9101f3bf..65a37e1b48 100644 --- a/Userland/Applications/Browser/BrowserWindow.cpp +++ b/Userland/Applications/Browser/BrowserWindow.cpp @@ -84,6 +84,7 @@ BrowserWindow::BrowserWindow(CookieJar& cookie_jar, URL url) auto& tab = static_cast(active_widget); set_window_title_for_tab(tab); tab.did_become_active(); + update_zoom_menu_text(); }; m_tab_widget->on_middle_click = [](auto& clicked_widget) { @@ -172,22 +173,26 @@ void BrowserWindow::build_menus() view_menu.add_action(WindowActions::the().show_bookmarks_bar_action()); view_menu.add_action(WindowActions::the().vertical_tabs_action()); view_menu.add_separator(); - view_menu.add_action(GUI::CommonActions::make_zoom_in_action( + m_zoom_menu = view_menu.add_submenu("&Zoom"); + m_zoom_menu->add_action(GUI::CommonActions::make_zoom_in_action( [this](auto&) { auto& tab = active_tab(); tab.view().zoom_in(); + update_zoom_menu_text(); }, this)); - view_menu.add_action(GUI::CommonActions::make_zoom_out_action( + m_zoom_menu->add_action(GUI::CommonActions::make_zoom_out_action( [this](auto&) { auto& tab = active_tab(); tab.view().zoom_out(); + update_zoom_menu_text(); }, this)); - view_menu.add_action(GUI::CommonActions::make_reset_zoom_action( + m_zoom_menu->add_action(GUI::CommonActions::make_reset_zoom_action( [this](auto&) { auto& tab = active_tab(); tab.view().reset_zoom(); + update_zoom_menu_text(); }, this)); view_menu.add_separator(); @@ -791,4 +796,11 @@ ErrorOr BrowserWindow::take_screenshot(ScreenshotType type) return {}; } +void BrowserWindow::update_zoom_menu_text() +{ + VERIFY(m_zoom_menu); + auto zoom_level_text = DeprecatedString::formatted("&Zoom ({}%)", round_to(active_tab().view().zoom_level() * 100)); + m_zoom_menu->set_name(zoom_level_text); +} + } diff --git a/Userland/Applications/Browser/BrowserWindow.h b/Userland/Applications/Browser/BrowserWindow.h index 5034725dfa..2e46a6075d 100644 --- a/Userland/Applications/Browser/BrowserWindow.h +++ b/Userland/Applications/Browser/BrowserWindow.h @@ -62,6 +62,8 @@ private: virtual void event(Core::Event&) override; + void update_zoom_menu_text(); + enum class ScreenshotType { Visible, Full, @@ -80,6 +82,8 @@ private: RefPtr m_take_visible_screenshot_action; RefPtr m_take_full_screenshot_action; + RefPtr m_zoom_menu; + CookieJar& m_cookie_jar; WindowActions m_window_actions; RefPtr m_tab_widget;