diff --git a/kmymoney/views/khomeview.cpp b/kmymoney/views/khomeview.cpp --- a/kmymoney/views/khomeview.cpp +++ b/kmymoney/views/khomeview.cpp @@ -136,10 +136,12 @@ QTimer::singleShot(0, pActions[eMenu::Action::SkipSchedule], SLOT(trigger())); } else if (mode == QLatin1String("full")) { d->m_showAllSchedules = true; + d->keepScrollPos(); d->loadView(); } else if (mode == QLatin1String("reduced")) { d->m_showAllSchedules = false; + d->keepScrollPos(); d->loadView(); } diff --git a/kmymoney/views/khomeview_p.h b/kmymoney/views/khomeview_p.h --- a/kmymoney/views/khomeview_p.h +++ b/kmymoney/views/khomeview_p.h @@ -45,6 +45,7 @@ #include #else #include +#include #endif // ---------------------------------------------------------------------------- @@ -126,6 +127,7 @@ KMyMoneyViewBasePrivate(), q_ptr(qq), m_view(nullptr), + m_scrollBarPos(0), m_showAllSchedules(false), m_needLoad(true), m_netWorthGraphLastValidSize(400, 300) @@ -488,6 +490,29 @@ m_html += footer; m_view->setHtml(m_html, QUrl("file://")); + + setScrollPos(); + } + } + + void keepScrollPos() + { +#ifdef ENABLE_WEBENGINE + /// @todo cannot test this +#else + m_scrollBarPos = m_view->page()->mainFrame()->scrollBarValue(Qt::Vertical); +#endif + } + + void setScrollPos() + { + if (m_scrollBarPos != 0) { +#ifdef ENABLE_WEBENGINE + /// @todo cannot test this +#else + m_view->page()->mainFrame()->setScrollBarValue(Qt::Vertical, m_scrollBarPos); +#endif + m_scrollBarPos = 0; } } @@ -1945,6 +1970,7 @@ KWebView *m_view; #endif + int m_scrollBarPos; QString m_html; bool m_showAllSchedules; bool m_needLoad;