From 0c2f79f1b595a44e00d8d618876f840745269678 Mon Sep 17 00:00:00 2001 From: Jed Fox Date: Tue, 6 Apr 2021 17:31:42 -0400 Subject: [PATCH 1/4] Update read/unread swipe images to be SF Symbols on Big Sur --- Mac/AppAssets.swift | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Mac/AppAssets.swift b/Mac/AppAssets.swift index deef57b28..e9a1ed05d 100644 --- a/Mac/AppAssets.swift +++ b/Mac/AppAssets.swift @@ -292,11 +292,23 @@ struct AppAssets { }() static var swipeMarkReadImage: RSImage = { - return RSImage(named: "swipeMarkRead")! + if #available(OSX 11.0, *) { + return RSImage(systemSymbolName: "circle", accessibilityDescription: "Mark Read")! + .withSymbolConfiguration(.init(scale: .large))! + } else { + // TODO: remove swipeMarkRead asset when dropping support for macOS 10.15 + return RSImage(named: "swipeMarkRead")! + } }() static var swipeMarkUnreadImage: RSImage = { - return RSImage(named: "swipeMarkUnread")! + if #available(OSX 11.0, *) { + return RSImage(systemSymbolName: "largecircle.fill.circle", accessibilityDescription: "Mark Unread")! + .withSymbolConfiguration(.init(scale: .large))! + } else { + // TODO: remove swipeMarkUnread asset when dropping support for macOS 10.15 + return RSImage(named: "swipeMarkUnread")! + } }() static var swipeMarkStarredImage: RSImage = { From 3609b6f977d1f440cac664641a43619d347750a9 Mon Sep 17 00:00:00 2001 From: Jed Fox Date: Tue, 6 Apr 2021 17:34:05 -0400 Subject: [PATCH 2/4] Add labels to swipe actions to match iOS --- Mac/MainWindow/Timeline/TimelineViewController.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Mac/MainWindow/Timeline/TimelineViewController.swift b/Mac/MainWindow/Timeline/TimelineViewController.swift index a664ffc7a..470e8bcb6 100644 --- a/Mac/MainWindow/Timeline/TimelineViewController.swift +++ b/Mac/MainWindow/Timeline/TimelineViewController.swift @@ -941,7 +941,7 @@ extension TimelineViewController: NSTableViewDelegate { switch edge { case .leading: - let action = NSTableViewRowAction(style: .regular, title: "") { (action, row) in + let action = NSTableViewRowAction(style: .regular, title: article.status.read ? "Unread" : "Read") { (action, row) in self.toggleArticleRead(article); tableView.rowActionsVisible = false } @@ -949,7 +949,7 @@ extension TimelineViewController: NSTableViewDelegate { return [action] case .trailing: - let action = NSTableViewRowAction(style: .regular, title: "") { (action, row) in + let action = NSTableViewRowAction(style: .regular, title: article.status.starred ? "Unstar" : "Star") { (action, row) in self.toggleArticleStarred(article); tableView.rowActionsVisible = false } From 76cf335af15133b853daccf02a356261024eae5a Mon Sep 17 00:00:00 2001 From: Jed Fox Date: Tue, 6 Apr 2021 17:37:15 -0400 Subject: [PATCH 3/4] Use the star SF Symbols as well --- Mac/AppAssets.swift | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Mac/AppAssets.swift b/Mac/AppAssets.swift index e9a1ed05d..be4065a9f 100644 --- a/Mac/AppAssets.swift +++ b/Mac/AppAssets.swift @@ -312,11 +312,21 @@ struct AppAssets { }() static var swipeMarkStarredImage: RSImage = { - return RSImage(named: "swipeMarkStarred")! + if #available(OSX 11.0, *) { + return RSImage(systemSymbolName: "star.fill", accessibilityDescription: "Star")! + .withSymbolConfiguration(.init(scale: .large))! + } else { + return RSImage(named: "swipeMarkStarred")! + } }() static var swipeMarkUnstarredImage: RSImage = { - return RSImage(named: "swipeMarkUnstarred")! + if #available(OSX 11.0, *) { + return RSImage(systemSymbolName: "star", accessibilityDescription: "Unstar")! + .withSymbolConfiguration(.init(scale: .large))! + } else { + return RSImage(named: "swipeMarkUnstarred")! + } }() static var starColor: NSColor = { From 913e2e06665d0b88e6eab1207e68ab8349a52ae3 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 7 Apr 2021 19:31:46 -0500 Subject: [PATCH 4/4] Scale super large images down so that they can be drawn on the canvas --- iOS/Resources/main_ios.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/iOS/Resources/main_ios.js b/iOS/Resources/main_ios.js index 2de36d94b..8c62081ee 100644 --- a/iOS/Resources/main_ios.js +++ b/iOS/Resources/main_ios.js @@ -35,11 +35,21 @@ class ImageViewer { var canvas = document.createElement("canvas"); var pixelRatio = window.devicePixelRatio; + var totalPixels = 0; do { canvas.width = this.img.naturalWidth * pixelRatio; canvas.height = this.img.naturalHeight * pixelRatio; + totalPixels = canvas.width * canvas.height; pixelRatio--; - } while (pixelRatio > 0 && canvas.width * canvas.height > 16777216) + } while (pixelRatio > 0 && totalPixels > 16777216) + + // If the totalPixels is still too big to draw on a canvas, scale it down + if (totalPixels > 16777216) { + var adjustment = 1 - ((totalPixels - 16777216) / totalPixels); + canvas.width = canvas.width * adjustment; + canvas.height = canvas.height * adjustment; + } + canvas.getContext("2d").drawImage(this.img, 0, 0, canvas.width, canvas.height); const rect = this.img.getBoundingClientRect();