diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2018-12-09 21:29:31 +0100 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2018-12-09 21:32:47 +0100 |
commit | 50c1efe4e4631026b9a04a726c36e10c7d99c729 (patch) | |
tree | c7bbe6f5f6a41ceec3392edc4a255d38333a9393 | |
parent | toolchain.eclass: move from versionator to eapi7-ver eclass (diff) | |
download | gentoo-50c1efe4e4631026b9a04a726c36e10c7d99c729.tar.gz gentoo-50c1efe4e4631026b9a04a726c36e10c7d99c729.tar.bz2 gentoo-50c1efe4e4631026b9a04a726c36e10c7d99c729.zip |
www-client/falkon: Enable webinspector, fix mouse navigation
Disable finding PySide2 as long as it is not a thing in Gentoo.
mouse navigation:
KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=395828
webinspector:
Reported-by: nekoexmachina in #gentoo-kde
Package-Manager: Portage-2.3.52, Repoman-2.3.12
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
6 files changed, 438 insertions, 0 deletions
diff --git a/www-client/falkon/falkon-3.0.1-r1.ebuild b/www-client/falkon/falkon-3.0.1-r1.ebuild new file mode 100644 index 000000000000..71fb406ee4a5 --- /dev/null +++ b/www-client/falkon/falkon-3.0.1-r1.ebuild @@ -0,0 +1,79 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +KDE_TEST="true" +VIRTUALX_REQUIRED="test" +inherit kde5 + +DESCRIPTION="Cross-platform web browser using QtWebEngine" +HOMEPAGE="https://www.falkon.org/" +if [[ ${KDE_BUILD_TYPE} != live ]]; then + SRC_URI="mirror://kde/stable/${PN}/${PV}/${P}.tar.xz" +fi + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="dbus gnome-keyring kwallet libressl +X" + +COMMON_DEPEND=" + $(add_qt_dep qtdeclarative 'widgets') + $(add_qt_dep qtgui) + $(add_qt_dep qtnetwork 'ssl') + $(add_qt_dep qtprintsupport) + $(add_qt_dep qtsql 'sqlite') + $(add_qt_dep qtwebchannel) + $(add_qt_dep qtwebengine 'widgets') + $(add_qt_dep qtwidgets) + dbus? ( $(add_qt_dep qtdbus) ) + gnome-keyring? ( gnome-base/gnome-keyring ) + kwallet? ( $(add_frameworks_dep kwallet) ) + libressl? ( dev-libs/libressl:= ) + !libressl? ( dev-libs/openssl:0= ) + X? ( + $(add_qt_dep qtx11extras) + x11-libs/libxcb:= + x11-libs/xcb-util + ) +" +DEPEND="${COMMON_DEPEND} + $(add_qt_dep linguist-tools) + $(add_qt_dep qtconcurrent) + gnome-keyring? ( virtual/pkgconfig ) +" +if [[ ${KDE_BUILD_TYPE} != live ]]; then + DEPEND+=" $(add_frameworks_dep ki18n)" +fi +RDEPEND="${COMMON_DEPEND} + !www-client/qupzilla + $(add_qt_dep qtsvg) +" + +PATCHES=( + "${FILESDIR}/${P}-pyside2-release.patch" + "${FILESDIR}/${P}-qiodevice-main-thread.patch" + "${FILESDIR}/${P}-page-actions.patch" + "${FILESDIR}/${P}-qtwebengine-version.patch" + "${FILESDIR}/${P}-webinspector.patch" +) + +src_configure() { + local mycmakeargs=( + -DCMAKE_DISABLE_FIND_PACKAGE_PySide2=ON + -DCMAKE_DISABLE_FIND_PACKAGE_Shiboken2=ON + -DCMAKE_DISABLE_FIND_PACKAGE_PythonLibs=ON + -DDISABLE_DBUS=$(usex !dbus) + -DBUILD_KEYRING=$(usex gnome-keyring) + $(cmake-utils_use_find_package kwallet KF5Wallet) + -DNO_X11=$(usex !X) + ) + kde5_src_configure +} + +pkg_postinst() { + kde5_pkg_postinst + elog "If you were previously using QupZilla, you can manually migrate your profiles" + elog "by moving the config directory from ~/.config/qupzilla to ~/.config/falkon" +} diff --git a/www-client/falkon/files/falkon-3.0.1-page-actions.patch b/www-client/falkon/files/falkon-3.0.1-page-actions.patch new file mode 100644 index 000000000000..be48f000817d --- /dev/null +++ b/www-client/falkon/files/falkon-3.0.1-page-actions.patch @@ -0,0 +1,53 @@ +From 53e0a43762523185fb98bf705f85cf0dfa27247f Mon Sep 17 00:00:00 2001 +From: David Rosca <nowrep@gmail.com> +Date: Sun, 8 Jul 2018 20:34:58 +0200 +Subject: NavigationBar: Correctly reconnect to page actions + +BUG: 395828 +FIXED-IN: 3.0.2 +--- + src/lib/navigation/navigationbar.cpp | 27 ++++++++++++++++----------- + 1 file changed, 16 insertions(+), 11 deletions(-) + +diff --git a/src/lib/navigation/navigationbar.cpp b/src/lib/navigation/navigationbar.cpp +index 0339b55..622622d 100644 +--- a/src/lib/navigation/navigationbar.cpp ++++ b/src/lib/navigation/navigationbar.cpp +@@ -230,19 +230,24 @@ void NavigationBar::setCurrentView(TabbedWebView *view) + return; + } + +- auto updateButton = [](ToolButton *button, QAction *action) { +- button->setEnabled(action->isEnabled()); ++ auto connectPageActions = [this](QWebEnginePage *page) { ++ auto updateButton = [](ToolButton *button, QAction *action) { ++ button->setEnabled(action->isEnabled()); ++ }; ++ auto updateBackButton = std::bind(updateButton, m_buttonBack, page->action(QWebEnginePage::Back)); ++ auto updateForwardButton = std::bind(updateButton, m_buttonForward, page->action(QWebEnginePage::Forward)); ++ ++ updateBackButton(); ++ updateForwardButton(); ++ ++ disconnect(m_backConnection); ++ disconnect(m_forwardConnection); ++ m_backConnection = connect(page->action(QWebEnginePage::Back), &QAction::changed, this, updateBackButton); ++ m_forwardConnection = connect(page->action(QWebEnginePage::Forward), &QAction::changed, this, updateForwardButton); + }; +- auto updateBackButton = std::bind(updateButton, m_buttonBack, view->pageAction(QWebEnginePage::Back)); +- auto updateForwardButton = std::bind(updateButton, m_buttonForward, view->pageAction(QWebEnginePage::Forward)); + +- updateBackButton(); +- updateForwardButton(); +- +- disconnect(m_backConnection); +- disconnect(m_forwardConnection); +- m_backConnection = connect(view->pageAction(QWebEnginePage::Back), &QAction::changed, this, updateBackButton); +- m_forwardConnection = connect(view->pageAction(QWebEnginePage::Forward), &QAction::changed, this, updateForwardButton); ++ connectPageActions(view->page()); ++ connect(view, &TabbedWebView::pageChanged, this, connectPageActions); + } + + void NavigationBar::showReloadButton() +-- +cgit v1.1 diff --git a/www-client/falkon/files/falkon-3.0.1-pyside2-release.patch b/www-client/falkon/files/falkon-3.0.1-pyside2-release.patch new file mode 100644 index 000000000000..13ebb423af96 --- /dev/null +++ b/www-client/falkon/files/falkon-3.0.1-pyside2-release.patch @@ -0,0 +1,26 @@ +From 4c83ba3d6c609a704a31c419b5d89dd1947aa11a Mon Sep 17 00:00:00 2001 +From: David Rosca <nowrep@gmail.com> +Date: Mon, 18 Jun 2018 13:39:46 +0200 +Subject: PyFalkon: Fix build with PySide2 release + +--- + src/plugins/PyFalkon/pyfalkon_global.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/plugins/PyFalkon/pyfalkon_global.h b/src/plugins/PyFalkon/pyfalkon_global.h +index d41da24..0305b67 100644 +--- a/src/plugins/PyFalkon/pyfalkon_global.h ++++ b/src/plugins/PyFalkon/pyfalkon_global.h +@@ -19,6 +19,10 @@ + // Make "signals:", "slots:" visible as access specifiers + #define QT_ANNOTATE_ACCESS_SPECIFIER(a) __attribute__((annotate(#a))) + ++// PYSIDE-711 ++#include <QHstsPolicy> ++#include <QWebEngineContextMenuData> ++ + // 3rdparty + #include "lineedit.h" + #include "squeezelabelv1.h" +-- +cgit v1.1 diff --git a/www-client/falkon/files/falkon-3.0.1-qiodevice-main-thread.patch b/www-client/falkon/files/falkon-3.0.1-qiodevice-main-thread.patch new file mode 100644 index 000000000000..2606dc508857 --- /dev/null +++ b/www-client/falkon/files/falkon-3.0.1-qiodevice-main-thread.patch @@ -0,0 +1,106 @@ +From a7d2f8757919b4db63867ecbb4fb64c11d64f453 Mon Sep 17 00:00:00 2001 +From: David Rosca <nowrep@gmail.com> +Date: Sun, 22 Jul 2018 15:17:04 +0200 +Subject: FalkonSchemeHandler: Make sure to load data on main thread + +QIODevice::read is called on WebEngine IO thread. +--- + .../network/schemehandlers/falkonschemehandler.cpp | 41 +++++++++++----------- + .../network/schemehandlers/falkonschemehandler.h | 2 ++ + 2 files changed, 23 insertions(+), 20 deletions(-) + +diff --git a/src/lib/network/schemehandlers/falkonschemehandler.cpp b/src/lib/network/schemehandlers/falkonschemehandler.cpp +index 5706c04..4e01897 100644 +--- a/src/lib/network/schemehandlers/falkonschemehandler.cpp ++++ b/src/lib/network/schemehandlers/falkonschemehandler.cpp +@@ -89,8 +89,7 @@ FalkonSchemeReply::FalkonSchemeReply(QWebEngineUrlRequestJob *job, QObject *pare + { + m_pageName = m_job->requestUrl().path(); + +- open(QIODevice::ReadOnly); +- m_buffer.open(QIODevice::ReadWrite); ++ QTimer::singleShot(0, this, &FalkonSchemeReply::loadPage); + } + + void FalkonSchemeReply::loadPage() +@@ -98,38 +97,40 @@ void FalkonSchemeReply::loadPage() + if (m_loaded) + return; + +- QTextStream stream(&m_buffer); +- stream.setCodec("UTF-8"); ++ QString contents; + + if (m_pageName == QLatin1String("about")) { +- stream << aboutPage(); +- } +- else if (m_pageName == QLatin1String("start")) { +- stream << startPage(); +- } +- else if (m_pageName == QLatin1String("speeddial")) { +- stream << speeddialPage(); +- } +- else if (m_pageName == QLatin1String("config")) { +- stream << configPage(); +- } +- else if (m_pageName == QLatin1String("restore")) { +- stream << restorePage(); ++ contents = aboutPage(); ++ } else if (m_pageName == QLatin1String("start")) { ++ contents = startPage(); ++ } else if (m_pageName == QLatin1String("speeddial")) { ++ contents = speeddialPage(); ++ } else if (m_pageName == QLatin1String("config")) { ++ contents = configPage(); ++ } else if (m_pageName == QLatin1String("restore")) { ++ contents = restorePage(); + } + +- stream.flush(); +- m_buffer.reset(); ++ QMutexLocker lock(&m_mutex); ++ m_buffer.setData(contents.toUtf8()); ++ m_buffer.open(QIODevice::ReadOnly); ++ lock.unlock(); ++ ++ open(QIODevice::ReadOnly); ++ emit readyRead(); ++ + m_loaded = true; + } + + qint64 FalkonSchemeReply::bytesAvailable() const + { ++ QMutexLocker lock(&m_mutex); + return m_buffer.bytesAvailable(); + } + + qint64 FalkonSchemeReply::readData(char *data, qint64 maxSize) + { +- loadPage(); ++ QMutexLocker lock(&m_mutex); + return m_buffer.read(data, maxSize); + } + +diff --git a/src/lib/network/schemehandlers/falkonschemehandler.h b/src/lib/network/schemehandlers/falkonschemehandler.h +index 2c071a7..b92969d 100644 +--- a/src/lib/network/schemehandlers/falkonschemehandler.h ++++ b/src/lib/network/schemehandlers/falkonschemehandler.h +@@ -18,6 +18,7 @@ + #ifndef FALKONSCHEMEHANDLER_H + #define FALKONSCHEMEHANDLER_H + ++#include <QMutex> + #include <QBuffer> + #include <QIODevice> + #include <QWebEngineUrlSchemeHandler> +@@ -60,6 +61,7 @@ private: + QBuffer m_buffer; + QString m_pageName; + QWebEngineUrlRequestJob *m_job; ++ mutable QMutex m_mutex; + }; + + #endif // FALKONSCHEMEHANDLER_H +-- +cgit v1.1 diff --git a/www-client/falkon/files/falkon-3.0.1-qtwebengine-version.patch b/www-client/falkon/files/falkon-3.0.1-qtwebengine-version.patch new file mode 100644 index 000000000000..7634c30f6164 --- /dev/null +++ b/www-client/falkon/files/falkon-3.0.1-qtwebengine-version.patch @@ -0,0 +1,72 @@ +Combined diffs: + +From d06a0d60e0ff3e9e3d5dbaec17b3447fca665b92 Mon Sep 17 00:00:00 2001 +From: Kevin Kofler <kevin.kofler@chello.at> +Date: Sat, 12 May 2018 03:15:56 +0200 +Subject: Fix the fix for #391300 to require only QtWebEngine 5.10, not Qt 5.10 + +QtWebEngine can be newer than the rest of Qt (e.g., on Fedora 27). + +From 9f0f688ee8ed7d454713db5418c9a86f80fd5850 Mon Sep 17 00:00:00 2001 +From: David Rosca <nowrep@gmail.com> +Date: Mon, 14 May 2018 13:53:05 +0200 +Subject: Use QTWEBENGINE_VERSION instead of QT_VERSION + +Fixes build against separate QtWebEngine releases. + +* asturm@gentoo.org: Make #ifdef obsolete by requiring Qt 5.11.0. + +--- b/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -45,7 +45,7 @@ + + # Mandatory: Qt5 +-set(QT_MIN_VERSION "5.9.0") ++set(QT_MIN_VERSION "5.11.0") +-find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS Core Widgets Network Sql QuickWidgets PrintSupport WebEngineWidgets WebChannel) ++find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS Core Widgets Network Sql QuickWidgets PrintSupport WebEngine WebEngineWidgets WebChannel) + if (BUILD_TESTING) + find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS Test) + endif() +--- a/src/lib/CMakeLists.txt ++++ b/src/lib/CMakeLists.txt +@@ -297,6 +297,9 @@ qt5_add_resources(SRCS + + add_library(FalkonPrivate SHARED ${SRCS}) + ++get_property(QT_WEBENGINE_INCLUDE_DIRS TARGET Qt5::WebEngine PROPERTY INTERFACE_INCLUDE_DIRECTORIES) ++target_include_directories(FalkonPrivate SYSTEM PUBLIC ${QT_WEBENGINE_INCLUDE_DIRS}) ++ + target_link_libraries(FalkonPrivate + Qt5::Widgets + Qt5::WebEngineWidgets +--- a/src/lib/app/qzcommon.h ++++ b/src/lib/app/qzcommon.h +@@ -20,6 +20,7 @@ + + #include <QDebug> + #include <QFlags> ++#include <QtWebEngineVersion> + + #ifdef FALKON_SHAREDLIBRARY + #define FALKON_EXPORT Q_DECL_EXPORT +--- a/src/lib/webengine/webview.cpp 2018-12-09 17:12:29.659899904 +0100 ++++ b/src/lib/webengine/webview.cpp 2018-12-09 17:21:26.083044301 +0100 +@@ -495,7 +495,6 @@ + + void WebView::savePageAs() + { +-#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) + page()->runJavaScript(QSL("document.contentType"), WebPage::SafeJsWorld, [this](const QVariant &res) { + const QSet<QString> webPageTypes = { + QSL("text/html"), +@@ -507,9 +506,6 @@ + page()->download(url()); + } + }); +-#else +- triggerPageAction(QWebEnginePage::SavePage); +-#endif + } + + void WebView::copyImageToClipboard() diff --git a/www-client/falkon/files/falkon-3.0.1-webinspector.patch b/www-client/falkon/files/falkon-3.0.1-webinspector.patch new file mode 100644 index 000000000000..9cfea7e42dc9 --- /dev/null +++ b/www-client/falkon/files/falkon-3.0.1-webinspector.patch @@ -0,0 +1,102 @@ +From 48ca42d645b155069a57eaede3e560874ed07bc7 Mon Sep 17 00:00:00 2001 +From: David Rosca <nowrep@gmail.com> +Date: Thu, 1 Mar 2018 15:14:15 +0100 +Subject: WebInspector: Don't require remote debugging with QtWebEngine 5.11 + +--- + src/lib/webengine/webinspector.cpp | 11 ++++++++++- + src/lib/webengine/webinspector.h | 11 ++++------- + 2 files changed, 14 insertions(+), 8 deletions(-) + +* asturm@gentoo.org: Make #ifdef obsolete by requiring Qt 5.11.0. + + diff -u b/src/lib/webengine/webinspector.cpp b/src/lib/webengine/webinspector.cpp +--- b/src/lib/webengine/webinspector.cpp ++++ b/src/lib/webengine/webinspector.cpp +@@ -19,6 +19,8 @@ + #include "mainapplication.h" + #include "networkmanager.h" + #include "settings.h" ++#include "webview.h" ++#include "webpage.h" + + #include <QJsonArray> + #include <QJsonObject> +@@ -60,27 +62,13 @@ + } + } + +-void WebInspector::setView(QWebEngineView *view) ++void WebInspector::setView(WebView *view) + { + m_view = view; + Q_ASSERT(isEnabled()); + +- int port = qEnvironmentVariableIntValue("QTWEBENGINE_REMOTE_DEBUGGING"); +- QUrl inspectorUrl = QUrl(QSL("http://localhost:%1").arg(port)); +- int index = s_views.indexOf(m_view); +- +- QNetworkReply *reply = mApp->networkManager()->get(QNetworkRequest(inspectorUrl.resolved(QUrl("json/list")))); +- connect(reply, &QNetworkReply::finished, this, [=]() { +- QJsonArray clients = QJsonDocument::fromJson(reply->readAll()).array(); +- QUrl pageUrl; +- if (clients.size() > index) { +- QJsonObject object = clients.at(index).toObject(); +- pageUrl = inspectorUrl.resolved(QUrl(object.value(QSL("devtoolsFrontendUrl")).toString())); +- } +- load(pageUrl); +- pushView(this); +- show(); +- }); ++ page()->setInspectedPage(m_view->page()); ++ connect(m_view, &WebView::pageChanged, this, &WebInspector::deleteLater); + } + + void WebInspector::inspectElement() +@@ -90,9 +78,6 @@ + + bool WebInspector::isEnabled() + { +- if (!qEnvironmentVariableIsSet("QTWEBENGINE_REMOTE_DEBUGGING")) { +- return false; +- } + if (!mApp->webSettings()->testAttribute(QWebEngineSettings::JavascriptEnabled)) { + return false; + } +--- a/src/lib/webengine/webinspector.h ++++ b/src/lib/webengine/webinspector.h +@@ -15,14 +15,13 @@ + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * ============================================================ */ +-#ifndef WEBINSPECTORDOCKWIDGET_H +-#define WEBINSPECTORDOCKWIDGET_H ++#pragma once + + #include <QWebEngineView> + + #include "qzcommon.h" + +-class ToolButton; ++class WebView; + + class FALKON_EXPORT WebInspector : public QWebEngineView + { +@@ -32,7 +31,7 @@ public: + explicit WebInspector(QWidget *parent = Q_NULLPTR); + ~WebInspector(); + +- void setView(QWebEngineView *view); ++ void setView(WebView *view); + void inspectElement(); + + static bool isEnabled(); +@@ -53,7 +52,5 @@ private: + int m_height; + QSize m_windowSize; + bool m_inspectElement = false; +- QWebEngineView *m_view; ++ WebView *m_view; + }; +- +-#endif // WEBINSPECTORDOCKWIDGET_H |