From 53e0a43762523185fb98bf705f85cf0dfa27247f Mon Sep 17 00:00:00 2001 From: David Rosca Date: Sun, 8 Jul 2018 20:34:58 +0200 Subject: [PATCH] NavigationBar: Correctly reconnect to page actions BUG: 395828 FIXED-IN: 3.0.2 --- src/lib/navigation/navigationbar.cpp | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/lib/navigation/navigationbar.cpp b/src/lib/navigation/navigationbar.cpp index 0339b55f3..622622d75 100644 --- a/src/lib/navigation/navigationbar.cpp +++ b/src/lib/navigation/navigationbar.cpp @@ -230,19 +230,24 @@ void NavigationBar::setCurrentView(TabbedWebView *view) return; } - auto updateButton = [](ToolButton *button, QAction *action) { - button->setEnabled(action->isEnabled()); + auto connectPageActions = [this](QWebEnginePage *page) { + auto updateButton = [](ToolButton *button, QAction *action) { + button->setEnabled(action->isEnabled()); + }; + auto updateBackButton = std::bind(updateButton, m_buttonBack, page->action(QWebEnginePage::Back)); + auto updateForwardButton = std::bind(updateButton, m_buttonForward, page->action(QWebEnginePage::Forward)); + + updateBackButton(); + updateForwardButton(); + + disconnect(m_backConnection); + disconnect(m_forwardConnection); + m_backConnection = connect(page->action(QWebEnginePage::Back), &QAction::changed, this, updateBackButton); + m_forwardConnection = connect(page->action(QWebEnginePage::Forward), &QAction::changed, this, updateForwardButton); }; - auto updateBackButton = std::bind(updateButton, m_buttonBack, view->pageAction(QWebEnginePage::Back)); - auto updateForwardButton = std::bind(updateButton, m_buttonForward, view->pageAction(QWebEnginePage::Forward)); - updateBackButton(); - updateForwardButton(); - - disconnect(m_backConnection); - disconnect(m_forwardConnection); - m_backConnection = connect(view->pageAction(QWebEnginePage::Back), &QAction::changed, this, updateBackButton); - m_forwardConnection = connect(view->pageAction(QWebEnginePage::Forward), &QAction::changed, this, updateForwardButton); + connectPageActions(view->page()); + connect(view, &TabbedWebView::pageChanged, this, connectPageActions); } void NavigationBar::showReloadButton()