mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Merge branch 'main' of https://github.com/vincode-io/NetNewsWire
This commit is contained in:
@@ -100,6 +100,18 @@ protocol DetailWebViewControllerDelegate: AnyObject {
|
||||
userContentController.add(self, name: MessageName.windowDidScroll)
|
||||
userContentController.add(self, name: MessageName.mouseDidEnter)
|
||||
userContentController.add(self, name: MessageName.mouseDidExit)
|
||||
|
||||
let baseURL = ArticleRenderer.page.baseURL
|
||||
let appScriptsWorld = WKContentWorld.world(name: "NetNewsWire")
|
||||
for fileName in ["main.js", "main_mac.js", "newsfoot.js"] {
|
||||
userContentController.addUserScript(
|
||||
.init(source: try! String(contentsOf: baseURL.appending(path: fileName,
|
||||
directoryHint: .notDirectory)),
|
||||
injectionTime: .atDocumentStart,
|
||||
forMainFrameOnly: true,
|
||||
in: appScriptsWorld))
|
||||
}
|
||||
|
||||
configuration.userContentController = userContentController
|
||||
|
||||
webView = DetailWebView(frame: NSRect.zero, configuration: configuration)
|
||||
@@ -323,7 +335,7 @@ private extension DetailWebViewController {
|
||||
]
|
||||
|
||||
let html = try! MacroProcessor.renderedText(withTemplate: ArticleRenderer.page.html, substitutions: substitutions)
|
||||
webView.loadHTMLString(html, baseURL: ArticleRenderer.page.baseURL)
|
||||
webView.loadHTMLString(html, baseURL: URL(string: rendering.baseURL))
|
||||
}
|
||||
|
||||
func scrollInfo() async -> ScrollInfo? {
|
||||
|
||||
@@ -4,14 +4,6 @@
|
||||
<style>
|
||||
[[style]]
|
||||
</style>
|
||||
<script src="main.js"></script>
|
||||
<script src="main_mac.js"></script>
|
||||
<script src="newsfoot.js" async="async"></script>
|
||||
<script type="text/javascript">
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
processPage();
|
||||
})
|
||||
</script>
|
||||
<base href="[[baseURL]]">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -14,19 +14,31 @@ import Foundation
|
||||
|
||||
// Since the Toolbar intercepts right clicks we need to stop it from doing that here
|
||||
// so that the ArticleExtractorButton can receive right click events.
|
||||
if event.isRightClick,
|
||||
let frameView = contentView?.superview,
|
||||
let view = frameView.hitTest(frameView.convert(event.locationInWindow, from: nil)),
|
||||
type(of: view).description() == "NSToolbarView" {
|
||||
if #available(macOS 14.0, *) {
|
||||
if event.isRightClick,
|
||||
let frameView = contentView?.superview,
|
||||
let view = frameView.hitTest(frameView.convert(event.locationInWindow, from: nil)),
|
||||
let articleExtractorButton = view as? ArticleExtractorButton {
|
||||
|
||||
for subview in view.subviews {
|
||||
for subsubview in subview.subviews {
|
||||
let candidateView = subsubview.hitTest(subsubview.convert(event.locationInWindow, from: nil))
|
||||
if candidateView is ArticleExtractorButton {
|
||||
candidateView?.rightMouseDown(with: event)
|
||||
return
|
||||
articleExtractorButton.rightMouseDown(with: event)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
if event.isRightClick,
|
||||
let frameView = contentView?.superview,
|
||||
let view = frameView.hitTest(frameView.convert(event.locationInWindow, from: nil)),
|
||||
type(of: view).description() == "NSToolbarView" {
|
||||
|
||||
for subview in view.subviews {
|
||||
for subsubview in subview.subviews {
|
||||
let candidateView = subsubview.hitTest(subsubview.convert(event.locationInWindow, from: nil))
|
||||
if candidateView is ArticleExtractorButton {
|
||||
candidateView?.rightMouseDown(with: event)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user