diff --git a/src/Mod/Web/Gui/BrowserView.cpp b/src/Mod/Web/Gui/BrowserView.cpp index f9a4bc47b5..1f65cb4ca4 100644 --- a/src/Mod/Web/Gui/BrowserView.cpp +++ b/src/Mod/Web/Gui/BrowserView.cpp @@ -511,6 +511,10 @@ BrowserView::BrowserView(QWidget* parent) this, SLOT(onOpenLinkInExternalBrowser(const QUrl &))); connect(view, SIGNAL(openLinkInNewWindow(const QUrl &)), this, SLOT(onOpenLinkInNewWindow(const QUrl &))); + connect(view, SIGNAL(loadStarted()), + this, SLOT(onUpdateBrowserActions())); + connect(view, SIGNAL(loadFinished(bool)), + this, SLOT(onUpdateBrowserActions())); } /** Destroys the object and frees any allocated resources */ @@ -785,6 +789,18 @@ void BrowserView::onOpenLinkInNewWindow(const QUrl& url) Gui::getMainWindow()->setActiveWindow(this); } +void BrowserView::onUpdateBrowserActions() +{ + CommandManager& mgr = Application::Instance->commandManager(); + std::vector cmds = {"Web_BrowserBack", "Web_BrowserNext", "Web_BrowserRefresh", "Web_BrowserStop", + "Web_BrowserZoomIn", "Web_BrowserZoomOut", "Web_BrowserSetURL"}; + for (const auto& it : cmds) { + Gui::Command* cmd = mgr.getCommandByName(it); + if (cmd) + cmd->testActive(); + } +} + void BrowserView::OnChange(Base::Subject &rCaller,const char* rcReason) { Q_UNUSED(rCaller); diff --git a/src/Mod/Web/Gui/BrowserView.h b/src/Mod/Web/Gui/BrowserView.h index e717e152f1..42b8107775 100644 --- a/src/Mod/Web/Gui/BrowserView.h +++ b/src/Mod/Web/Gui/BrowserView.h @@ -28,6 +28,7 @@ #include #include #include +#include #if defined(QTWEBENGINE) #include @@ -124,9 +125,10 @@ protected Q_SLOTS: void onViewSource(const QUrl &url); void onOpenLinkInExternalBrowser(const QUrl& url); void onOpenLinkInNewWindow(const QUrl&); + void onUpdateBrowserActions(); private: - WebView* view; + QPointer view; bool isLoading; UrlWidget *urlWgt; #ifdef QTWEBENGINE