Skip to content

Commit

Permalink
Ladybird: Add reset zoom level button to toolbar
Browse files Browse the repository at this point in the history
This is a port of the Browser feature.
  • Loading branch information
MacDue authored and awesomekling committed Mar 29, 2023
1 parent b7f9b31 commit bdbea0b
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 6 deletions.
11 changes: 6 additions & 5 deletions Ladybird/BrowserWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ void BrowserWindow::set_current_tab(Tab* tab)
{
m_current_tab = tab;
if (tab)
update_zoom_menu_text();
update_displayed_zoom_level();
}

void BrowserWindow::debug_request(DeprecatedString const& request, DeprecatedString const& argument)
Expand Down Expand Up @@ -523,23 +523,23 @@ void BrowserWindow::zoom_in()
if (!m_current_tab)
return;
m_current_tab->view().zoom_in();
update_zoom_menu_text();
update_displayed_zoom_level();
}

void BrowserWindow::zoom_out()
{
if (!m_current_tab)
return;
m_current_tab->view().zoom_out();
update_zoom_menu_text();
update_displayed_zoom_level();
}

void BrowserWindow::reset_zoom()
{
if (!m_current_tab)
return;
m_current_tab->view().reset_zoom();
update_zoom_menu_text();
update_displayed_zoom_level();
}

void BrowserWindow::select_all()
Expand All @@ -548,11 +548,12 @@ void BrowserWindow::select_all()
tab->view().select_all();
}

void BrowserWindow::update_zoom_menu_text()
void BrowserWindow::update_displayed_zoom_level()
{
VERIFY(m_zoom_menu && m_current_tab);
auto zoom_level_text = MUST(String::formatted("&Zoom ({}%)", round_to<int>(m_current_tab->view().zoom_level() * 100)));
m_zoom_menu->setTitle(qstring_from_ak_string(zoom_level_text));
m_current_tab->update_reset_zoom_button();
}

void BrowserWindow::copy_selected_text()
Expand Down
2 changes: 1 addition & 1 deletion Ladybird/BrowserWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public slots:
void debug_request(DeprecatedString const& request, DeprecatedString const& argument = "");

void set_current_tab(Tab* tab);
void update_zoom_menu_text();
void update_displayed_zoom_level();

QTabWidget* m_tabs_container { nullptr };
Vector<NonnullOwnPtr<Tab>> m_tabs;
Expand Down
24 changes: 24 additions & 0 deletions Ladybird/Tab.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path)
m_view = new WebContentView(webdriver_content_ipc_path);
m_toolbar = new QToolBar(this);
m_location_edit = new LocationEdit(this);
m_reset_zoom_button = new QToolButton(m_toolbar);

m_hover_label = new QLabel(this);
m_hover_label->hide();
Expand Down Expand Up @@ -63,6 +64,17 @@ Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path)
m_toolbar->addAction(m_reload_action);
m_toolbar->addAction(m_home_action);
m_toolbar->addWidget(m_location_edit);
m_reset_zoom_button_action = m_toolbar->addWidget(m_reset_zoom_button);
m_reset_zoom_button_action->setVisible(false);

QObject::connect(m_reset_zoom_button, &QAbstractButton::clicked, [this] {
view().reset_zoom();
update_reset_zoom_button();
});

QObject::connect(m_view, &WebContentView::link_unhovered, [this] {
m_hover_label->hide();
});

QObject::connect(m_view, &WebContentView::activate_tab, [this] {
m_window->activate_tab(tab_index());
Expand Down Expand Up @@ -155,6 +167,18 @@ Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path)
});
}

void Tab::update_reset_zoom_button()
{
auto zoom_level = view().zoom_level();
if (zoom_level != 1.0f) {
auto zoom_level_text = MUST(String::formatted("{}%", round_to<int>(zoom_level * 100)));
m_reset_zoom_button->setText(qstring_from_ak_string(zoom_level_text));
m_reset_zoom_button_action->setVisible(true);
} else {
m_reset_zoom_button_action->setVisible(false);
}
}

void Tab::focus_location_editor()
{
m_location_edit->setFocus();
Expand Down
5 changes: 5 additions & 0 deletions Ladybird/Tab.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include <QLabel>
#include <QLineEdit>
#include <QToolBar>
#include <QToolButton>
#include <QWidget>

class BrowserWindow;
Expand All @@ -35,6 +36,8 @@ class Tab final : public QWidget {

void debug_request(DeprecatedString const& request, DeprecatedString const& argument);

void update_reset_zoom_button();

public slots:
void focus_location_editor();
void location_edit_return_pressed();
Expand All @@ -56,6 +59,8 @@ public slots:

QBoxLayout* m_layout;
QToolBar* m_toolbar { nullptr };
QToolButton* m_reset_zoom_button { nullptr };
QAction* m_reset_zoom_button_action { nullptr };
LocationEdit* m_location_edit { nullptr };
WebContentView* m_view { nullptr };
BrowserWindow* m_window { nullptr };
Expand Down

0 comments on commit bdbea0b

Please sign in to comment.