From cd1f44ba77604213bcc8ef3406092feb3b7123c7 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Sat, 26 Mar 2022 12:39:10 +0100 Subject: [PATCH] add -w option to force nowebengine even in webengine version --- src/librssguard/CMakeLists.txt | 194 +++++++++--------- src/librssguard/definitions/definitions.h | 3 + src/librssguard/gui/webbrowser.cpp | 28 ++- src/librssguard/miscellaneous/application.cpp | 32 ++- src/librssguard/miscellaneous/application.h | 8 + src/librssguard/network-web/downloadmanager.h | 3 - 6 files changed, 152 insertions(+), 116 deletions(-) diff --git a/src/librssguard/CMakeLists.txt b/src/librssguard/CMakeLists.txt index 7e993ac7d..d9049f14f 100644 --- a/src/librssguard/CMakeLists.txt +++ b/src/librssguard/CMakeLists.txt @@ -431,79 +431,77 @@ list(APPEND SOURCES ) # Add QLiteHtml. -if(NOT USE_WEBENGINE) - # Gumbo. - list(APPEND SOURCES - 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/attribute.c - 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/char_ref.c - 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/error.c - 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/parser.c - 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/string_buffer.c - 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/string_piece.c - 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/tag.c - 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/tokenizer.c - 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/utf8.c - 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/util.c - 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/vector.c - ) +# Gumbo. +list(APPEND SOURCES + 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/attribute.c + 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/char_ref.c + 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/error.c + 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/parser.c + 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/string_buffer.c + 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/string_piece.c + 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/tag.c + 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/tokenizer.c + 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/utf8.c + 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/util.c + 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/vector.c +) - # LiteHtml. - list(APPEND SOURCES - 3rd-party/qlitehtml/3rdparty/litehtml/src/background.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/box.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/codepoint.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/context.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/css_length.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/css_selector.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/document.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_anchor.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_base.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_before_after.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_body.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_break.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_cdata.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_comment.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_div.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/element.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_font.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_image.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_link.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_li.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_para.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_script.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_space.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_style.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_table.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_td.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_text.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_title.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/el_tr.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/html.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/html_tag.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/iterators.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/media_query.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/style.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/stylesheet.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/table.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/tstring_view.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/url.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/url_path.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/utf8_strings.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/web_color.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/num_cvt.cpp - 3rd-party/qlitehtml/3rdparty/litehtml/src/strtod.cpp - ) +# LiteHtml. +list(APPEND SOURCES + 3rd-party/qlitehtml/3rdparty/litehtml/src/background.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/box.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/codepoint.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/context.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/css_length.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/css_selector.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/document.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_anchor.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_base.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_before_after.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_body.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_break.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_cdata.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_comment.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_div.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/element.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_font.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_image.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_link.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_li.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_para.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_script.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_space.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_style.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_table.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_td.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_text.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_title.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/el_tr.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/html.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/html_tag.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/iterators.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/media_query.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/style.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/stylesheet.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/table.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/tstring_view.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/url.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/url_path.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/utf8_strings.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/web_color.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/num_cvt.cpp + 3rd-party/qlitehtml/3rdparty/litehtml/src/strtod.cpp +) - # QLiteHtml. - list(APPEND SOURCES - 3rd-party/qlitehtml/container_qpainter.h - 3rd-party/qlitehtml/container_qpainter_p.h - 3rd-party/qlitehtml/qlitehtml_global.h - 3rd-party/qlitehtml/qlitehtmlwidget.h - 3rd-party/qlitehtml/container_qpainter.cpp - 3rd-party/qlitehtml/qlitehtmlwidget.cpp - ) -endif() +# QLiteHtml. +list(APPEND SOURCES + 3rd-party/qlitehtml/container_qpainter.h + 3rd-party/qlitehtml/container_qpainter_p.h + 3rd-party/qlitehtml/qlitehtml_global.h + 3rd-party/qlitehtml/qlitehtmlwidget.h + 3rd-party/qlitehtml/container_qpainter.cpp + 3rd-party/qlitehtml/qlitehtmlwidget.cpp +) set(UI_FILES gui/dialogs/formabout.ui @@ -566,14 +564,14 @@ if(USE_WEBENGINE) network-web/adblock/adblockurlinterceptor.cpp network-web/adblock/adblockurlinterceptor.h ) -else() - list(APPEND SOURCES - # Lite non-WebEngine message browser. - gui/litehtml/litehtmlviewer.h - gui/litehtml/litehtmlviewer.cpp - ) endif() +list(APPEND SOURCES + # Lite non-WebEngine message browser. + gui/litehtml/litehtmlviewer.h + gui/litehtml/litehtmlviewer.cpp +) + # Deal with .ui files. qt_wrap_ui(SOURCES ${UI_FILES}) @@ -678,32 +676,28 @@ target_include_directories(rssguard ) # QLiteHtml. -if(NOT USE_WEBENGINE) - # Gumbo. - target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/include) - target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/include/gumbo) +# Gumbo. +target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/include) +target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/include/gumbo) - if(MSVC) - target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/visualc/include) - endif() - - # LiteHtml. - target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml/3rdparty/litehtml/src) - target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml/3rdparty/litehtml/include) - target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml/3rdparty/litehtml/include/litehtml) - - if(WIN32) - target_compile_definitions(rssguard PUBLIC LITEHTML_UTF8) - endif() - - # QLiteHtml. - target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml) - - target_compile_definitions(rssguard - PRIVATE - QLITEHTML_LIBRARY) +if(MSVC) + target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml/3rdparty/litehtml/src/gumbo/visualc/include) endif() +# LiteHtml. +target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml/3rdparty/litehtml/src) +target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml/3rdparty/litehtml/include) +target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml/3rdparty/litehtml/include/litehtml) + +if(WIN32) + target_compile_definitions(rssguard PUBLIC LITEHTML_UTF8) +endif() + +# QLiteHtml. +target_include_directories(rssguard PRIVATE 3rd-party/qlitehtml) +target_compile_definitions(rssguard PRIVATE QLITEHTML_LIBRARY) + +# Qt. target_link_libraries(rssguard PUBLIC Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui diff --git a/src/librssguard/definitions/definitions.h b/src/librssguard/definitions/definitions.h index 0928d927d..d8e1a13fc 100644 --- a/src/librssguard/definitions/definitions.h +++ b/src/librssguard/definitions/definitions.h @@ -125,6 +125,9 @@ #define CLI_NDEBUG_SHORT "g" #define CLI_NDEBUG_LONG "no-debug-output" +#define CLI_FORCE_NOWEBENGINE_SHORT "w" +#define CLI_FORCE_NOWEBENGINE_LONG "no-web-engine" + #define CLI_QUIT_INSTANCE "q" #define CLI_IS_RUNNING "a" diff --git a/src/librssguard/gui/webbrowser.cpp b/src/librssguard/gui/webbrowser.cpp index 89b6b4f47..e8009fab9 100644 --- a/src/librssguard/gui/webbrowser.cpp +++ b/src/librssguard/gui/webbrowser.cpp @@ -3,6 +3,7 @@ #include "gui/webbrowser.h" #include "database/databasequeries.h" +#include "gui/litehtml/litehtmlviewer.h" // QLiteHtml-based web browsing. #include "gui/messagebox.h" #include "gui/reusable/discoverfeedsbutton.h" #include "gui/reusable/locationlineedit.h" @@ -15,6 +16,10 @@ #include "network-web/webfactory.h" #include "services/abstract/serviceroot.h" +#if defined(USE_WEBENGINE) +#include "gui/webengine/webengineviewer.h" // WebEngine-based web browsing. +#endif + #include #include #include @@ -22,20 +27,9 @@ #include #include -#if defined(USE_WEBENGINE) -#include "gui/webengine/webengineviewer.h" // WebEngine-based web browsing. -#else -#include "gui/litehtml/litehtmlviewer.h" // QLiteHtml-based web browsing. -#endif - WebBrowser::WebBrowser(QWidget* parent) : TabContent(parent), m_layout(new QVBoxLayout(this)), m_toolBar(new QToolBar(tr("Navigation panel"), this)), -#if defined(USE_WEBENGINE) - m_webView(new WebEngineViewer(this)), -#else - m_webView(new LiteHtmlViewer(this)), -#endif m_searchWidget(new SearchTextWidget(this)), m_txtLocation(new LocationLineEdit(this)), m_btnDiscoverFeeds(new DiscoverFeedsButton(this)), @@ -45,6 +39,18 @@ WebBrowser::WebBrowser(QWidget* parent) : TabContent(parent), m_actionReadabilePage(new QAction(qApp->icons()->fromTheme(QSL("text-html")), tr("View website in reader mode"), this)) { + +#if !defined(USE_WEBENGINE) + m_webView = new LiteHtmlViewer(this), +#else + if (qApp->forcedNoWebEngine()) { + m_webView = new LiteHtmlViewer(this); + } + else { + m_webView = new WebEngineViewer(this); + } +#endif + // Initialize the components and layout. m_webView->bindToBrowser(this); m_webView->setZoomFactor(qApp->settings()->value(GROUP(Messages), SETTING(Messages::Zoom)).toDouble()); diff --git a/src/librssguard/miscellaneous/application.cpp b/src/librssguard/miscellaneous/application.cpp index 0000a7b16..6192eed44 100644 --- a/src/librssguard/miscellaneous/application.cpp +++ b/src/librssguard/miscellaneous/application.cpp @@ -349,6 +349,13 @@ void Application::eliminateFirstRuns() { settings()->setValue(GROUP(General), QString(General::FirstRun) + QL1C('_') + APP_VERSION, false); } +#if defined(USE_WEBENGINE) +bool Application::forcedNoWebEngine() const { + return m_forcedNoWebEngine; +} + +#endif + NodeJs* Application::nodejs() const { return m_nodejs; } @@ -961,6 +968,12 @@ void Application::parseCmdArgumentsFromMyInstance(const QStringList& raw_cli_arg QSL("user-data-folder")); QCommandLineOption disable_singleinstance({ QSL(CLI_SIN_SHORT), QSL(CLI_SIN_LONG) }, QSL("Allow running of multiple application instances.")); + +#if defined(USE_WEBENGINE) + QCommandLineOption force_nowebengine({ QSL(CLI_FORCE_NOWEBENGINE_SHORT), QSL(CLI_FORCE_NOWEBENGINE_LONG) }, + QSL("Force usage of simpler text-based embedded web browser.")); +#endif + QCommandLineOption disable_only_debug({ QSL(CLI_NDEBUG_SHORT), QSL(CLI_NDEBUG_LONG) }, QSL("Disable just \"debug\" output.")); QCommandLineOption disable_debug({ QSL(CLI_NSTDOUTERR_SHORT), QSL(CLI_NSTDOUTERR_LONG) }, @@ -969,8 +982,15 @@ void Application::parseCmdArgumentsFromMyInstance(const QStringList& raw_cli_arg QSL("Force some application style."), QSL("style-name")); - m_cmdParser.addOptions({ help, version, log_file, custom_data_folder, - disable_singleinstance, disable_only_debug, disable_debug, + m_cmdParser.addOptions({ help, version, + log_file, + custom_data_folder, + disable_singleinstance, + disable_only_debug, + disable_debug, +#if defined(USE_WEBENGINE) + force_nowebengine, +#endif forced_style }); m_cmdParser.addPositionalArgument(QSL("urls"), QSL("List of URL addresses pointing to individual online feeds which should be added."), @@ -1016,6 +1036,14 @@ void Application::parseCmdArgumentsFromMyInstance(const QStringList& raw_cli_arg m_cmdParser.showVersion(); } +#if defined(USE_WEBENGINE) + m_forcedNoWebEngine = m_cmdParser.isSet(QSL(CLI_FORCE_NOWEBENGINE_SHORT)); + + if (m_forcedNoWebEngine) { + qDebugNN << LOGSEC_CORE << "Forcing no-web-engine."; + } +#endif + if (m_cmdParser.isSet(QSL(CLI_SIN_SHORT))) { m_allowMultipleInstances = true; qDebugNN << LOGSEC_CORE << "Explicitly allowing this instance to run."; diff --git a/src/librssguard/miscellaneous/application.h b/src/librssguard/miscellaneous/application.h index 33f652edc..0cdce1538 100644 --- a/src/librssguard/miscellaneous/application.h +++ b/src/librssguard/miscellaneous/application.h @@ -160,6 +160,10 @@ class RSSGUARD_DLLSPEC Application : public SingleApplication { const GuiAction& action = {}, QWidget* parent = nullptr); +#if defined(USE_WEBENGINE) + bool forcedNoWebEngine() const; +#endif + // Returns pointer to "GOD" application singleton. static Application* instance(); @@ -244,6 +248,10 @@ class RSSGUARD_DLLSPEC Application : public SingleApplication { QString m_customDataFolder; bool m_allowMultipleInstances; +#if defined(USE_WEBENGINE) + bool m_forcedNoWebEngine; +#endif + #if defined(Q_OS_WIN) ITaskbarList4* m_windowsTaskBar; #endif diff --git a/src/librssguard/network-web/downloadmanager.h b/src/librssguard/network-web/downloadmanager.h index 67ceb3a07..4e82fadbe 100644 --- a/src/librssguard/network-web/downloadmanager.h +++ b/src/librssguard/network-web/downloadmanager.h @@ -74,10 +74,7 @@ class DownloadItem : public QWidget { bool m_canceledFileSelect; }; -#if defined(USE_WEBENGINE) class WebBrowser; -#endif - class SilentNetworkAccessManager; class DownloadManager : public TabContent {