diff --git a/resources/skins/vergilius/html_wrapper.html b/resources/skins/vergilius/html_wrapper.html index a4cb5e9c6..bcb5a9b3d 100755 --- a/resources/skins/vergilius/html_wrapper.html +++ b/resources/skins/vergilius/html_wrapper.html @@ -4,7 +4,7 @@
diff --git a/src/librssguard/gui/messagebrowser.cpp b/src/librssguard/gui/messagebrowser.cpp index 05132a63d..a6dda750a 100644 --- a/src/librssguard/gui/messagebrowser.cpp +++ b/src/librssguard/gui/messagebrowser.cpp @@ -192,3 +192,11 @@ void MessageBrowser::loadMessage(const Message& message, RootItem* root) { m_txtBrowser->verticalScrollBar()->triggerAction(QScrollBar::SliderToMinimum); m_searchWidget->hide(); } + +double MessageBrowser::verticalScrollBarPosition() const { + return m_txtBrowser->verticalScrollBar()->value(); +} + +void MessageBrowser::setVerticalScrollBarPosition(double pos) { + m_txtBrowser->verticalScrollBar()->setValue(pos); +} diff --git a/src/librssguard/gui/messagebrowser.h b/src/librssguard/gui/messagebrowser.h index 3db67f0db..1de0d39b5 100644 --- a/src/librssguard/gui/messagebrowser.h +++ b/src/librssguard/gui/messagebrowser.h @@ -22,7 +22,10 @@ class MessageBrowser : public QWidget { public: explicit MessageBrowser(QWidget* parent = nullptr); + double verticalScrollBarPosition() const; + public slots: + void setVerticalScrollBarPosition(double pos); void clear(); void reloadFontSettings(); void loadMessage(const Message& message, RootItem* root); diff --git a/src/librssguard/gui/messagepreviewer.cpp b/src/librssguard/gui/messagepreviewer.cpp index c41f9365e..5b7ef087c 100755 --- a/src/librssguard/gui/messagepreviewer.cpp +++ b/src/librssguard/gui/messagepreviewer.cpp @@ -12,6 +12,7 @@ #if defined (USE_WEBENGINE) #include "gui/webbrowser.h" +#include "gui/webviewer.h" #else #include "gui/messagebrowser.h" #endif @@ -41,7 +42,7 @@ void MessagePreviewer::createConnections() { } MessagePreviewer::MessagePreviewer(QWidget* parent) - : QWidget(parent), m_layout(new QGridLayout(this)), m_toolBar(new QToolBar(this)) { + : QWidget(parent), m_layout(new QGridLayout(this)), m_toolBar(new QToolBar(this)), m_verticalScrollBarPosition(0.0) { #if defined (USE_WEBENGINE) m_txtMessage = new WebBrowser(this); #else @@ -75,6 +76,10 @@ WebBrowser* MessagePreviewer::webBrowser() const { void MessagePreviewer::clear() { m_txtMessage->clear(); hide(); + + m_verticalScrollBarPosition = 0.0; + m_root.clear(); + m_message = Message(); } void MessagePreviewer::hideToolbar() { @@ -82,6 +87,10 @@ void MessagePreviewer::hideToolbar() { } void MessagePreviewer::loadMessage(const Message& message, RootItem* root) { + m_verticalScrollBarPosition = m_txtMessage->verticalScrollBarPosition(); + + bool same_message = message.m_id == m_message.m_id && m_root == root; + m_message = message; m_root = root; @@ -90,6 +99,10 @@ void MessagePreviewer::loadMessage(const Message& message, RootItem* root) { show(); m_actionSwitchImportance->setChecked(m_message.m_isImportant); m_txtMessage->loadMessage(message, root); + + if (same_message) { + m_txtMessage->setVerticalScrollBarPosition(m_verticalScrollBarPosition); + } } } diff --git a/src/librssguard/gui/messagepreviewer.h b/src/librssguard/gui/messagepreviewer.h index f674b2c2a..c8658b090 100644 --- a/src/librssguard/gui/messagepreviewer.h +++ b/src/librssguard/gui/messagepreviewer.h @@ -61,6 +61,7 @@ class MessagePreviewer : public QWidget { MessageBrowser* m_txtMessage; #endif + double m_verticalScrollBarPosition; Message m_message; QPointer