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&);