From 28edff70a7361d89c9f7f962faeeb59166e76e4a Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 15 Oct 2021 08:13:39 +0200 Subject: [PATCH] possibly fix problems with changing layout when message previewer is actually hidden --- .../desktop/com.github.rssguard.appdata.xml | 2 +- src/librssguard/gui/feedmessageviewer.cpp | 30 ++++++++++++++----- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml index 797bb83ba..6bf05df66 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/feedmessageviewer.cpp b/src/librssguard/gui/feedmessageviewer.cpp index 70e78e450..ca3e3a305 100644 --- a/src/librssguard/gui/feedmessageviewer.cpp +++ b/src/librssguard/gui/feedmessageviewer.cpp @@ -91,6 +91,11 @@ void FeedMessageViewer::saveSize() { // Store offsets of splitters. settings->setValue(GROUP(GUI), GUI::SplitterFeeds, toVariant(m_feedSplitter->sizes())); + // We need to display message previewer so that it "has" some dimensions + // so that they can be saved. + m_messagesBrowser->show(); + qApp->processEvents(); + if (!settings->value(GROUP(GUI), SETTING(GUI::SplitterMessagesIsVertical)).toBool()) { settings->setValue(GROUP(GUI), GUI::SplitterMessagesHorizontal, @@ -116,15 +121,12 @@ void FeedMessageViewer::loadSize() { m_feedSplitter->setSizes(toList(settings->value(GROUP(GUI), SETTING(GUI::SplitterFeeds)))); - if (!settings->value(GROUP(GUI), SETTING(GUI::SplitterMessagesIsVertical)).toBool()) { - switchMessageSplitterOrientation(false); - m_messageSplitter->setSizes(toList(settings->value(GROUP(GUI), - SETTING(GUI::SplitterMessagesHorizontal)))); - } - else { + if (settings->value(GROUP(GUI), SETTING(GUI::SplitterMessagesIsVertical)).toBool()) { m_messageSplitter->setSizes(toList(settings->value(GROUP(GUI), SETTING(GUI::SplitterMessagesVertical)))); - + } + else { + switchMessageSplitterOrientation(false); } QString settings_msg_header = settings->value(GROUP(GUI), SETTING(GUI::MessageViewState)).toString(); @@ -149,6 +151,14 @@ bool FeedMessageViewer::areListHeadersEnabled() const { } void FeedMessageViewer::switchMessageSplitterOrientation(bool save_settings) { + bool preview_visible = m_messagesBrowser->isVisible(); + + if (!preview_visible && save_settings) { + // Must be visible to get correct dimensions to be saved. + m_messagesBrowser->show(); + qApp->processEvents(); + } + if (m_messageSplitter->orientation() == Qt::Orientation::Vertical) { if (save_settings) { qApp->settings()->setValue(GROUP(GUI), @@ -172,6 +182,12 @@ void FeedMessageViewer::switchMessageSplitterOrientation(bool save_settings) { SETTING(GUI::SplitterMessagesVertical)))); } + if (!preview_visible && save_settings) { + // Must be visible to get correct dimensions to be saved. + m_messagesBrowser->hide(); + qApp->processEvents(); + } + qApp->settings()->setValue(GROUP(GUI), GUI::SplitterMessagesIsVertical, m_messageSplitter->orientation() == Qt::Orientation::Vertical);