diff --git a/src/Mod/Web/Gui/BrowserView.cpp b/src/Mod/Web/Gui/BrowserView.cpp index 50bf985def77..278c91899959 100644 --- a/src/Mod/Web/Gui/BrowserView.cpp +++ b/src/Mod/Web/Gui/BrowserView.cpp @@ -85,6 +85,7 @@ #include #include +#include #include using namespace WebGui; @@ -224,7 +225,7 @@ Py::Object BrowserViewPy::setHtml(const Py::Tuple& args) PyMem_Free(HtmlCode); if (myWebView) - myWebView->setHtml(QString::fromUtf8(EncodedHtml.c_str()), QUrl(QString::fromLatin1(BaseUrl))); + myWebView->setHtml(QString::fromUtf8(EncodedHtml.c_str()), QUrl(QString::fromUtf8(BaseUrl))); return Py::None(); } } @@ -439,7 +440,8 @@ BrowserView::BrowserView(QWidget* parent) connect(view->page(), SIGNAL(iconChanged(const QIcon &)), this, SLOT(setWindowIcon(const QIcon &))); #endif - + connect(view->page(), SIGNAL(linkHovered(const QString &)), + this, SLOT(onLinkHovered(const QString &))); connect(view, SIGNAL(viewSource(const QUrl&)), this, SLOT(onViewSource(const QUrl&))); connect(view, SIGNAL(loadStarted()), @@ -463,6 +465,11 @@ BrowserView::~BrowserView() delete view; } +void BrowserView::onLinkHovered(const QString& url) +{ + Gui::getMainWindow()->statusBar()->showMessage(url); +} + #ifdef QTWEBENGINE void BrowserView::urlFilter(const QUrl &url) #else @@ -523,7 +530,12 @@ void BrowserView::onLinkClicked (const QUrl & url) Gui::Command::doCommand(Gui::Command::Gui,q.toStdString().c_str()); } // Gui::Command::doCommand(Gui::Command::Gui,"execfile('%s')",(const char*) fi.absoluteFilePath(). toLocal8Bit()); - Gui::Command::doCommand(Gui::Command::Gui,"exec(open('%s').read())",(const char*) fi.absoluteFilePath() .toLocal8Bit()); + QString filename = Base::Tools::escapeEncodeFilename(fi.absoluteFilePath()); +#if PY_MAJOR_VERSION < 3 + Gui::Command::doCommand(Gui::Command::Gui,"exec(open(unicode('%s', 'utf-8')).read())",(const char*) filename.toUtf8()); +#else + Gui::Command::doCommand(Gui::Command::Gui,"exec(open('%s').read())",(const char*) filename.toUtf8()); +#endif } catch (const Base::Exception& e) { QMessageBox::critical(this, tr("Error"), QString::fromUtf8(e.what())); diff --git a/src/Mod/Web/Gui/BrowserView.h b/src/Mod/Web/Gui/BrowserView.h index 0e8124c0a5bb..c3b436d4c0c0 100644 --- a/src/Mod/Web/Gui/BrowserView.h +++ b/src/Mod/Web/Gui/BrowserView.h @@ -119,6 +119,7 @@ protected Q_SLOTS: void onUnsupportedContent(QNetworkReply* reply); void onLinkClicked (const QUrl& url); #endif + void onLinkHovered(const QString& url); void onViewSource(const QUrl &url); void onOpenLinkInExternalBrowser(const QUrl& url); void onOpenLinkInNewWindow(const QUrl&);