Sophie

Sophie

distrib > Mageia > 9 > aarch64 > media > core-release-src > by-pkgid > aeef1bdbd3886f790da6bb0fa90f248d > files > 4

kchmviewer-8.0-2.mga9.src.rpm

From e4d78dc1a237ff6f538bdde6842b6d51c4d1886f Mon Sep 17 00:00:00 2001
From: "i.Dark_Templar" <darktemplar@dark-templar-archives.net>
Date: Fri, 11 Jun 2021 19:03:31 +0300
Subject: [PATCH 1/3] qtwebengine doesn't have linkClicked signal

---
 src/viewwindowmgr.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/viewwindowmgr.cpp b/src/viewwindowmgr.cpp
index 3b4f521..29a21fc 100644
--- a/src/viewwindowmgr.cpp
+++ b/src/viewwindowmgr.cpp
@@ -142,11 +142,13 @@ ViewWindow * ViewWindowMgr::addNewTab( bool set_active )
 	if ( set_active || m_Windows.size() == 1 )
 		m_tabWidget->setCurrentWidget( tabdata.widget );
 	
+#if defined (USE_WEBKIT)
 	// Handle clicking on link in browser window
 	connect( viewvnd,
 			 SIGNAL( linkClicked ( const QUrl& ) ),
 	         ::mainWindow, 
 			 SLOT( activateUrl( const QUrl& ) ) );
+#endif
 
     connect( viewvnd, SIGNAL(dataLoaded(ViewWindow*)), this, SLOT(onWindowContentChanged(ViewWindow*)));
 

From 0c2e2503de5821bda2bb2a006982a7f41bc84cd2 Mon Sep 17 00:00:00 2001
From: "i.Dark_Templar" <darktemplar@dark-templar-archives.net>
Date: Fri, 11 Jun 2021 20:39:05 +0300
Subject: [PATCH 2/3] qtwebengine: implement opening additional windows except
 for dialogs

---
 src/viewwindow_webengine.cpp | 30 ++++++++++++++++++++++++++++++
 src/viewwindow_webengine.h   |  2 ++
 2 files changed, 32 insertions(+)

diff --git a/src/viewwindow_webengine.cpp b/src/viewwindow_webengine.cpp
index 34f3396..df3859f 100644
--- a/src/viewwindow_webengine.cpp
+++ b/src/viewwindow_webengine.cpp
@@ -290,6 +290,36 @@ void ViewWindow::contextMenuEvent(QContextMenuEvent *e)
     delete m;
 }
 
+QWebEngineView *ViewWindow::createWindow(QWebEnginePage::WebWindowType type)
+{
+    QWebEngineView *tab = nullptr;
+
+    switch (type)
+    {
+    case QWebEnginePage::WebBrowserWindow:
+    case QWebEnginePage::WebBrowserTab:
+    case QWebEnginePage::WebBrowserBackgroundTab:
+        {
+            bool active = (type != QWebEnginePage::WebBrowserBackgroundTab);
+
+            tab = ::mainWindow->viewWindowMgr()->addNewTab(active);
+            tab->setZoomFactor( ::mainWindow->currentBrowser()->zoomFactor() );
+
+            if (active)
+            {
+                tab->setFocus( Qt::OtherFocusReason );
+            }
+        }
+        break;
+
+    case QWebEnginePage::WebDialog:
+        // TODO: implement
+        break;
+    }
+
+    return tab;
+}
+
 void ViewWindow::onLoadFinished ( bool )
 {
     // If m_storedScrollbarPosition is -1 this means we have not had a request to set the scrollbar; change to 0
diff --git a/src/viewwindow_webengine.h b/src/viewwindow_webengine.h
index 3e96690..6312cfc 100644
--- a/src/viewwindow_webengine.h
+++ b/src/viewwindow_webengine.h
@@ -112,6 +112,8 @@ class ViewWindow : public QWebEngineView
         void 			contextMenuEvent( QContextMenuEvent *e );
         //void			mouseReleaseEvent ( QMouseEvent * event );
 
+        virtual QWebEngineView* createWindow(QWebEnginePage::WebWindowType type) override;
+
     private slots:
         // Used to restore the scrollbar position and the navigation button status
         void			onLoadFinished ( bool ok );

From 6b9e95ba8abfc5601e43b7a4d63ff0faa846fe13 Mon Sep 17 00:00:00 2001
From: "i.Dark_Templar" <darktemplar@dark-templar-archives.net>
Date: Fri, 11 Jun 2021 21:02:23 +0300
Subject: [PATCH 3/3] qtwebengine: synchronize url with navigation panel

---
 src/viewwindow_webengine.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/viewwindow_webengine.cpp b/src/viewwindow_webengine.cpp
index df3859f..1bcdf6f 100644
--- a/src/viewwindow_webengine.cpp
+++ b/src/viewwindow_webengine.cpp
@@ -30,6 +30,7 @@
 #include "config.h"
 #include "viewwindow_webengine.h"
 #include "mainwindow.h"
+#include "navigationpanel.h"
 #include "viewwindowmgr.h"
 #include "ebook_chm.h"
 #include "ebook_epub.h"
@@ -86,10 +87,15 @@ ViewWindow::ViewWindow( QWidget * parent )
     pal.setColor( QPalette::Inactive, QPalette::Highlight, pal.color(QPalette::Active, QPalette::Highlight) );
     pal.setColor( QPalette::Inactive, QPalette::HighlightedText, pal.color(QPalette::Active, QPalette::HighlightedText) );
     setPalette( pal );
+
+    connect(this, &QWebEngineView::urlChanged, [this] (const QUrl &url) {
+        ::mainWindow->navigator()->findUrlInContents(url);
+    });
 }
 
 ViewWindow::~ViewWindow()
 {
+    disconnect(this, &QWebEngineView::urlChanged, nullptr, nullptr);
 }
 
 void ViewWindow::invalidate( )