From 69d264828fd2f94621440550463fbf2df3442156 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 5 Jul 2022 21:10:50 +0200 Subject: [PATCH] Ladybird: Add a "Reload" action to reload the current URL --- Ladybird/BrowserWindow.cpp | 16 ++++++++++++++++ Ladybird/BrowserWindow.h | 3 +++ Ladybird/WebView.cpp | 6 ++++++ Ladybird/WebView.h | 1 + 4 files changed, 26 insertions(+) diff --git a/Ladybird/BrowserWindow.cpp b/Ladybird/BrowserWindow.cpp index 769bc8042b..f1bb77b3c1 100644 --- a/Ladybird/BrowserWindow.cpp +++ b/Ladybird/BrowserWindow.cpp @@ -1,12 +1,21 @@ #include "BrowserWindow.h" #include "WebView.h" #include +#include #include +extern String s_serenity_resource_root; + BrowserWindow::BrowserWindow(Core::EventLoop& event_loop) : m_event_loop(event_loop) { m_toolbar = new QToolBar; + + auto reload_icon_path = QString("%1/res/icons/16x16/reload.png").arg(s_serenity_resource_root.characters()); + auto* reload_action = new QAction(QIcon(reload_icon_path), "Reload"); + reload_action->setShortcut(QKeySequence("Ctrl+R")); + m_toolbar->addAction(reload_action); + m_location_edit = new QLineEdit; m_toolbar->addWidget(m_location_edit); @@ -22,6 +31,8 @@ BrowserWindow::BrowserWindow(Core::EventLoop& event_loop) QObject::connect(m_location_edit, &QLineEdit::returnPressed, this, &BrowserWindow::location_edit_return_pressed); QObject::connect(m_view, &WebView::title_changed, this, &BrowserWindow::page_title_changed); QObject::connect(m_view, &WebView::favicon_changed, this, &BrowserWindow::page_favicon_changed); + + QObject::connect(reload_action, &QAction::triggered, this, &BrowserWindow::reload); } void BrowserWindow::location_edit_return_pressed() @@ -51,3 +62,8 @@ void BrowserWindow::closeEvent(QCloseEvent* event) // all of the browser windows have closed. m_event_loop.quit(0); } + +void BrowserWindow::reload() +{ + view().reload(); +} diff --git a/Ladybird/BrowserWindow.h b/Ladybird/BrowserWindow.h index 80780d95b1..1eadf9b856 100644 --- a/Ladybird/BrowserWindow.h +++ b/Ladybird/BrowserWindow.h @@ -22,6 +22,9 @@ public slots: void page_title_changed(QString); void page_favicon_changed(QIcon); +public slots: + void reload(); + private: QToolBar* m_toolbar { nullptr }; QLineEdit* m_location_edit { nullptr }; diff --git a/Ladybird/WebView.cpp b/Ladybird/WebView.cpp index f68f2e1b85..0fcf205068 100644 --- a/Ladybird/WebView.cpp +++ b/Ladybird/WebView.cpp @@ -298,6 +298,12 @@ WebView::~WebView() { } +void WebView::reload() +{ + auto url = m_page_client->page().top_level_browsing_context().active_document()->url(); + m_page_client->load(url); +} + void WebView::load(String const& url) { m_page_client->load(AK::URL(url)); diff --git a/Ladybird/WebView.h b/Ladybird/WebView.h index 466dccd1ab..a38e7e165f 100644 --- a/Ladybird/WebView.h +++ b/Ladybird/WebView.h @@ -22,6 +22,7 @@ public: virtual ~WebView() override; void load(String const& url); + void reload(); virtual void paintEvent(QPaintEvent*) override; virtual void resizeEvent(QResizeEvent*) override;