diff --git a/Mac/Base.lproj/Preferences.storyboard b/Mac/Base.lproj/Preferences.storyboard index f3a7b1b69..94bba47aa 100644 --- a/Mac/Base.lproj/Preferences.storyboard +++ b/Mac/Base.lproj/Preferences.storyboard @@ -487,16 +487,16 @@ - + - + - + - + @@ -603,7 +603,7 @@ - + @@ -658,16 +658,16 @@ - + - + - + - + @@ -770,7 +770,7 @@ - + diff --git a/Mac/MainWindow/Detail/DetailWebViewController.swift b/Mac/MainWindow/Detail/DetailWebViewController.swift index a26b7e3fe..08d559032 100644 --- a/Mac/MainWindow/Detail/DetailWebViewController.swift +++ b/Mac/MainWindow/Detail/DetailWebViewController.swift @@ -55,6 +55,7 @@ final class DetailWebViewController: NSViewController { private let detailIconSchemeHandler = DetailIconSchemeHandler() private var waitingForFirstReload = false + private var windowScrollY: CGFloat? private let keyboardDelegate = DetailKeyboardDelegate() private struct MessageName { @@ -143,7 +144,10 @@ final class DetailWebViewController: NSViewController { } @objc func currentArticleThemeDidChangeNotification(_ note: Notification) { - reloadHTML() + fetchScrollInfo() { scrollInfo in + self.windowScrollY = scrollInfo?.offsetY + self.reloadHTML() + } } // MARK: Media Functions @@ -226,6 +230,11 @@ extension DetailWebViewController: WKNavigationDelegate, WKUIDelegate { webView.isHidden = false } } + + if let windowScrollY = windowScrollY { + webView.evaluateJavaScript("window.scrollTo(0, \(windowScrollY));") + self.windowScrollY = nil + } } // WKUIDelegate