diff --git a/resources/skins/nudus-base/html_single_message.html b/resources/skins/nudus-base/html_single_message.html index f675f11fd..7aa4c3e5d 100644 --- a/resources/skins/nudus-base/html_single_message.html +++ b/resources/skins/nudus-base/html_single_message.html @@ -1,4 +1,4 @@ -
+
%7
diff --git a/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp b/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp index 73640b380..f958c53af 100644 --- a/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp +++ b/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp @@ -303,9 +303,10 @@ void TextBrowserViewer::loadMessages(const QList& messages, RootItem* r setHtml(html_messages.m_html, html_messages.m_baseUrl); - // TODO: pokračovat + bool is_rtl_feed = root != nullptr && root->kind() == RootItem::Kind::Feed && qobject_cast(root)->isRtl(); + QTextOption op; - op.setTextDirection(Qt::RightToLeft); + op.setTextDirection(is_rtl_feed ? Qt::LayoutDirection::RightToLeft : Qt::LayoutDirection::LeftToRight); document()->setDefaultTextOption(op); emit loadingFinished(true); @@ -550,16 +551,6 @@ void TextBrowserViewer::setHtml(const QString& html, const QUrl& base_url) { } setVerticalScrollBarPosition(0.0); - - // TODO: implement RTL for viewers somehow? - /* - auto to = document()->defaultTextOption(); - - to.setTextDirection(Qt::LayoutDirection::RightToLeft); - to.setAlignment(Qt::AlignmentFlag::AlignRight); - - document()->setDefaultTextOption(to); - */ } void TextBrowserViewer::setHtmlPrivate(const QString& html, const QUrl& base_url) { diff --git a/src/librssguard/miscellaneous/skinfactory.cpp b/src/librssguard/miscellaneous/skinfactory.cpp index ee6c6c708..1ea080271 100644 --- a/src/librssguard/miscellaneous/skinfactory.cpp +++ b/src/librssguard/miscellaneous/skinfactory.cpp @@ -231,6 +231,15 @@ PreparedHtml SkinFactory::generateHtmlOfArticles(const QList& messages, const auto forced_img_size = qApp->settings()->value(GROUP(Messages), SETTING(Messages::MessageHeadImageHeight)).toInt(); + auto* feed = root != nullptr + ? root->getParentServiceRoot() + ->getItemFromSubTree([messages](const RootItem* it) { + return it->kind() == RootItem::Kind::Feed && it->customId() == messages.at(0).m_feedId; + }) + ->toFeed() + : nullptr; + bool is_rtl_feed = feed != nullptr && feed->isRtl(); + for (const Message& message : messages) { QString enclosures; QString enclosure_images; @@ -274,17 +283,13 @@ PreparedHtml SkinFactory::generateHtmlOfArticles(const QList& messages, msg_date, enclosures, enclosure_images, - QString::number(message.m_id))); + QString::number(message.m_id), + is_rtl_feed ? QSL("rtl") : QSL("ltr"))); } QString msg_contents = skin.m_layoutMarkupWrapper.arg(messages.size() == 1 ? messages.at(0).m_title : tr("Newspaper view"), messages_layout); - auto* feed = root->getParentServiceRoot() - ->getItemFromSubTree([messages](const RootItem* it) { - return it->kind() == RootItem::Kind::Feed && it->customId() == messages.at(0).m_feedId; - }) - ->toFeed(); QString base_url; if (feed != nullptr) {