diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 1d436695b1..b6e9153f65 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -42,12 +42,12 @@ endif () if (ANDROID) set(PLATFORM_QT_COMPONENTS AndroidExtras) else () - set(PLATFORM_QT_COMPONENTS WebEngine WebEngineWidgets WebKitWidgets) + set(PLATFORM_QT_COMPONENTS WebEngine WebEngineWidgets) endif () find_package( Qt5 COMPONENTS - Gui Multimedia Network OpenGL Qml Quick Script ScriptTools Svg + Gui Multimedia Network OpenGL Qml Quick Script Svg ${PLATFORM_QT_COMPONENTS} WebChannel WebSockets ) @@ -241,8 +241,8 @@ include_directories("${PROJECT_SOURCE_DIR}/src") target_link_libraries( ${TARGET_NAME} Qt5::Gui Qt5::Network Qt5::Multimedia Qt5::OpenGL - Qt5::Qml Qt5::Quick Qt5::Script Qt5::ScriptTools Qt5::Svg - Qt5::WebChannel Qt5::WebEngine Qt5::WebEngineWidgets Qt5::WebKitWidgets + Qt5::Qml Qt5::Quick Qt5::Script Qt5::Svg + Qt5::WebChannel Qt5::WebEngine Qt5::WebEngineWidgets ) # Issue causes build failure unless we add this directory. diff --git a/interface/src/scripting/WebWindowClass.cpp b/interface/src/scripting/WebWindowClass.cpp index 18beee4bbf..400c538461 100644 --- a/interface/src/scripting/WebWindowClass.cpp +++ b/interface/src/scripting/WebWindowClass.cpp @@ -14,8 +14,7 @@ #include #include #include -#include -#include +#include #include #include @@ -48,7 +47,7 @@ WebWindowClass::WebWindowClass(const QString& title, const QString& url, int wid layout->setContentsMargins(0, 0, 0, 0); dialogWidget->setLayout(layout); - _webView = new QWebView(dialogWidget); + _webView = new QWebEngineView(dialogWidget); layout->addWidget(_webView); @@ -69,8 +68,8 @@ WebWindowClass::WebWindowClass(const QString& title, const QString& url, int wid } connect(this, &WebWindowClass::destroyed, _windowWidget, &QWidget::deleteLater); - connect(_webView->page()->mainFrame(), &QWebFrame::javaScriptWindowObjectCleared, - this, &WebWindowClass::addEventBridgeToWindowObject); + //connect(_webView->page()->mainFrame(), &QWebFrame::javaScriptWindowObjectCleared, + // this, &WebWindowClass::addEventBridgeToWindowObject); } WebWindowClass::~WebWindowClass() { @@ -94,7 +93,7 @@ void WebWindowClass::hasClosed() { } void WebWindowClass::addEventBridgeToWindowObject() { - _webView->page()->mainFrame()->addToJavaScriptWindowObject("EventBridge", _eventBridge); +// _webView->page()->mainFrame()->addToJavaScriptWindowObject("EventBridge", _eventBridge); } void WebWindowClass::setVisible(bool visible) { diff --git a/interface/src/scripting/WebWindowClass.h b/interface/src/scripting/WebWindowClass.h index d7a610dd39..fdb434ab7e 100644 --- a/interface/src/scripting/WebWindowClass.h +++ b/interface/src/scripting/WebWindowClass.h @@ -14,7 +14,7 @@ #include #include -#include +#include class ScriptEventBridge : public QObject { Q_OBJECT @@ -73,7 +73,7 @@ private slots: private: QWidget* _windowWidget; - QWebView* _webView; + QWebEngineView* _webView; ScriptEventBridge* _eventBridge; }; diff --git a/interface/src/ui/DataWebPage.cpp b/interface/src/ui/DataWebPage.cpp index 01feacc393..7168dfc5d6 100644 --- a/interface/src/ui/DataWebPage.cpp +++ b/interface/src/ui/DataWebPage.cpp @@ -17,23 +17,22 @@ #include "DataWebPage.h" -DataWebPage::DataWebPage(QObject* parent) : - QWebPage(parent) +DataWebPage::DataWebPage(QObject* parent) : QWebEnginePage(parent) { // use an OAuthNetworkAccessManager instead of regular QNetworkAccessManager so our requests are authed - setNetworkAccessManager(OAuthNetworkAccessManager::getInstance()); +// setNetworkAccessManager(OAuthNetworkAccessManager::getInstance()); // give the page an empty stylesheet - settings()->setUserStyleSheetUrl(QUrl()); +// settings()->setUserStyleSheetUrl(QUrl()); } -void DataWebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID) { - qDebug() << "JS console message at line" << lineNumber << "from" << sourceID << "-" << message; -} +//void DataWebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID) { +// qDebug() << "JS console message at line" << lineNumber << "from" << sourceID << "-" << message; +//} -bool DataWebPage::acceptNavigationRequest(QWebFrame* frame, const QNetworkRequest& request, QWebPage::NavigationType type) { +bool DataWebPage::acceptNavigationRequest(const QUrl & url, NavigationType type, bool isMainFrame) { // Handle hifi:// links and links to files with particular extensions - QString urlString = request.url().toString(); + QString urlString = url.toString(); if (qApp->canAcceptURL(urlString)) { if (qApp->acceptURL(urlString)) { return false; // we handled it, so QWebPage doesn't need to handle it @@ -41,14 +40,15 @@ bool DataWebPage::acceptNavigationRequest(QWebFrame* frame, const QNetworkReques } // Make hyperlinks with target="_blank" open in user's Web browser - if (type == QWebPage::NavigationTypeLinkClicked && frame == nullptr) { - qApp->openUrl(request.url()); + if (type == NavigationTypeLinkClicked && !isMainFrame) { + qApp->openUrl(url); return false; // We handled it. } return true; } -QString DataWebPage::userAgentForUrl(const QUrl& url) const { - return HIGH_FIDELITY_USER_AGENT; -} +// +//QString DataWebPage::userAgentForUrl(const QUrl& url) const { +// return HIGH_FIDELITY_USER_AGENT; +//} diff --git a/interface/src/ui/DataWebPage.h b/interface/src/ui/DataWebPage.h index f9aa5be8a8..55e185ca4f 100644 --- a/interface/src/ui/DataWebPage.h +++ b/interface/src/ui/DataWebPage.h @@ -12,15 +12,15 @@ #ifndef hifi_DataWebPage_h #define hifi_DataWebPage_h -#include +#include -class DataWebPage : public QWebPage { +class DataWebPage : public QWebEnginePage { public: DataWebPage(QObject* parent = 0); protected: - void javaScriptConsoleMessage(const QString & message, int lineNumber, const QString & sourceID) override; - bool acceptNavigationRequest(QWebFrame* frame, const QNetworkRequest& request, QWebPage::NavigationType type) override; - virtual QString userAgentForUrl(const QUrl& url) const override; + //virtual void javaScriptConsoleMessage(const QString & message, int lineNumber, const QString & sourceID) override; + virtual bool acceptNavigationRequest(const QUrl & url, NavigationType type, bool isMainFrame) override; + //virtual QString userAgentForUrl(const QUrl& url) const override; }; #endif // hifi_DataWebPage_h diff --git a/libraries/ui/src/VrMenu.cpp b/libraries/ui/src/VrMenu.cpp index c2732197d3..f4b365265d 100644 --- a/libraries/ui/src/VrMenu.cpp +++ b/libraries/ui/src/VrMenu.cpp @@ -155,7 +155,7 @@ void bindActionToQmlAction(QObject* qmlAction, QAction* action) { QObject::connect(qmlAction, SIGNAL(triggered()), action, SLOT(trigger())); } -class QQuickMenuItem; +class QQuickMenuItem1; void VrMenu::addAction(QMenu* menu, QAction* action) { Q_ASSERT(!MenuUserData::hasData(action)); @@ -167,10 +167,9 @@ void VrMenu::addAction(QMenu* menu, QAction* action) { } QObject* menuQml = findMenuObject(userData->uuid.toString()); Q_ASSERT(menuQml); - QQuickMenuItem* returnedValue { nullptr }; - + QQuickMenuItem1* returnedValue { nullptr }; bool invokeResult = QMetaObject::invokeMethod(menuQml, "addItem", Qt::DirectConnection, - Q_RETURN_ARG(QQuickMenuItem*, returnedValue), + Q_RETURN_ARG(QQuickMenuItem1*, returnedValue), Q_ARG(QString, action->text())); Q_ASSERT(invokeResult); @@ -206,10 +205,10 @@ void VrMenu::insertAction(QAction* before, QAction* action) { beforeQml = findMenuObject(beforeUserData->uuid.toString()); } QObject* menu = beforeQml->parent(); - QQuickMenuItem* returnedValue { nullptr }; + QQuickMenuItem1* returnedValue { nullptr }; // FIXME this needs to find the index of the beforeQml item and call insertItem(int, object) bool invokeResult = QMetaObject::invokeMethod(menu, "addItem", Qt::DirectConnection, - Q_RETURN_ARG(QQuickMenuItem*, returnedValue), + Q_RETURN_ARG(QQuickMenuItem1*, returnedValue), Q_ARG(QString, action->text())); Q_ASSERT(invokeResult); QObject* result = reinterpret_cast(returnedValue); // returnedValue.value();