Date: Wednesday, November 9, 2022 @ 22:06:15
  Author: arojas
Revision: 1346295

upgpkg: qmc2 0.243-2: Port to qt5-webengine

Added:
  qmc2/trunk/webengine.patch
Modified:
  qmc2/trunk/PKGBUILD

-----------------+
 PKGBUILD        |   11 
 webengine.patch | 1245 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 1252 insertions(+), 4 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2022-11-09 22:05:59 UTC (rev 1346294)
+++ PKGBUILD    2022-11-09 22:06:15 UTC (rev 1346295)
@@ -4,18 +4,21 @@
 
 pkgname=qmc2
 pkgver=0.243
-pkgrel=1
+pkgrel=2
 pkgdesc='Qt based UNIX MAME frontend supporting SDLMAME'
 url='https://qmc2.batcom-it.net/'
 license=(GPL)
 arch=(x86_64)
-depends=(qt5-webkit qt5-svg qt5-multimedia qt5-xmlpatterns sdl2 minizip-ng)
+depends=(qt5-webengine qt5-svg qt5-multimedia qt5-xmlpatterns sdl2 minizip-ng)
 makedepends=(rsync)
-source=(https://github.com/qmc2/qmc2-mame-fe/archive/v$pkgver/$pkgname-$pkgver.tar.gz)
-sha256sums=('0608a4e08bc451ae01856b85525f1dc767e01eb823e7e294c772876971e7609b')
+source=(https://github.com/qmc2/qmc2-mame-fe/archive/v$pkgver/$pkgname-$pkgver.tar.gz
+        webengine.patch)
+sha256sums=('0608a4e08bc451ae01856b85525f1dc767e01eb823e7e294c772876971e7609b'
+            'cd72449743a25fd759bb65d205dd2fd3ba0aaeab618efdae80dddc903e8148dd')
 
 prepare() {
   sed -e 's|PKGCONFIG += minizip|PKGCONFIG += minizip-ng|' -i 
$pkgname-mame-fe-$pkgver/qmc2.pro
+  patch -d $pkgname-mame-fe-$pkgver -p1 < webengine.patch # Port to qtwebengine
 }
 
 build() {

Added: webengine.patch
===================================================================
--- webengine.patch                             (rev 0)
+++ webengine.patch     2022-11-09 22:06:15 UTC (rev 1346295)
@@ -0,0 +1,1245 @@
+From 5b423e9aea7bc672b879359871a5c4c2b8a50e8d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ren=C3=A9=20Reucher?= <[email protected]>
+Date: Tue, 31 May 2022 19:20:34 +0200
+Subject: [PATCH] wip: first version with support for QWebEngine instead of
+ QWebKit
+
+---
+ qmc2.pro                      |   2 +-
+ src/htmleditor/htmleditor.cpp | 178 ++++++++++++++++++++--------------
+ src/htmleditor/htmleditor.ui  |  74 +++++++-------
+ src/macros.h                  |   3 -
+ src/miniwebbrowser.cpp        | 171 +++++++++++++++++---------------
+ src/miniwebbrowser.h          |  15 ++-
+ src/options.cpp               |  19 ++--
+ src/qmc2main.cpp              |  12 ++-
+ 9 files changed, 261 insertions(+), 218 deletions(-)
+
+diff --git a/qmc2.pro b/qmc2.pro
+index 46c736d60..15eae4c44 100644
+--- a/qmc2.pro
++++ b/qmc2.pro
+@@ -1,6 +1,6 @@
+ # general project settings
+ isEmpty(TARGET):TARGET = qmc2
+-QT += core gui widgets xml xmlpatterns network sql svg testlib webkitwidgets
++QT += core gui widgets xml xmlpatterns network sql svg testlib 
webenginewidgets
+ win32 {
+       QT += winextras
+ }
+diff --git a/src/htmleditor/htmleditor.cpp b/src/htmleditor/htmleditor.cpp
+index 2dff0d3cc..deb0f747b 100644
+--- a/src/htmleditor/htmleditor.cpp
++++ b/src/htmleditor/htmleditor.cpp
+@@ -46,7 +46,7 @@
+ #include <QMessageBox>
+ #include <QColorDialog>
+ #include <QToolTip>
+-#include <QtWebKitWidgets/QWebFrame>
++#include <QWebEngineView>
+ #include <QListWidgetItem>
+ 
+ #include <algorithm> // std::sort()
+@@ -120,7 +120,6 @@ HtmlEditor::HtmlEditor(QString editorName, bool embedded, 
QWidget *parent) :
+ {
+       ui->setupUi(this);
+ 
+-      // replace the standard QWebView with the MiniWebBrowser's tweaked one
+       ui->verticalLayoutWYSIWYG->removeWidget(ui->webView);
+       delete ui->webView;
+       ui->webView = new BrowserWidget(ui->tabWYSIWYG, 0);
+@@ -224,6 +223,7 @@ HtmlEditor::HtmlEditor(QString editorName, bool embedded, 
QWidget *parent) :
+       connect(zoomSlider, SIGNAL(valueChanged(int)), SLOT(changeZoom(int)));
+       ui->standardToolBar->insertWidget(ui->actionZoomIn, zoomSlider);
+ 
++      /*
+ #if defined(QMC2_BROWSER_PLUGINS_ENABLED)
+       
ui->webView->page()->settings()->setAttribute(QWebSettings::PluginsEnabled, 
true);
+ #else
+@@ -231,6 +231,7 @@ HtmlEditor::HtmlEditor(QString editorName, bool embedded, 
QWidget *parent) :
+ #endif
+       
ui->webView->page()->settings()->setAttribute(QWebSettings::ZoomTextOnly, 
false);
+       
ui->webView->page()->settings()->setAttribute(QWebSettings::LocalStorageEnabled,
 true);
++      */
+ 
+       connect(ui->webView, SIGNAL(loadStarted()), this, 
SLOT(setLoadActive()));
+       connect(ui->webView, SIGNAL(loadFinished(bool)), this, 
SLOT(setLoadInactive()));
+@@ -260,19 +261,17 @@ HtmlEditor::HtmlEditor(QString editorName, bool 
embedded, QWidget *parent) :
+       connect(ui->actionZoomOut, SIGNAL(triggered()), SLOT(zoomOut()));
+       connect(ui->actionZoomIn, SIGNAL(triggered()), SLOT(zoomIn()));
+ 
+-      // these are forwarded to the internal QWebView
+-      FORWARD_ACTION(ui->actionEditUndo, QWebPage::Undo);
+-      FORWARD_ACTION(ui->actionEditRedo, QWebPage::Redo);
+-      FORWARD_ACTION(ui->actionEditCut, QWebPage::Cut);
+-      FORWARD_ACTION(ui->actionEditCopy, QWebPage::Copy);
+-      FORWARD_ACTION(ui->actionEditPaste, QWebPage::Paste);
+-      FORWARD_ACTION(ui->actionFormatBold, QWebPage::ToggleBold);
+-      FORWARD_ACTION(ui->actionFormatItalic, QWebPage::ToggleItalic);
+-      FORWARD_ACTION(ui->actionFormatUnderline, QWebPage::ToggleUnderline);
+-
+-      // Qt 4.5.0 has a bug: always returns 0 for QWebPage::SelectAll
+-      connect(ui->actionEditSelectAll, SIGNAL(triggered()), 
SLOT(editSelectAll()));
+-      // FIXME: still required?
++      // these are forwarded to the internal QWebEngineView
++      FORWARD_ACTION(ui->actionEditUndo, QWebEnginePage::Undo);
++      FORWARD_ACTION(ui->actionEditRedo, QWebEnginePage::Redo);
++      FORWARD_ACTION(ui->actionEditCut, QWebEnginePage::Cut);
++      FORWARD_ACTION(ui->actionEditCopy, QWebEnginePage::Copy);
++      FORWARD_ACTION(ui->actionEditPaste, QWebEnginePage::Paste);
++      /*
++      FORWARD_ACTION(ui->actionFormatBold, QWebEnginePage::ToggleBold);
++      FORWARD_ACTION(ui->actionFormatItalic, QWebEnginePage::ToggleItalic);
++      FORWARD_ACTION(ui->actionFormatUnderline, 
QWebEnginePage::ToggleUnderline);
++      */
+ 
+       connect(ui->actionStyleParagraph, SIGNAL(triggered()), 
SLOT(styleParagraph()));
+       connect(ui->actionStyleHeading1, SIGNAL(triggered()), 
SLOT(styleHeading1()));
+@@ -310,27 +309,31 @@ HtmlEditor::HtmlEditor(QString editorName, bool 
embedded, QWidget *parent) :
+       connect(ui->webView->page(), SIGNAL(linkHovered(const QString &, const 
QString &, const QString &)), SLOT(linkHovered(const QString &, const QString 
&, const QString &)));
+ 
+       // this effectively *disables* internal link-following
+-      
ui->webView->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);
++      
//ui->webView->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);
+       connect(ui->webView, SIGNAL(linkClicked(QUrl)), SLOT(openLink(QUrl)));
+-      
ui->webView->pageAction(QWebPage::OpenImageInNewWindow)->setVisible(false);
+-      
ui->webView->pageAction(QWebPage::DownloadImageToDisk)->setVisible(false);
+-      
ui->webView->pageAction(QWebPage::OpenFrameInNewWindow)->setVisible(false);
+-      
ui->webView->pageAction(QWebPage::OpenLinkInNewWindow)->setVisible(false);
+-      ui->webView->pageAction(QWebPage::OpenLink)->setVisible(false);
+-      
ui->webView->pageAction(QWebPage::DownloadLinkToDisk)->setVisible(false);
+-      ui->webView->pageAction(QWebPage::Back)->setVisible(false);
+-      ui->webView->pageAction(QWebPage::Forward)->setVisible(false);
+-      ui->webView->pageAction(QWebPage::Stop)->setVisible(false);
+-      ui->webView->pageAction(QWebPage::Reload)->setVisible(false);
++      
//ui->webView->pageAction(QWebEnginePage::OpenImageInNewWindow)->setVisible(false);
++      
ui->webView->pageAction(QWebEnginePage::DownloadImageToDisk)->setVisible(false);
++      
//ui->webView->pageAction(QWebEnginePage::OpenFrameInNewWindow)->setVisible(false);
++      
ui->webView->pageAction(QWebEnginePage::OpenLinkInNewWindow)->setVisible(false);
++      //ui->webView->pageAction(QWebEnginePage::OpenLink)->setVisible(false);
++      
ui->webView->pageAction(QWebEnginePage::DownloadLinkToDisk)->setVisible(false);
++      ui->webView->pageAction(QWebEnginePage::Back)->setVisible(false);
++      ui->webView->pageAction(QWebEnginePage::Forward)->setVisible(false);
++      ui->webView->pageAction(QWebEnginePage::Stop)->setVisible(false);
++      ui->webView->pageAction(QWebEnginePage::Reload)->setVisible(false);
+ 
+       ui->webView->setFocus();
+-      ui->webView->page()->setContentEditable(!actionReadOnly->isChecked());
++      if ( actionReadOnly->isChecked() )
++              
ui->webView->page()->runJavaScript("document.documentElement.contentEditable = 
false");
++      else
++              
ui->webView->page()->runJavaScript("document.documentElement.contentEditable = 
true");
+       ui->plainTextEdit->setReadOnly(actionReadOnly->isChecked());
+ 
+       if ( !actionShowHTML->isChecked() )
+               showHtmlTab(false);
+ 
+-      connect(ui->webView->page()->mainFrame(), 
SIGNAL(javaScriptWindowObjectCleared()), this, 
SLOT(javaScriptWindowObjectCleared()));
++      // FIXME
++      //connect(ui->webView->page(), SIGNAL(javaScriptWindowObjectCleared()), 
this, SLOT(javaScriptWindowObjectCleared()));
+ 
+       changeZoom(qmc2Config->value(QMC2_FRONTEND_PREFIX + 
QString("HtmlEditor/%1/Zoom").arg(myEditorName), 100).toInt());
+ 
+@@ -399,22 +402,26 @@ void HtmlEditor::loadFinished(bool)
+ 
+ void HtmlEditor::setContentEditable(bool readonly)
+ {
+-      ui->webView->page()->setContentEditable(!readonly);
++      if ( readonly )
++              
ui->webView->page()->runJavaScript("document.documentElement.contentEditable = 
false");
++      else
++              
ui->webView->page()->runJavaScript("document.documentElement.contentEditable = 
true");
+       ui->plainTextEdit->setReadOnly(readonly);
+ }
+ 
+ void HtmlEditor::checkRevertStatus()
+ {
+       if ( !fileName.isEmpty() ) {
+-              bool wasModified;
+-              if ( loadedContent.isEmpty() )
+-                      wasModified = false;
+-              else if ( ui->tabWidget->currentIndex() == 0 )
+-                      wasModified = loadedContent != 
ui->webView->page()->mainFrame()->toHtml();
+-              else
++              bool wasModified = !loadedContent.isEmpty();
++              if ( ui->tabWidget->currentIndex() == 0 ) {
++                      QString data("%1");
++                      ui->webView->page()->toHtml([data](const QString 
&result) { data.arg(result); });
++                      wasModified = loadedContent != data;
++              } else
+                       wasModified = loadedContent != 
ui->plainTextEdit->toPlainText();
+-              
+-              if ( ui->webView->page()->mainFrame()->toHtml() != emptyContent 
&& wasModified ) {
++              QString data("%1");
++              ui->webView->page()->toHtml([data](const QString &result) { 
data.arg(result); });
++              if ( data != emptyContent && wasModified ) {
+                       QFile f(fileName);
+                       ui->actionFileRevert->setVisible(f.exists());
+               } else
+@@ -446,13 +453,16 @@ QString &HtmlEditor::noScript(QString &data)
+ 
+ void HtmlEditor::fileNew()
+ {
+-      ui->webView->page()->setContentEditable(!actionReadOnly->isChecked());
++      if ( actionReadOnly->isChecked() )
++              
ui->webView->page()->runJavaScript("document.documentElement.contentEditable = 
false");
++      else
++              
ui->webView->page()->runJavaScript("document.documentElement.contentEditable = 
true");
+       ui->plainTextEdit->setReadOnly(actionReadOnly->isChecked());
+ 
+       if ( !isEmbeddedEditor )
+               setCurrentFileName(QString());
+ 
+-      // quirk in QWebView: need an initial mouse click to show the cursor
++      // quirk in QWebEngineView: need an initial mouse click to show the 
cursor
+       int mx = ui->webView->width() / 2;
+       int my = ui->webView->height() / 2;
+       QPoint center = QPoint(mx, my);
+@@ -510,11 +520,12 @@ void HtmlEditor::fileOpenInBrowser()
+       }
+       connect(webBrowser->webViewBrowser->page(), 
SIGNAL(windowCloseRequested()), webBrowser, SLOT(close()));
+       if ( ui->tabWidget->currentIndex() == 1 ) {
+-              
ui->webView->page()->mainFrame()->setHtml(ui->plainTextEdit->toPlainText());
++              ui->webView->page()->setHtml(ui->plainTextEdit->toPlainText());
+               wysiwygDirty = false;
+       }
+-      QString data(ui->webView->page()->mainFrame()->toHtml());
+-      webBrowser->webViewBrowser->setHtml(noScript(data));
++      QString data("%1");
++      webBrowser->webViewBrowser->page()->toHtml([data](const QString 
&result) { data.arg(result); });
++      webBrowser->webViewBrowser->page()->setHtml(noScript(data));
+       if ( !fileName.isEmpty() && QFile(fileName).exists() ) {
+               webBrowser->homeUrl = QUrl::fromUserInput(fileName);
+               
webBrowser->comboBoxURL->lineEdit()->setText(webBrowser->homeUrl.toString());
+@@ -540,10 +551,11 @@ bool HtmlEditor::fileSave()
+       bool success = file.open(QIODevice::WriteOnly);
+       if ( success ) {
+               if ( ui->tabWidget->currentIndex() == 1 ) {
+-                      
ui->webView->page()->mainFrame()->setHtml(ui->plainTextEdit->toPlainText());
++                      
ui->webView->page()->setHtml(ui->plainTextEdit->toPlainText());
+                       wysiwygDirty = false;
+               }
+-              QString content(ui->webView->page()->mainFrame()->toHtml());
++              QString content("%1");
++              ui->webView->page()->toHtml([content](const QString &result) { 
content.arg(result); });
+               QTextStream ts(&file);
+               ts << noScript(content);
+               ts.flush();
+@@ -572,10 +584,11 @@ bool HtmlEditor::fileSaveAs()
+       bool success = file.open(QIODevice::WriteOnly);
+       if ( success ) {
+               if ( ui->tabWidget->currentIndex() == 1 ) {
+-                      
ui->webView->page()->mainFrame()->setHtml(ui->plainTextEdit->toPlainText());
++                      
ui->webView->page()->setHtml(ui->plainTextEdit->toPlainText());
+                       wysiwygDirty = false;
+               }
+-              QString content(ui->webView->page()->mainFrame()->toHtml());
++              QString content("%1");
++              ui->webView->page()->toHtml([content](const QString &result) { 
content.arg(result); });
+               QTextStream ts(&file);
+               ts << noScript(content);
+               ts.flush();
+@@ -751,38 +764,41 @@ void HtmlEditor::zoomIn()
+ 
+ void HtmlEditor::editSelectAll()
+ {
+-      ui->webView->triggerPageAction(QWebPage::SelectAll);
++      ui->webView->triggerPageAction(QWebEnginePage::SelectAll);
+ }
+ 
+ void HtmlEditor::execCommand(const QString &cmd)
+ {
+-      QWebFrame *frame = ui->webView->page()->mainFrame();
++      QWebEnginePage *page = ui->webView->page();
+       QString js(QString("document.execCommand(\"%1\", false, 
null)").arg(cmd));
+-      frame->evaluateJavaScript(js);
++      page->runJavaScript(js);
+       localModified = true;
+ }
+ 
+ void HtmlEditor::execCommand(const QString &cmd, const QString &arg)
+ {
+-      QWebFrame *frame = ui->webView->page()->mainFrame();
++      QWebEnginePage *page = ui->webView->page();
+       QString js(QString("document.execCommand(\"%1\", false, 
\"%2\")").arg(cmd).arg(arg));
+-      frame->evaluateJavaScript(js);
++      page->runJavaScript(js);
+       localModified = true;
+ }
+ 
+ bool HtmlEditor::queryCommandState(const QString &cmd)
+ {
+-      QWebFrame *frame = ui->webView->page()->mainFrame();
++      QWebEnginePage *page = ui->webView->page();
+       QString js(QString("document.queryCommandState(\"%1\", false, 
null)").arg(cmd));
+-      QVariant result = frame->evaluateJavaScript(js);
+-      return result.toString().simplified().toLower() == "true";
++      QString result("%1");
++      page->runJavaScript(js, [result](const QVariant &r) { 
result.arg(r.toString()); });
++      return result.simplified().toLower() == "true";
+ }
+ 
+ void HtmlEditor::styleParagraph()
+ {
+       execCommand("formatBlock", "p");
+       if ( generateEmptyContent ) {
+-              emptyContent = ui->webView->page()->mainFrame()->toHtml();
++              QString data("%1");
++              ui->webView->page()->toHtml([data](const QString &result) { 
data.arg(result); });
++              emptyContent = data;
+               generateEmptyContent = false;
+       }
+ }
+@@ -907,14 +923,16 @@ void HtmlEditor::formatBackgroundColor()
+ 
+ void HtmlEditor::adjustActions()
+ {
+-      FOLLOW_ENABLE(ui->actionEditUndo, QWebPage::Undo);
+-      FOLLOW_ENABLE(ui->actionEditRedo, QWebPage::Redo);
+-      FOLLOW_ENABLE(ui->actionEditCut, QWebPage::Cut);
+-      FOLLOW_ENABLE(ui->actionEditCopy, QWebPage::Copy);
+-      FOLLOW_ENABLE(ui->actionEditPaste, QWebPage::Paste);
+-      FOLLOW_CHECK(ui->actionFormatBold, QWebPage::ToggleBold);
+-      FOLLOW_CHECK(ui->actionFormatItalic, QWebPage::ToggleItalic);
+-      FOLLOW_CHECK(ui->actionFormatUnderline, QWebPage::ToggleUnderline);
++      FOLLOW_ENABLE(ui->actionEditUndo, QWebEnginePage::Undo);
++      FOLLOW_ENABLE(ui->actionEditRedo, QWebEnginePage::Redo);
++      FOLLOW_ENABLE(ui->actionEditCut, QWebEnginePage::Cut);
++      FOLLOW_ENABLE(ui->actionEditCopy, QWebEnginePage::Copy);
++      FOLLOW_ENABLE(ui->actionEditPaste, QWebEnginePage::Paste);
++      /*
++      FOLLOW_CHECK(ui->actionFormatBold, QWebEnginePage::ToggleBold);
++      FOLLOW_CHECK(ui->actionFormatItalic, QWebEnginePage::ToggleItalic);
++      FOLLOW_CHECK(ui->actionFormatUnderline, 
QWebEnginePage::ToggleUnderline);
++      */
+ 
+       
ui->actionFormatStrikethrough->setChecked(queryCommandState("strikeThrough"));
+       
ui->actionFormatNumberedList->setChecked(queryCommandState("insertOrderedList"));
+@@ -940,7 +958,7 @@ void HtmlEditor::changeTab(int index)
+       switch ( index ) {
+               case 0:
+                       if ( wysiwygDirty ) {
+-                              
ui->webView->page()->mainFrame()->setHtml(ui->plainTextEdit->toPlainText());
++                              
ui->webView->page()->setHtml(ui->plainTextEdit->toPlainText());
+                               wysiwygDirty = false;
+                       }
+                       break;
+@@ -948,7 +966,9 @@ void HtmlEditor::changeTab(int index)
+               case 1:
+                       if ( htmlDirty ) {
+                               ui->plainTextEdit->blockSignals(true);
+-                              
ui->plainTextEdit->setPlainText(ui->webView->page()->mainFrame()->toHtml());
++                              QString data("%1");
++                              ui->webView->page()->toHtml([data](const 
QString &result) { data.arg(result); });
++                              ui->plainTextEdit->setPlainText(data);
+                               ui->plainTextEdit->blockSignals(false);
+                               htmlDirty = false;
+                       }
+@@ -1021,7 +1041,10 @@ bool HtmlEditor::load(const QString &f)
+               loadedContent = data;
+ 
+       ui->webView->setHtml(data);
+-      ui->webView->page()->setContentEditable(!actionReadOnly->isChecked());
++      if ( actionReadOnly->isChecked() )
++              
ui->webView->page()->runJavaScript("document.documentElement.contentEditable = 
false");
++      else
++              
ui->webView->page()->runJavaScript("document.documentElement.contentEditable = 
true");
+       ui->plainTextEdit->setReadOnly(actionReadOnly->isChecked());
+ 
+       if ( fileName.isEmpty() )
+@@ -1093,11 +1116,16 @@ bool HtmlEditor::loadTemplate(const QString &f)
+       }
+       if ( !qmc2CleaningUp && !stopLoading ) {
+               ui->webView->setHtml(data, QUrl::fromLocalFile(f));
+-              
ui->webView->page()->setContentEditable(!actionReadOnly->isChecked());
++              if ( actionReadOnly->isChecked() )
++                      
ui->webView->page()->runJavaScript("document.documentElement.contentEditable = 
false");
++              else
++                      
ui->webView->page()->runJavaScript("document.documentElement.contentEditable = 
true");
+               ui->plainTextEdit->setReadOnly(actionReadOnly->isChecked());
+               if ( fileName.isEmpty() )
+                       setCurrentFileName(f);
+-              emptyContent = ui->webView->page()->mainFrame()->toHtml();
++              QString data("%1");
++              ui->webView->page()->toHtml([data](const QString &result) { 
data.arg(result); });
++              emptyContent = data;
+               adjustHTML();
+       } else
+               emptyContent = "QMC2_INVALID";
+@@ -1107,8 +1135,9 @@ bool HtmlEditor::loadTemplate(const QString &f)
+ 
+ void HtmlEditor::javaScriptWindowObjectCleared()
+ {
+-      
ui->webView->page()->mainFrame()->addToJavaScriptWindowObject("qmc2NotesEditorObject",
 this);
+-      
ui->webView->page()->mainFrame()->addToJavaScriptWindowObject("qmc2NEO", this);
++      // FIXME
++      
//ui->webView->page()->addToJavaScriptWindowObject("qmc2NotesEditorObject", 
this);
++      //ui->webView->page()->addToJavaScriptWindowObject("qmc2NEO", this);
+ }
+ 
+ QString HtmlEditor::getIconData()
+@@ -1627,18 +1656,17 @@ bool HtmlEditor::save()
+       if ( emptyContent == "QMC2_INVALID" )
+               return true;
+ 
+-      if ( !ui->webView->page()->isModified() && 
!ui->plainTextEdit->document()->isModified() && !localModified )
+-              return true;
+-
+       if ( fileName.isEmpty() )
+               return false;
+ 
+       if ( ui->tabWidget->currentIndex() == 1 ) {
+-              
ui->webView->page()->mainFrame()->setHtml(ui->plainTextEdit->toPlainText());
++              ui->webView->page()->setHtml(ui->plainTextEdit->toPlainText());
+               wysiwygDirty = false;
+       }
+ 
+-      loadedContent = ui->webView->page()->mainFrame()->toHtml();
++      QString data("%1");
++      ui->webView->page()->toHtml([data](const QString &result) { 
data.arg(result); });
++      loadedContent = data;
+ 
+       if ( loadedContent == emptyContent ) {
+               QFile f(fileName);
+diff --git a/src/htmleditor/htmleditor.ui b/src/htmleditor/htmleditor.ui
+index 8f64543bb..1bdab5bfa 100644
+--- a/src/htmleditor/htmleditor.ui
++++ b/src/htmleditor/htmleditor.ui
+@@ -41,7 +41,7 @@
+          <number>0</number>
+         </property>
+         <item>
+-         <widget class="QWebView" name="webView">
++         <widget class="QWebEngineView" name="webView">
+           <property name="url">
+            <url>
+             <string>about:blank</string>
+@@ -107,7 +107,7 @@
+       <string>Insert &amp;image</string>
+      </property>
+      <property name="icon">
+-      <iconset resource="../qmc2.qrc">
++     <iconset resource="../../qmc2.qrc">
+        
<normaloff>:/htmleditor/images/image-x-generic.png</normaloff>:/htmleditor/images/image-x-generic.png</iconset>
+      </property>
+      <addaction name="actionInsertImageFromFile"/>
+@@ -236,7 +236,7 @@
+   </widget>
+   <action name="actionFileNew">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++   <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/document-new.png</normaloff>:/htmleditor/images/document-new.png</iconset>
+    </property>
+    <property name="text">
+@@ -254,7 +254,7 @@
+   </action>
+   <action name="actionFileNewFromTemplate">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/document-new.png</normaloff>:/htmleditor/images/document-new.png</iconset>
+    </property>
+    <property name="text">
+@@ -272,7 +272,7 @@
+   </action>
+   <action name="actionFileRevert">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/edit-undo.png</normaloff>:/htmleditor/images/edit-undo.png</iconset>
+    </property>
+    <property name="text">
+@@ -290,7 +290,7 @@
+   </action>
+   <action name="actionFileOpen">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/document-open.png</normaloff>:/htmleditor/images/document-open.png</iconset>
+    </property>
+    <property name="text">
+@@ -308,7 +308,7 @@
+   </action>
+   <action name="actionFileSave">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/document-save.png</normaloff>:/htmleditor/images/document-save.png</iconset>
+    </property>
+    <property name="text">
+@@ -326,7 +326,7 @@
+   </action>
+   <action name="actionFileSaveAs">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/data/img/filesaveas.png</normaloff>:/data/img/filesaveas.png</iconset>
+    </property>
+    <property name="text">
+@@ -344,7 +344,7 @@
+   </action>
+   <action name="actionFileOpenInBrowser">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/data/img/browser.png</normaloff>:/data/img/browser.png</iconset>
+    </property>
+    <property name="text">
+@@ -362,7 +362,7 @@
+   </action>
+   <action name="actionEditUndo">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/edit-undo.png</normaloff>:/htmleditor/images/edit-undo.png</iconset>
+    </property>
+    <property name="text">
+@@ -374,7 +374,7 @@
+   </action>
+   <action name="actionEditRedo">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/edit-redo.png</normaloff>:/htmleditor/images/edit-redo.png</iconset>
+    </property>
+    <property name="text">
+@@ -386,7 +386,7 @@
+   </action>
+   <action name="actionEditCut">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/edit-cut.png</normaloff>:/htmleditor/images/edit-cut.png</iconset>
+    </property>
+    <property name="text">
+@@ -398,7 +398,7 @@
+   </action>
+   <action name="actionEditCopy">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/edit-copy.png</normaloff>:/htmleditor/images/edit-copy.png</iconset>
+    </property>
+    <property name="text">
+@@ -410,7 +410,7 @@
+   </action>
+   <action name="actionEditPaste">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/edit-paste.png</normaloff>:/htmleditor/images/edit-paste.png</iconset>
+    </property>
+    <property name="text">
+@@ -422,7 +422,7 @@
+   </action>
+   <action name="actionEditSelectAll">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/edit-select-all.png</normaloff>:/htmleditor/images/edit-select-all.png</iconset>
+    </property>
+    <property name="text">
+@@ -437,7 +437,7 @@
+     <bool>true</bool>
+    </property>
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/format-text-bold.png</normaloff>:/htmleditor/images/format-text-bold.png</iconset>
+    </property>
+    <property name="text">
+@@ -452,7 +452,7 @@
+     <bool>true</bool>
+    </property>
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/format-text-italic.png</normaloff>:/htmleditor/images/format-text-italic.png</iconset>
+    </property>
+    <property name="text">
+@@ -467,7 +467,7 @@
+     <bool>true</bool>
+    </property>
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/format-text-underline.png</normaloff>:/htmleditor/images/format-text-underline.png</iconset>
+    </property>
+    <property name="text">
+@@ -482,7 +482,7 @@
+     <bool>true</bool>
+    </property>
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/format-text-strikethrough.png</normaloff>:/htmleditor/images/format-text-strikethrough.png</iconset>
+    </property>
+    <property name="text">
+@@ -494,7 +494,7 @@
+   </action>
+   <action name="actionFormatAlignLeft">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/format-justify-left.png</normaloff>:/htmleditor/images/format-justify-left.png</iconset>
+    </property>
+    <property name="text">
+@@ -506,7 +506,7 @@
+   </action>
+   <action name="actionFormatAlignCenter">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/format-justify-center.png</normaloff>:/htmleditor/images/format-justify-center.png</iconset>
+    </property>
+    <property name="text">
+@@ -518,7 +518,7 @@
+   </action>
+   <action name="actionFormatAlignRight">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/format-justify-right.png</normaloff>:/htmleditor/images/format-justify-right.png</iconset>
+    </property>
+    <property name="text">
+@@ -530,7 +530,7 @@
+   </action>
+   <action name="actionFormatAlignJustify">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/format-justify-fill.png</normaloff>:/htmleditor/images/format-justify-fill.png</iconset>
+    </property>
+    <property name="text">
+@@ -542,7 +542,7 @@
+   </action>
+   <action name="actionFormatIncreaseIndent">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/format-indent-more.png</normaloff>:/htmleditor/images/format-indent-more.png</iconset>
+    </property>
+    <property name="text">
+@@ -554,7 +554,7 @@
+   </action>
+   <action name="actionFormatDecreaseIndent">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/format-indent-less.png</normaloff>:/htmleditor/images/format-indent-less.png</iconset>
+    </property>
+    <property name="text">
+@@ -569,7 +569,7 @@
+     <bool>true</bool>
+    </property>
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/bulleted-list.png</normaloff>:/htmleditor/images/bulleted-list.png</iconset>
+    </property>
+    <property name="text">
+@@ -584,7 +584,7 @@
+     <bool>true</bool>
+    </property>
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/numbered-list.png</normaloff>:/htmleditor/images/numbered-list.png</iconset>
+    </property>
+    <property name="text">
+@@ -596,7 +596,7 @@
+   </action>
+   <action name="actionInsertImageFromFile">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/document-open.png</normaloff>:/htmleditor/images/document-open.png</iconset>
+    </property>
+    <property name="text">
+@@ -608,7 +608,7 @@
+   </action>
+   <action name="actionInsertImageFromUrl">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/text-html.png</normaloff>:/htmleditor/images/text-html.png</iconset>
+    </property>
+    <property name="text">
+@@ -620,7 +620,7 @@
+   </action>
+   <action name="actionCreateLink">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/text-html.png</normaloff>:/htmleditor/images/text-html.png</iconset>
+    </property>
+    <property name="text">
+@@ -632,7 +632,7 @@
+   </action>
+   <action name="actionZoomOut">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/list-remove.png</normaloff>:/htmleditor/images/list-remove.png</iconset>
+    </property>
+    <property name="text">
+@@ -644,7 +644,7 @@
+   </action>
+   <action name="actionZoomIn">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/list-add.png</normaloff>:/htmleditor/images/list-add.png</iconset>
+    </property>
+    <property name="text">
+@@ -733,7 +733,7 @@
+   </action>
+   <action name="actionInsertHtml">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/insert-html.png</normaloff>:/htmleditor/images/insert-html.png</iconset>
+    </property>
+    <property name="text">
+@@ -751,7 +751,7 @@
+   </action>
+   <action name="actionInsertTable">
+    <property name="icon">
+-    <iconset resource="../qmc2.qrc">
++         <iconset resource="../../qmc2.qrc">
+      
<normaloff>:/htmleditor/images/insert-table.png</normaloff>:/htmleditor/images/insert-table.png</iconset>
+    </property>
+    <property name="text">
+@@ -769,13 +769,13 @@
+  </widget>
+  <customwidgets>
+   <customwidget>
+-   <class>QWebView</class>
++   <class>QWebEngineView</class>
+    <extends>QWidget</extends>
+-   <header>QtWebKitWidgets/QWebView</header>
++   <header>QWebEngineView</header>
+   </customwidget>
+  </customwidgets>
+  <resources>
+-  <include location="../qmc2.qrc"/>
++       <include location="../../qmc2.qrc"/>
+  </resources>
+  <connections/>
+ </ui>
+diff --git a/src/macros.h b/src/macros.h
+index a7b15451d..66b7534e7 100644
+--- a/src/macros.h
++++ b/src/macros.h
+@@ -558,9 +558,6 @@
+ // ProjectMESS base URL (default)
+ #define QMC2_PROJECT_MESS_BASE_URL            
"http://www.progettoemma.net/mess/gioco.php?game=%1&list=%2";
+ 
+-// maximum number of pages held in QtWebKit's page cache
+-#define QMC2_BROWSER_CACHE_PAGES              100
+-
+ // type conversions
+ #define QMC2_TO_UINT32(a)                     ((uchar)*((a) + 0) * 
(quint32)16777216ULL + \
+                                               (uchar)*((a) + 1) * 
(quint32)65536ULL + \
+diff --git a/src/miniwebbrowser.cpp b/src/miniwebbrowser.cpp
+index c704088fb..b9dbddae4 100644
+--- a/src/miniwebbrowser.cpp
++++ b/src/miniwebbrowser.cpp
+@@ -4,9 +4,8 @@
+ #include <QApplication>
+ #include <QDesktopWidget>
+ #include <QDir>
+-#include <QtWebKitWidgets/QWebFrame>
+-#include <QtWebKitWidgets/QWebInspector>
+-#include <QWebHistory>
++#include <QWebEngineHistory>
++#include <QWebEngineSettings>
+ #include <QFontMetrics>
+ 
+ #include "settings.h"
+@@ -29,8 +28,6 @@ MiniWebBrowser::MiniWebBrowser(QWidget *parent, bool 
useAsPdfViewer)
+       setObjectName("MiniWebBrowser");
+       m_isPdfViewer = useAsPdfViewer;
+ 
+-      QWebSettings::setMaximumPagesInCache(QMC2_BROWSER_CACHE_PAGES);
+-
+       if ( MiniWebBrowser::supportedSchemes.isEmpty() )
+               MiniWebBrowser::supportedSchemes << "http" << "ftp" << "file";
+ 
+@@ -64,17 +61,16 @@ MiniWebBrowser::MiniWebBrowser(QWidget *parent, bool 
useAsPdfViewer)
+       iconCache.setMaxCost(QMC2_BROWSER_ICONCACHE_SIZE);
+ 
+       // we want the same global network access manager for all browsers
+-      
webViewBrowser->page()->setNetworkAccessManager(qmc2NetworkAccessManager);
++      
//webViewBrowser->page()->setNetworkAccessManager(qmc2NetworkAccessManager);
+ 
+       // we want to manipulate the link activation
+-      
webViewBrowser->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);
++      
//webViewBrowser->page()->setLinkDelegationPolicy(QWebEnginePage::DelegateAllLinks);
+ 
+       // connect page actions we provide
+       connect(webViewBrowser->page(), SIGNAL(downloadRequested(const 
QNetworkRequest &)), this, SLOT(processPageActionDownloadRequested(const 
QNetworkRequest &)));
+       connect(webViewBrowser->page(), SIGNAL(unsupportedContent(QNetworkReply 
*)), this, SLOT(processPageActionHandleUnsupportedContent(QNetworkReply *)));
+       connect(webViewBrowser->page(), SIGNAL(linkHovered(const QString &, 
const QString &, const QString &)), this, SLOT(webViewBrowser_linkHovered(const 
QString &, const QString &, const QString &)));
+       connect(webViewBrowser->page(), 
SIGNAL(statusBarVisibilityChangeRequested(bool)), this, 
SLOT(webViewBrowser_statusBarVisibilityChangeRequested(bool)));
+-      connect(webViewBrowser->page(), SIGNAL(frameCreated(QWebFrame *)), 
this, SLOT(webViewBrowser_frameCreated(QWebFrame *)));
+ 
+       connect(webViewBrowser, SIGNAL(linkClicked(const QUrl)), this, 
SLOT(webViewBrowser_linkClicked(const QUrl)));
+       connect(webViewBrowser, SIGNAL(urlChanged(const QUrl)), this, 
SLOT(webViewBrowser_urlChanged(const QUrl)));
+@@ -89,97 +85,103 @@ MiniWebBrowser::MiniWebBrowser(QWidget *parent, bool 
useAsPdfViewer)
+       if ( isPdfViewer() ) {
+               frameUrl->hide();
+               // hide all page actions
+-              for (QWebPage::WebAction pa = QWebPage::OpenLink; pa != 
QWebPage::AlignRight; pa = 
static_cast<QWebPage::WebAction>(static_cast<int>(pa) + 1)) {
++              /*
++              for (QWebEnginePage::WebAction pa = QWebEnginePage::Back; pa != 
QWebEnginePage::InsertUnorderedList; pa = 
static_cast<QWebEnginePage::WebAction>(static_cast<int>(pa) + 1)) {
+                       QAction *a= webViewBrowser->pageAction(pa);
+                       if ( a )
+                               a->setVisible(false);
+               }
++              */
+       } else {
++              /* 
+               // hide page actions we don't provide
+-              
webViewBrowser->pageAction(QWebPage::OpenFrameInNewWindow)->setVisible(false);
++              
webViewBrowser->pageAction(QWebEnginePage::OpenFrameInNewWindow)->setVisible(false);
+ 
+               // change provided page actions to better fit our usage / 
integrate into QMC2's look
+-              
webViewBrowser->pageAction(QWebPage::OpenLink)->setText(tr("Open link"));
+-              
webViewBrowser->pageAction(QWebPage::OpenLink)->setIcon(QIcon(QString::fromUtf8(":/data/img/fileopen.png")));
+-              
webViewBrowser->pageAction(QWebPage::OpenLinkInNewWindow)->setText(tr("Open 
link in new window"));
+-              
webViewBrowser->pageAction(QWebPage::OpenLinkInNewWindow)->setIcon(QIcon(QString::fromUtf8(":/data/img/browser.png")));
+-              
webViewBrowser->pageAction(QWebPage::OpenImageInNewWindow)->setText(tr("Open 
image in new window"));
+-              
webViewBrowser->pageAction(QWebPage::OpenImageInNewWindow)->setIcon(QIcon(QString::fromUtf8(":/data/img/thumbnail.png")));
+-              
webViewBrowser->pageAction(QWebPage::DownloadLinkToDisk)->setText(tr("Save link 
as..."));
+-              
webViewBrowser->pageAction(QWebPage::DownloadLinkToDisk)->setIcon(QIcon(QString::fromUtf8(":/data/img/filesaveas.png")));
+-              
webViewBrowser->pageAction(QWebPage::CopyLinkToClipboard)->setText(tr("Copy 
link"));
+-              
webViewBrowser->pageAction(QWebPage::CopyLinkToClipboard)->setIcon(QIcon(QString::fromUtf8(":/data/img/editcopy.png")));
+-              
webViewBrowser->pageAction(QWebPage::DownloadImageToDisk)->setText(tr("Save 
image as..."));
+-              
webViewBrowser->pageAction(QWebPage::DownloadImageToDisk)->setIcon(QIcon(QString::fromUtf8(":/data/img/filesaveas.png")));
+-              
webViewBrowser->pageAction(QWebPage::CopyImageToClipboard)->setText(tr("Copy 
image"));
+-              
webViewBrowser->pageAction(QWebPage::CopyImageToClipboard)->setIcon(QIcon(QString::fromUtf8(":/data/img/editcopy.png")));
+-              
webViewBrowser->pageAction(QWebPage::CopyImageUrlToClipboard)->setText(tr("Copy 
image address"));
+-              webViewBrowser->pageAction(QWebPage::Back)->setText(tr("Go 
back"));
+-              
webViewBrowser->pageAction(QWebPage::Back)->setIcon(QIcon(QString::fromUtf8(":/data/img/back.png")));
+-              webViewBrowser->pageAction(QWebPage::Forward)->setText(tr("Go 
forward"));
+-              
webViewBrowser->pageAction(QWebPage::Forward)->setIcon(QIcon(QString::fromUtf8(":/data/img/forward.png")));
+-              
webViewBrowser->pageAction(QWebPage::Reload)->setText(tr("Reload"));
+-              
webViewBrowser->pageAction(QWebPage::Reload)->setIcon(QIcon(QString::fromUtf8(":/data/img/reload.png")));
+-              webViewBrowser->pageAction(QWebPage::Stop)->setText(tr("Stop"));
+-              
webViewBrowser->pageAction(QWebPage::Stop)->setIcon(QIcon(QString::fromUtf8(":/data/img/stop_browser.png")));
+-              webViewBrowser->pageAction(QWebPage::Copy)->setText(tr("Copy"));
+-              
webViewBrowser->pageAction(QWebPage::Copy)->setIcon(QIcon(QString::fromUtf8(":/data/img/editcopy.png")));
++              
webViewBrowser->pageAction(QWebEnginePage::OpenLink)->setText(tr("Open link"));
++              
webViewBrowser->pageAction(QWebEnginePage::OpenLink)->setIcon(QIcon(QString::fromUtf8(":/data/img/fileopen.png")));
++              
webViewBrowser->pageAction(QWebEnginePage::OpenLinkInNewWindow)->setText(tr("Open
 link in new window"));
++              
webViewBrowser->pageAction(QWebEnginePage::OpenLinkInNewWindow)->setIcon(QIcon(QString::fromUtf8(":/data/img/browser.png")));
++              
webViewBrowser->pageAction(QWebEnginePage::OpenImageInNewWindow)->setText(tr("Open
 image in new window"));
++              
webViewBrowser->pageAction(QWebEnginePage::OpenImageInNewWindow)->setIcon(QIcon(QString::fromUtf8(":/data/img/thumbnail.png")));
++              
webViewBrowser->pageAction(QWebEnginePage::DownloadLinkToDisk)->setText(tr("Save
 link as..."));
++              
webViewBrowser->pageAction(QWebEnginePage::DownloadLinkToDisk)->setIcon(QIcon(QString::fromUtf8(":/data/img/filesaveas.png")));
++              
webViewBrowser->pageAction(QWebEnginePage::CopyLinkToClipboard)->setText(tr("Copy
 link"));
++              
webViewBrowser->pageAction(QWebEnginePage::CopyLinkToClipboard)->setIcon(QIcon(QString::fromUtf8(":/data/img/editcopy.png")));
++              
webViewBrowser->pageAction(QWebEnginePage::DownloadImageToDisk)->setText(tr("Save
 image as..."));
++              
webViewBrowser->pageAction(QWebEnginePage::DownloadImageToDisk)->setIcon(QIcon(QString::fromUtf8(":/data/img/filesaveas.png")));
++              
webViewBrowser->pageAction(QWebEnginePage::CopyImageToClipboard)->setText(tr("Copy
 image"));
++              
webViewBrowser->pageAction(QWebEnginePage::CopyImageToClipboard)->setIcon(QIcon(QString::fromUtf8(":/data/img/editcopy.png")));
++              
webViewBrowser->pageAction(QWebEnginePage::CopyImageUrlToClipboard)->setText(tr("Copy
 image address"));
++              
webViewBrowser->pageAction(QWebEnginePage::Back)->setText(tr("Go back"));
++              
webViewBrowser->pageAction(QWebEnginePage::Back)->setIcon(QIcon(QString::fromUtf8(":/data/img/back.png")));
++              
webViewBrowser->pageAction(QWebEnginePage::Forward)->setText(tr("Go forward"));
++              
webViewBrowser->pageAction(QWebEnginePage::Forward)->setIcon(QIcon(QString::fromUtf8(":/data/img/forward.png")));
++              
webViewBrowser->pageAction(QWebEnginePage::Reload)->setText(tr("Reload"));
++              
webViewBrowser->pageAction(QWebEnginePage::Reload)->setIcon(QIcon(QString::fromUtf8(":/data/img/reload.png")));
++              
webViewBrowser->pageAction(QWebEnginePage::Stop)->setText(tr("Stop"));
++              
webViewBrowser->pageAction(QWebEnginePage::Stop)->setIcon(QIcon(QString::fromUtf8(":/data/img/stop_browser.png")));
++              
webViewBrowser->pageAction(QWebEnginePage::Copy)->setText(tr("Copy"));
++              
webViewBrowser->pageAction(QWebEnginePage::Copy)->setIcon(QIcon(QString::fromUtf8(":/data/img/editcopy.png")));
+ #if defined(QMC2_BROWSER_EXTRAS_ENABLED)
+-              
webViewBrowser->pageAction(QWebPage::InspectElement)->setText(tr("Inspect"));
+-              
webViewBrowser->pageAction(QWebPage::InspectElement)->setIcon(QIcon(QString::fromUtf8(":/data/img/inspect.png")));
++              
webViewBrowser->pageAction(QWebEnginePage::InspectElement)->setText(tr("Inspect"));
++              
webViewBrowser->pageAction(QWebEnginePage::InspectElement)->setIcon(QIcon(QString::fromUtf8(":/data/img/inspect.png")));
+ #endif
++              */
+ 
+               // connect page actions to own routines
+-              connect(webViewBrowser->pageAction(QWebPage::Back), 
SIGNAL(triggered()), this, SLOT(checkBackAndForward()));
+-              connect(webViewBrowser->pageAction(QWebPage::Forward), 
SIGNAL(triggered()), this, SLOT(checkBackAndForward()));
++              connect(webViewBrowser->pageAction(QWebEnginePage::Back), 
SIGNAL(triggered()), this, SLOT(checkBackAndForward()));
++              connect(webViewBrowser->pageAction(QWebEnginePage::Forward), 
SIGNAL(triggered()), this, SLOT(checkBackAndForward()));
+       }
+ 
+       // setup browser settings
++      /*
+       
webViewBrowser->page()->settings()->setIconDatabasePath(Options::configPath());
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::AutoLoadImages, 
true);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::AutoLoadImages,
 true);
+ #if defined(QMC2_BROWSER_JAVASCRIPT_ENABLED)
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::JavascriptEnabled,
 true);
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows,
 true);
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard,
 true);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::JavascriptEnabled,
 true);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows,
 true);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::JavascriptCanAccessClipboard,
 true);
+ #else
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::JavascriptEnabled,
 false);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::JavascriptEnabled,
 false);
+ #endif
+ #if defined(QMC2_BROWSER_JAVA_ENABLED)
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::JavaEnabled, 
true);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::JavaEnabled,
 true);
+ #else
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::JavaEnabled, 
false);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::JavaEnabled,
 false);
+ #endif
+ #if defined(QMC2_BROWSER_PLUGINS_ENABLED)
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::PluginsEnabled, 
true);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::PluginsEnabled,
 true);
+ #else
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::PluginsEnabled, 
false);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::PluginsEnabled,
 false);
+ #endif
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::PrivateBrowsingEnabled,
 false);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::PrivateBrowsingEnabled,
 false);
+ #if defined(QMC2_BROWSER_EXTRAS_ENABLED)
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled,
 true);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::DeveloperExtrasEnabled,
 true);
+ #else
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled,
 false);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::DeveloperExtrasEnabled,
 false);
+ #endif
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::LinksIncludedInFocusChain,
 false);
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::ZoomTextOnly, 
false);
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::PrintElementBackgrounds,
 false);
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled,
 false);
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled,
 false);
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::LocalStorageEnabled,
 true);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::LinksIncludedInFocusChain,
 false);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::ZoomTextOnly,
 false);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::PrintElementBackgrounds,
 false);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::OfflineStorageDatabaseEnabled,
 false);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::OfflineWebApplicationCacheEnabled,
 false);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled,
 true);
+ #if defined(QMC2_BROWSER_PREFETCH_DNS_ENABLED)
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::DnsPrefetchEnabled,
 true);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::DnsPrefetchEnabled,
 true);
+ #else
+-      
webViewBrowser->page()->settings()->setAttribute(QWebSettings::DnsPrefetchEnabled,
 false);
++      
webViewBrowser->page()->settings()->setAttribute(QWebEngineSettings::DnsPrefetchEnabled,
 false);
+ #endif
++      */
+ 
+       connect(this, SIGNAL(titleChanged(QString &)), this, 
SLOT(changeTitle(QString &)));
+ 
+ #if defined(QMC2_BROWSER_EXTRAS_ENABLED)
+-      connect(webViewBrowser->pageAction(QWebPage::InspectElement), 
SIGNAL(triggered()), this, SLOT(postProcessPageActionInspect()), 
Qt::QueuedConnection);
++      connect(webViewBrowser->pageAction(QWebEnginePage::InspectElement), 
SIGNAL(triggered()), this, SLOT(postProcessPageActionInspect()), 
Qt::QueuedConnection);
+ #endif
+ 
+       // we want to detect/handle unsupported content
+-      webViewBrowser->page()->setForwardUnsupportedContent(true);
++      //webViewBrowser->page()->setForwardUnsupportedContent(true);
+ 
+       // status bar timeout connection
+       connect(&statusTimer, SIGNAL(timeout()), this, SLOT(statusTimeout()));
+@@ -230,26 +232,32 @@ void MiniWebBrowser::on_toolButtonHighlight_clicked()
+ 
+ void MiniWebBrowser::on_toolButtonNext_clicked()
+ {
++      // FIXME
++      /*
+       searchTimer.stop();
+-      webViewBrowser->page()->findText("", QWebPage::HighlightAllOccurrences);
+-      QWebPage::FindFlags flags = QWebPage::FindWrapsAroundDocument;
++      webViewBrowser->page()->findText("", 
QWebEnginePage::HighlightAllOccurrences);
++      QWebEnginePage::FindFlags flags = 
QWebEnginePage::FindWrapsAroundDocument;
+       if ( toolButtonCaseSensitive->isChecked() )
+-              flags |= QWebPage::FindCaseSensitively;
++              flags |= QWebEnginePage::FindCaseSensitively;
+       webViewBrowser->page()->findText(iconLineEditSearch->text(), flags);
+       if ( toolButtonHighlight->isChecked() )
+-              webViewBrowser->page()->findText(iconLineEditSearch->text(), 
flags | QWebPage::HighlightAllOccurrences);
++              webViewBrowser->page()->findText(iconLineEditSearch->text(), 
flags | QWebEnginePage::HighlightAllOccurrences);
++      */
+ }
+ 
+ void MiniWebBrowser::on_toolButtonPrevious_clicked()
+ {
++      // FIXME
++      /*
+       searchTimer.stop();
+-      webViewBrowser->page()->findText("", QWebPage::HighlightAllOccurrences);
+-      QWebPage::FindFlags flags = QWebPage::FindWrapsAroundDocument | 
QWebPage::FindBackward;
++      webViewBrowser->page()->findText("", 
QWebEnginePage::HighlightAllOccurrences);
++      QWebEnginePage::FindFlags flags = 
QWebEnginePage::FindWrapsAroundDocument | QWebEnginePage::FindBackward;
+       if ( toolButtonCaseSensitive->isChecked() )
+-              flags |= QWebPage::FindCaseSensitively;
++              flags |= QWebEnginePage::FindCaseSensitively;
+       webViewBrowser->page()->findText(iconLineEditSearch->text(), flags);
+       if ( toolButtonHighlight->isChecked() )
+-              webViewBrowser->page()->findText(iconLineEditSearch->text(), 
flags | QWebPage::HighlightAllOccurrences);
++              webViewBrowser->page()->findText(iconLineEditSearch->text(), 
flags | QWebEnginePage::HighlightAllOccurrences);
++      */
+ }
+ 
+ void MiniWebBrowser::on_toolButtonToggleSearchBar_clicked()
+@@ -287,6 +295,8 @@ void MiniWebBrowser::on_toolButtonForward_clicked()
+ void MiniWebBrowser::hideEvent(QHideEvent *e)
+ {
+ #if defined(QMC2_BROWSER_EXTRAS_ENABLED)
++      // FIXME
++      /*
+       foreach (QWidget *widget, QApplication::topLevelWidgets()) {
+               if ( widget->inherits("QWebInspector") ) {
+                       QWebInspector *inspector = (QWebInspector *)widget;
+@@ -299,6 +309,7 @@ void MiniWebBrowser::hideEvent(QHideEvent *e)
+                       }
+               }
+       }
++      */
+ #endif
+       if ( !e )
+               return;
+@@ -309,6 +320,8 @@ void MiniWebBrowser::hideEvent(QHideEvent *e)
+ void MiniWebBrowser::postProcessPageActionInspect()
+ {
+ #if defined(QMC2_BROWSER_EXTRAS_ENABLED)
++      // FIXME
++      /*
+       foreach (QWidget *widget, QApplication::topLevelWidgets()) {
+               if ( widget->inherits("QWebInspector") ) {
+                       QWebInspector *inspector = (QWebInspector *)widget;
+@@ -318,6 +331,7 @@ void MiniWebBrowser::postProcessPageActionInspect()
+                       }
+               }
+       }
++      */
+ #endif
+ }
+ 
+@@ -383,6 +397,7 @@ void MiniWebBrowser::webViewBrowser_linkClicked(const QUrl 
url)
+                       webBrowser->webViewBrowser->load(url);
+                       webBrowser->show();
+               } else {
++                      /*
+                       QWebHitTestResult hitTest = 
webViewBrowser->page()->mainFrame()->hitTestContent(webViewBrowser->lastMouseClickPosition);
+                       if ( hitTest.linkTargetFrame() )
+                               hitTest.linkTargetFrame()->load(url);
+@@ -390,6 +405,9 @@ void MiniWebBrowser::webViewBrowser_linkClicked(const QUrl 
url)
+                               webViewBrowser->load(url);
+                               webViewBrowser_urlChanged(url);
+                       }
++                      */
++                      webViewBrowser->load(url);
++                      webViewBrowser_urlChanged(url);
+               }
+       }
+       QTimer::singleShot(0, this, SLOT(checkBackAndForward()));
+@@ -517,7 +535,7 @@ void MiniWebBrowser::webViewBrowser_iconChanged()
+               if ( iconCache.contains(urlStr) )
+                       pageIcon = *iconCache[urlStr];
+               if ( pageIcon.isNull() ) {
+-                      pageIcon = 
QWebSettings::iconForUrl(webViewBrowser->url());
++                      //pageIcon = 
QWebEngineSettings::iconForUrl(webViewBrowser->url());
+                       if ( pageIcon.isNull() )
+                               pageIcon = 
QIcon(QString::fromUtf8(":/data/img/browser.png"));
+                       else
+@@ -546,11 +564,6 @@ void 
MiniWebBrowser::webViewBrowser_statusBarVisibilityChangeRequested(bool visi
+       progressBar->setVisible(visible);
+ }
+ 
+-void MiniWebBrowser::webViewBrowser_frameCreated(QWebFrame *frame)
+-{
+-      // NOP
+-}
+-
+ void MiniWebBrowser::statusTimeout()
+ {
+       statusTimer.stop();
+@@ -652,11 +665,11 @@ void MiniWebBrowser::setStatus(QString statusMessage)
+       updateGeometry();
+ }
+ 
+-QWebView *BrowserWidget::createWindow(QWebPage::WebWindowType type)
++QWebEngineView *BrowserWidget::createWindow(QWebEnginePage::WebWindowType 
type)
+ {
+       MiniWebBrowser *webBrowser = new MiniWebBrowser(0);
+-      if ( type == QWebPage::WebModalDialog )
+-              webBrowser->setWindowModality(Qt::ApplicationModal);
++      //if ( type == QWebEnginePage::WebModalDialog )
++      //      webBrowser->setWindowModality(Qt::ApplicationModal);
+       webBrowser->setAttribute(Qt::WA_DeleteOnClose);
+       if ( parentBrowser )
+               
webBrowser->spinBoxZoom->setValue(parentBrowser->spinBoxZoom->value());
+@@ -679,6 +692,6 @@ void BrowserWidget::wheelEvent(QWheelEvent *e)
+               e->accept();
+       } else {
+               e->ignore();
+-              QWebView::wheelEvent(e);
++              QWebEngineView::wheelEvent(e);
+       }
+ }
+diff --git a/src/miniwebbrowser.h b/src/miniwebbrowser.h
+index 4beaafeb3..945892a01 100644
+--- a/src/miniwebbrowser.h
++++ b/src/miniwebbrowser.h
+@@ -2,7 +2,7 @@
+ #define MINIWEBBROWSER_H
+ 
+ #include <Qt>
+-#include <QtWebKitWidgets/QWebView>
++#include <QWebEngineView>
+ #include <QMouseEvent>
+ #include <QTimer>
+ #include <QCache>
+@@ -13,7 +13,7 @@
+ 
+ class MiniWebBrowser;
+ 
+-class BrowserWidget : public QWebView
++class BrowserWidget : public QWebEngineView
+ {
+       Q_OBJECT
+ 
+@@ -23,7 +23,7 @@ class BrowserWidget : public QWebView
+               QTimer bwuDelayTimer;
+               MiniWebBrowser *parentBrowser;
+ 
+-              BrowserWidget(QWidget *parent, MiniWebBrowser *browserParent) : 
QWebView(parent)
++              BrowserWidget(QWidget *parent, MiniWebBrowser *browserParent) : 
QWebEngineView(parent)
+               {
+                       bwuDelayTimer.setSingleShot(true);
+                       lastMouseClickPosition = QPoint(-1, -1);
+@@ -38,22 +38,22 @@ class BrowserWidget : public QWebView
+               void mousePressEvent(QMouseEvent *e)
+               {
+                       lastMouseClickPosition = e->pos();
+-                      QWebView::mousePressEvent(e);
++                      QWebEngineView::mousePressEvent(e);
+               }
+               void enterEvent(QEvent *e)
+               {
+-                      QWebView::enterEvent(e);
++                      QWebEngineView::enterEvent(e);
+                       mouseCurrentlyOnView = true;
+                       emit mouseOnView(true);
+               }
+               void leaveEvent(QEvent *e)
+               {
+-                      QWebView::leaveEvent(e);
++                      QWebEngineView::leaveEvent(e);
+                       mouseCurrentlyOnView = false;
+                       emit mouseOnView(false);
+               }
+               void wheelEvent(QWheelEvent *);
+-              QWebView *createWindow(QWebPage::WebWindowType);
++              QWebEngineView *createWindow(QWebEnginePage::WebWindowType);
+ };
+ 
+ class MiniWebBrowser : public QWidget, public Ui::MiniWebBrowser
+@@ -110,7 +110,6 @@ class MiniWebBrowser : public QWidget, public 
Ui::MiniWebBrowser
+               void webViewBrowser_iconChanged();
+               void webViewBrowser_linkHovered(const QString &, const QString 
&, const QString &);
+               void webViewBrowser_statusBarVisibilityChangeRequested(bool);
+-              void webViewBrowser_frameCreated(QWebFrame *);
+               void statusTimeout();
+               void adjustIconSizes();
+               void setStatus(QString);
+diff --git a/src/options.cpp b/src/options.cpp
+index 0e0ee627a..4c92135fc 100644
+--- a/src/options.cpp
++++ b/src/options.cpp
+@@ -19,6 +19,7 @@
+ #include <QSplashScreen>
+ #include <QNetworkAccessManager>
+ #include <QCache>
++#include <QWebEngineSettings>
+ 
+ #include "options.h"
+ #include "emuopt.h"
+@@ -207,7 +208,7 @@ Options::Options(QWidget *parent) :
+ 
+       config = new Settings(QSettings::IniFormat, QSettings::UserScope, 
"qmc2");
+ 
+-      QWebSettings::enablePersistentStorage(userScopePath);
++      //QWebEngineSettings::enablePersistentStorage(userScopePath);
+ 
+       setupUi(this);
+ 
+@@ -600,14 +601,14 @@ void Options::apply()
+                       tb->setIconSize(iconSizeMiddle);
+       }
+       // global web-browser fonts
+-      
QWebSettings::globalSettings()->setFontFamily(QWebSettings::StandardFont, 
qApp->font().family());
+-      QWebSettings::globalSettings()->setFontFamily(QWebSettings::SerifFont, 
qApp->font().family());
+-      
QWebSettings::globalSettings()->setFontFamily(QWebSettings::SansSerifFont, 
qApp->font().family());
+-      
QWebSettings::globalSettings()->setFontFamily(QWebSettings::FantasyFont, 
qApp->font().family());
+-      
QWebSettings::globalSettings()->setFontFamily(QWebSettings::CursiveFont, 
qApp->font().family());
+-      QWebSettings::globalSettings()->setFontFamily(QWebSettings::FixedFont, 
logFont.family());
+-      
QWebSettings::globalSettings()->setFontSize(QWebSettings::DefaultFontSize, 
qApp->font().pointSize() + 1);
+-      
QWebSettings::globalSettings()->setFontSize(QWebSettings::DefaultFixedFontSize, 
logFont.pointSize() + 1);
++      
QWebEngineSettings::defaultSettings()->setFontFamily(QWebEngineSettings::StandardFont,
 qApp->font().family());
++      
QWebEngineSettings::defaultSettings()->setFontFamily(QWebEngineSettings::SerifFont,
 qApp->font().family());
++      
QWebEngineSettings::defaultSettings()->setFontFamily(QWebEngineSettings::SansSerifFont,
 qApp->font().family());
++      
QWebEngineSettings::defaultSettings()->setFontFamily(QWebEngineSettings::FantasyFont,
 qApp->font().family());
++      
QWebEngineSettings::defaultSettings()->setFontFamily(QWebEngineSettings::CursiveFont,
 qApp->font().family());
++      
QWebEngineSettings::defaultSettings()->setFontFamily(QWebEngineSettings::FixedFont,
 logFont.family());
++      
QWebEngineSettings::defaultSettings()->setFontSize(QWebEngineSettings::DefaultFontSize,
 qApp->font().pointSize() + 1);
++      
QWebEngineSettings::defaultSettings()->setFontSize(QWebEngineSettings::DefaultFixedFontSize,
 logFont.pointSize() + 1);
+ #if QMC2_JOYSTICK == 1
+       pushButtonRescanJoysticks->setIconSize(iconSize);
+       pushButtonRemapJoystickFunction->setIconSize(iconSize);
+diff --git a/src/qmc2main.cpp b/src/qmc2main.cpp
+index 2298f0b4a..4cd3ed24f 100644
+--- a/src/qmc2main.cpp
++++ b/src/qmc2main.cpp
+@@ -8130,8 +8130,10 @@ void MainWindow::projectMessLoadFinished(bool ok)
+               QString cacheKey = 
qmc2SoftwareList->currentItem->text(QMC2_SWLIST_COLUMN_LIST) + "_" + 
qmc2SoftwareList->currentItem->text(QMC2_SWLIST_COLUMN_NAME);
+               if ( qmc2ProjectMESSCache.contains(cacheKey) )
+                       qmc2ProjectMESSCache.remove(cacheKey);
+-              QByteArray data = 
QMC2_COMPRESS(qmc2ProjectMESS->webViewBrowser->page()->mainFrame()->toHtml().toUtf8());
+-              qmc2ProjectMESSCache.insert(cacheKey, new QByteArray(data), 
data.size());
++              QString data("%1");
++              qmc2ProjectMESS->webViewBrowser->page()->toHtml([data](const 
QString &result) { data.arg(result); });
++              QByteArray cdata = QMC2_COMPRESS(data.toUtf8());
++              qmc2ProjectMESSCache.insert(cacheKey, new QByteArray(cdata), 
cdata.size());
+       }
+ 
+       // we only want to know this ONCE
+@@ -8146,8 +8148,10 @@ void MainWindow::projectMessSystemLoadStarted()
+ void MainWindow::projectMessSystemLoadFinished(bool ok)
+ {
+       if ( ok ) {
+-              QByteArray projectMessData = 
QMC2_COMPRESS(qmc2ProjectMESSLookup->webViewBrowser->page()->mainFrame()->toHtml().toUtf8());
+-              QString machName = 
qmc2CurrentItem->text(QMC2_MACHINELIST_COLUMN_NAME);
++              QString data("%1");
++              
qmc2ProjectMESSLookup->webViewBrowser->page()->toHtml([data](const QString 
&result) { data.arg(result); });
++              QByteArray projectMessData = QMC2_COMPRESS(data.toUtf8());
++              QString 
machName(qmc2CurrentItem->text(QMC2_MACHINELIST_COLUMN_NAME));
+               if ( qmc2ProjectMESSCache.contains(machName) )
+                       qmc2ProjectMESSCache.remove(machName);
+               qmc2ProjectMESSCache.insert(machName, new 
QByteArray(projectMessData), projectMessData.size());
+diff --git a/src/qmc2main.cpp b/src/qmc2main.cpp
+index 4cd3ed24f..ec16009b2 100644
+--- a/src/qmc2main.cpp
++++ b/src/qmc2main.cpp
+@@ -31,7 +31,6 @@
+ #include <QChar>
+ #include <QInputDialog>
+ #include <QDesktopWidget>
+-#include <QtWebKitWidgets/QWebFrame>
+ 
+ #include <algorithm> // std::sort()
+ 
+diff --git a/src/machinelist.cpp b/src/machinelist.cpp
+index 8c6944b29..4ccdc3c4b 100644
+--- a/src/machinelist.cpp
++++ b/src/machinelist.cpp
+@@ -1,5 +1,4 @@
+ #include <Qt>
+-#include <QtWebKitWidgets/QWebView>
+ #include <QTextStream>
+ #include <QHeaderView>
+ #include <QTreeWidgetItem>

Reply via email to