add -w option to force nowebengine even in webengine version

This commit is contained in:
Martin Rotter 2022-03-26 12:39:10 +01:00
parent 0976ddb7b1
commit cd1f44ba77
6 changed files with 152 additions and 116 deletions

View File

@ -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

View File

@ -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"

View File

@ -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 <QKeyEvent>
#include <QScrollBar>
#include <QTimer>
@ -22,20 +27,9 @@
#include <QToolTip>
#include <QWidgetAction>
#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());

View File

@ -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.";

View File

@ -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

View File

@ -74,10 +74,7 @@ class DownloadItem : public QWidget {
bool m_canceledFileSelect;
};
#if defined(USE_WEBENGINE)
class WebBrowser;
#endif
class SilentNetworkAccessManager;
class DownloadManager : public TabContent {