diff --git a/src/slic3r/GUI/Project.cpp b/src/slic3r/GUI/Project.cpp index 814040f52..73e99222a 100644 --- a/src/slic3r/GUI/Project.cpp +++ b/src/slic3r/GUI/Project.cpp @@ -58,6 +58,7 @@ ProjectPanel::ProjectPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, main_sizer->Add(m_browser, wxSizerFlags().Expand().Proportion(1)); m_browser->Bind(wxEVT_WEBVIEW_NAVIGATED, &ProjectPanel::on_navigated, this); m_browser->Bind(wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, &ProjectPanel::OnScriptMessage, this, m_browser->GetId()); + Bind(wxEVT_WEBVIEW_NAVIGATING, &ProjectPanel::onWebNavigating, this, m_browser->GetId()); Bind(EVT_PROJECT_RELOAD, &ProjectPanel::on_reload, this); @@ -68,6 +69,19 @@ ProjectPanel::ProjectPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, ProjectPanel::~ProjectPanel() {} + +void ProjectPanel::onWebNavigating(wxWebViewEvent& evt) +{ + wxString tmpUrl = evt.GetURL(); + //wxString NowUrl = m_browser->GetCurrentURL(); + + if (boost::starts_with(tmpUrl, "http://") || boost::starts_with(tmpUrl, "https://")) { + m_browser->Stop(); + evt.Veto(); + wxLaunchDefaultApplication(tmpUrl); + } +} + void ProjectPanel::on_reload(wxCommandEvent& evt) { boost::thread reload = boost::thread([this] { diff --git a/src/slic3r/GUI/Project.hpp b/src/slic3r/GUI/Project.hpp index 952f05d2c..c1452dece 100644 --- a/src/slic3r/GUI/Project.hpp +++ b/src/slic3r/GUI/Project.hpp @@ -73,6 +73,7 @@ public: ~ProjectPanel(); + void onWebNavigating(wxWebViewEvent& evt); void on_reload(wxCommandEvent& evt); void on_size(wxSizeEvent &event); void on_navigated(wxWebViewEvent& event);