From d162ba1860a88062f4cd61f8b52fc303ba0b2991 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 7 Aug 2021 00:16:33 +0100 Subject: gentoo resync : 07.08.2021 --- ...viewer-8.0-custom-url-scheme-registration.patch | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 app-text/kchmviewer/files/kchmviewer-8.0-custom-url-scheme-registration.patch (limited to 'app-text/kchmviewer/files/kchmviewer-8.0-custom-url-scheme-registration.patch') diff --git a/app-text/kchmviewer/files/kchmviewer-8.0-custom-url-scheme-registration.patch b/app-text/kchmviewer/files/kchmviewer-8.0-custom-url-scheme-registration.patch new file mode 100644 index 000000000000..144d673b2b17 --- /dev/null +++ b/app-text/kchmviewer/files/kchmviewer-8.0-custom-url-scheme-registration.patch @@ -0,0 +1,59 @@ +From 9ac73e7ad15de08aab6b1198115be2eb44da7afe Mon Sep 17 00:00:00 2001 +From: George Yunaev +Date: Fri, 21 May 2021 15:57:21 -0700 +Subject: [PATCH] Custom URL scheme registration needs to be applied once per + https://doc.qt.io/qt-5/qwebengineurlschemehandler.html + +--- + src/viewwindow_webengine.cpp | 20 +++++++++++++------- + src/viewwindow_webengine.h | 3 --- + 2 files changed, 13 insertions(+), 10 deletions(-) + +diff --git a/src/viewwindow_webengine.cpp b/src/viewwindow_webengine.cpp +index 631d84d..34f3396 100644 +--- a/src/viewwindow_webengine.cpp ++++ b/src/viewwindow_webengine.cpp +@@ -63,16 +63,22 @@ ViewWindow::ViewWindow( QWidget * parent ) + m_contextMenuLink = 0; + m_storedScrollbarPosition = -1; // see header + +- // Use our network emulation layer. I don't know if we transfer the ownership when we install it, +- // so we create one per page. May be unnecessary. +- m_provider = new DataProvider_QWebEngine( this ); +- +- page()->profile()->installUrlSchemeHandler( EBook_CHM::urlScheme(), m_provider ); +- page()->profile()->installUrlSchemeHandler( EBook_EPUB::urlScheme(), m_provider ); +- + // All links are going through us + //page()->setLinkDelegationPolicy( QWebPage::DelegateAllLinks ); + ++ // This needs to be done only once ++ static bool providerInstalled = false; ++ ++ if ( !providerInstalled ) ++ { ++ // Use our network emulation layer. We do not transfer the ownership when we install it. See https://doc.qt.io/qt-5/qwebengineurlschemehandler.html ++ DataProvider_QWebEngine * provider = new DataProvider_QWebEngine( 0 ); ++ ++ QWebEngineProfile::defaultProfile()->installUrlSchemeHandler( EBook_CHM::urlScheme(), provider ); ++ QWebEngineProfile::defaultProfile()->installUrlSchemeHandler( EBook_EPUB::urlScheme(), provider ); ++ providerInstalled = true; ++ } ++ + connect( this, SIGNAL( loadFinished(bool)), this, SLOT( onLoadFinished(bool)) ); + + // Search results highlighter +diff --git a/src/viewwindow_webengine.h b/src/viewwindow_webengine.h +index 0adea31..3e96690 100644 +--- a/src/viewwindow_webengine.h ++++ b/src/viewwindow_webengine.h +@@ -128,9 +128,6 @@ class ViewWindow : public QWebEngineView + // It is set to -1 if no scrollbar position has been set and the page is not loaded yet + // It is set to 0 if no scrollbar position has been set and the page is loaded already + int m_storedScrollbarPosition; +- +- // Data provider +- DataProvider_QWebEngine * m_provider; + }; + + #endif // VIEWWINDOW_WEBENGINE_H -- cgit v1.2.3