Ladybird: Do not enable the reload button if history is empty

Not much of an issue currently, but will be once tabs are used to render
plain HTML.
This commit is contained in:
Timothy Flynn 2023-08-28 15:54:36 -04:00 committed by Tim Flynn
parent 70830b711e
commit 9c4ce1b80b
5 changed files with 19 additions and 0 deletions

View file

@ -139,6 +139,10 @@ enum class IsHistoryNavigation {
- (void)reload:(id)sender
{
if (m_history.is_empty()) {
return;
}
m_is_history_navigation = IsHistoryNavigation::Yes;
auto url = m_history.current().url;
@ -179,6 +183,9 @@ enum class IsHistoryNavigation {
auto* navigate_forward_button = (NSButton*)[[self navigate_forward_toolbar_item] view];
[navigate_forward_button setEnabled:m_history.can_go_forward()];
auto* reload_button = (NSButton*)[[self reload_toolbar_item] view];
[reload_button setEnabled:!m_history.is_empty()];
}
- (void)showTabOverview:(id)sender
@ -232,6 +239,7 @@ enum class IsHistoryNavigation {
if (!_reload_toolbar_item) {
auto* button = [self create_button:NSImageNameRefreshTemplate
with_action:@selector(reload:)];
[button setEnabled:NO];
_reload_toolbar_item = [[NSToolbarItem alloc] initWithItemIdentifier:TOOLBAR_RELOAD_IDENTIFIER];
[_reload_toolbar_item setView:button];

View file

@ -401,6 +401,7 @@ BrowserWindow::BrowserWindow(Optional<URL> const& initial_url, Browser::CookieJa
m_reload_action->setShortcuts(QKeySequence::keyBindings(QKeySequence::StandardKey::Refresh));
m_go_back_action->setEnabled(false);
m_go_forward_action->setEnabled(false);
m_reload_action->setEnabled(false);
if (initial_url.has_value()) {
auto initial_url_string = qstring_from_ak_deprecated_string(initial_url->serialize());

View file

@ -132,6 +132,7 @@ Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView::
m_window->go_back_action().setEnabled(m_history.can_go_back());
m_window->go_forward_action().setEnabled(m_history.can_go_forward());
m_window->reload_action().setEnabled(!m_history.is_empty());
if (m_inspector_widget)
m_inspector_widget->clear_dom_json();
@ -587,6 +588,9 @@ void Tab::forward()
void Tab::reload()
{
if (m_history.is_empty())
return;
m_is_history_navigation = true;
view().load(m_history.current().url.to_deprecated_string());
}

View file

@ -35,6 +35,8 @@ public:
bool can_go_forward(int steps = 1) { return (m_current + steps) < static_cast<int>(m_items.size()); }
void clear();
bool is_empty() const { return m_items.is_empty(); }
private:
Vector<URLTitlePair> m_items;
int m_current { -1 };

View file

@ -732,6 +732,9 @@ URL Tab::url() const
void Tab::reload()
{
if (m_history.is_empty())
return;
load(url());
}
@ -762,6 +765,7 @@ void Tab::update_actions()
return;
window.go_back_action().set_enabled(m_history.can_go_back());
window.go_forward_action().set_enabled(m_history.can_go_forward());
window.reload_action().set_enabled(!m_history.is_empty());
}
ErrorOr<void> Tab::bookmark_current_url()