diff --git a/localization/rssguard_de.ts b/localization/rssguard_de.ts
index c51f56260..d8d614b89 100644
--- a/localization/rssguard_de.ts
+++ b/localization/rssguard_de.ts
@@ -875,12 +875,12 @@ Status: %3
Feeds search box
-
+ Suchfeld für Feeds
Search feeds (regex only)
-
+ Feeds durchsuchen (nur Regex)
@@ -1103,7 +1103,7 @@ or this functionality is not implemented yet.
Database location
-
+ Speicherort der Datenbank
@@ -2375,7 +2375,7 @@ or this functionality is not implemented yet.
New article filter
-
+ Neuer Artikel-Filter
@@ -2421,7 +2421,7 @@ or this functionality is not implemented yet.
Article filters
-
+ Artikel-Filter
@@ -2457,7 +2457,7 @@ or this functionality is not implemented yet.
Title of article filter
-
+ Titel des Artikel-Filters
@@ -3564,7 +3564,7 @@ Ablauf des Login tokens: %2
Important articles
-
+ Wichtige Artikel
@@ -3786,7 +3786,7 @@ Ablauf des Login tokens: %2
Date
-
+ Datum
@@ -3884,7 +3884,7 @@ Ablauf des Login tokens: %2
Date
-
+ Datum
@@ -3939,7 +3939,7 @@ Ablauf des Login tokens: %2
Creation date of the article.
-
+ Erstellungsdatum des Artikels.
@@ -4062,7 +4062,7 @@ Ablauf des Login tokens: %2
Search articles (regex only)
-
+ Artikel durchsuchen (nur Regex)
diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml
index add4e7ca5..691e8ba03 100644
--- a/resources/desktop/com.github.rssguard.appdata.xml
+++ b/resources/desktop/com.github.rssguard.appdata.xml
@@ -26,7 +26,7 @@
https://github.com/sponsors/martinrotter
-
+
none
diff --git a/src/librssguard/gui/webbrowser.cpp b/src/librssguard/gui/webbrowser.cpp
index 9681402b6..b89cdfb8e 100644
--- a/src/librssguard/gui/webbrowser.cpp
+++ b/src/librssguard/gui/webbrowser.cpp
@@ -232,11 +232,11 @@ void WebBrowser::onIconChanged(const QIcon& icon) {
emit iconChanged(m_index, icon);
}
-void WebBrowser::onLinkHovered(const QString& url) {
+void WebBrowser::onLinkHovered(const QUrl& url) {
qDebugNN << LOGSEC_GUI << "Hovered link:" << QUOTE_W_SPACE_DOT(url);
qApp->showGuiMessage(Notification::Event::GeneralEvent,
- { url, url, QSystemTrayIcon::MessageIcon::NoIcon },
+ { url.toString(), url.toString(), QSystemTrayIcon::MessageIcon::NoIcon },
{ false, false, true });
}
diff --git a/src/librssguard/gui/webbrowser.h b/src/librssguard/gui/webbrowser.h
index d4e158e02..eaa9a054d 100644
--- a/src/librssguard/gui/webbrowser.h
+++ b/src/librssguard/gui/webbrowser.h
@@ -63,7 +63,7 @@ class WebBrowser : public TabContent {
void onLoadingFinished(bool success);
void onTitleChanged(const QString& new_title);
void onIconChanged(const QIcon& icon);
- void onLinkHovered(const QString& url);
+ void onLinkHovered(const QUrl &url);
void newWindowRequested(WebViewer* viewer);
void readabilePage();
diff --git a/src/librssguard/gui/webviewers/litehtml/litehtmlviewer.cpp b/src/librssguard/gui/webviewers/litehtml/litehtmlviewer.cpp
index 160be0445..da6c20995 100755
--- a/src/librssguard/gui/webviewers/litehtml/litehtmlviewer.cpp
+++ b/src/librssguard/gui/webviewers/litehtml/litehtmlviewer.cpp
@@ -52,9 +52,7 @@ void LiteHtmlViewer::bindToBrowser(WebBrowser* browser) {
// right away.
browser->m_actionStop->setEnabled(false);
- connect(this, &LiteHtmlViewer::linkHighlighted, browser, [browser](const QUrl& url) {
- browser->onLinkHovered(url.toString());
- });
+ connect(this, &LiteHtmlViewer::linkHighlighted, browser, &WebBrowser::onLinkHovered);
connect(this, &LiteHtmlViewer::titleChanged, browser, &WebBrowser::onTitleChanged);
connect(this, &LiteHtmlViewer::urlChanged, browser, &WebBrowser::updateUrl);
connect(this, &LiteHtmlViewer::loadStarted, browser, &WebBrowser::onLoadingStarted);
@@ -266,34 +264,43 @@ void LiteHtmlViewer::onLinkClicked(const QUrl& link) {
void LiteHtmlViewer::showContextMenu(const QPoint& pos, const QUrl& url) {
if (m_contextMenu.isNull()) {
m_contextMenu.reset(new QMenu("Context menu for web browser", this));
+
+ m_actionCopyUrl.reset(m_contextMenu->addAction(qApp->icons()->fromTheme(QSL("edit-copy")),
+ tr("Copy URL"),
+ [url]() {
+ QGuiApplication::clipboard()->setText(url.toString(), QClipboard::Mode::Clipboard);
+ }));
+
+ m_actionCopyText.reset(m_contextMenu->addAction(qApp->icons()->fromTheme(QSL("edit-copy")),
+ tr("Copy selection"),
+ [this]() {
+ QGuiApplication::clipboard()->setText(QLiteHtmlWidget::selectedText(), QClipboard::Mode::Clipboard);
+ }));
+
+ // Add option to open link in external viewe
+ m_actionOpenLinkExternally.reset(m_contextMenu->addAction(qApp->icons()->fromTheme(QSL("document-open")),
+ tr("Open link in external browser"),
+ [url]() {
+ qApp->web()->openUrlInExternalBrowser(url.toString());
+
+ if (qApp->settings()->value(GROUP(Messages), SETTING(Messages::BringAppToFrontAfterMessageOpenedExternally)).toBool()) {
+ QTimer::singleShot(1000, qApp, []() {
+ qApp->mainForm()->display();
+ });
+ }
+ }));
+ }
+ else {
+ m_contextMenu->clear();
}
- m_contextMenu->clear();
+ m_actionCopyUrl->setEnabled(url.isValid());
+ m_actionCopyText->setEnabled(!QLiteHtmlWidget::selectedText().isEmpty());
+ m_actionOpenLinkExternally->setEnabled(url.isValid());
- m_contextMenu->addAction(qApp->icons()->fromTheme(QSL("edit-copy")),
- tr("Copy URL"),
- [url]() {
- QGuiApplication::clipboard()->setText(url.toString(), QClipboard::Mode::Clipboard);
- })->setEnabled(url.isValid());
-
- m_contextMenu->addAction(qApp->icons()->fromTheme(QSL("edit-copy")),
- tr("Copy selection"),
- [this]() {
- QGuiApplication::clipboard()->setText(QLiteHtmlWidget::selectedText(), QClipboard::Mode::Clipboard);
- })->setEnabled(!QLiteHtmlWidget::selectedText().isEmpty());
-
- // Add option to open link in external viewe
- m_contextMenu->addAction(qApp->icons()->fromTheme(QSL("document-open")),
- tr("Open link in external browser"),
- [url]() {
- qApp->web()->openUrlInExternalBrowser(url.toString());
-
- if (qApp->settings()->value(GROUP(Messages), SETTING(Messages::BringAppToFrontAfterMessageOpenedExternally)).toBool()) {
- QTimer::singleShot(1000, qApp, []() {
- qApp->mainForm()->display();
- });
- }
- })->setEnabled(url.isValid());
+ m_contextMenu->addActions({ m_actionCopyUrl.data(),
+ m_actionCopyText.data(),
+ m_actionOpenLinkExternally.data() });
if (url.isValid()) {
QFileIconProvider icon_provider;
diff --git a/src/librssguard/gui/webviewers/litehtml/litehtmlviewer.h b/src/librssguard/gui/webviewers/litehtml/litehtmlviewer.h
index ae462e931..faa8211e4 100755
--- a/src/librssguard/gui/webviewers/litehtml/litehtmlviewer.h
+++ b/src/librssguard/gui/webviewers/litehtml/litehtmlviewer.h
@@ -60,6 +60,9 @@ class LiteHtmlViewer : public QLiteHtmlWidget, public WebViewer {
private:
QScopedPointer m_downloader;
QScopedPointer m_contextMenu;
+ QScopedPointer m_actionCopyUrl;
+ QScopedPointer m_actionCopyText;
+ QScopedPointer m_actionOpenLinkExternally;
};
#endif // LITEHTMLVIEWER_H