let managedObjectContext = BookmarkManager.shared().manageObjectContext
deinit {
- webView.removeObserver(self, forKeyPath: "canGoBack")
- webView.removeObserver(self, forKeyPath: "canGoForward")
+ webView.removeObserver(self, forKeyPath: #keyPath(webView.canGoBack))
+ webView.removeObserver(self, forKeyPath: #keyPath(webView.canGoForward))
}
@IBOutlet var webView: WebView!
contentRect.size = newValue
var newFrame = window.frameRect(forContentRect: contentRect)
let frame = window.frame
- newFrame.origin.x = NSMinX(frame)
- newFrame.origin.y = NSMaxY(frame) - NSHeight(newFrame)
+ newFrame.origin.x = frame.minX
+ newFrame.origin.y = frame.maxY - newFrame.height
window.setFrame(newFrame, display: true)
}
}
var contentVisibleRect: NSRect {
- get {
- return webView.mainFrame.frameView.documentView.visibleRect
- }
- set {
- webView.mainFrame.frameView.documentView.scrollToVisible(newValue)
- }
+ get { return webView.mainFrame.frameView.documentView.visibleRect }
+ set { webView.mainFrame.frameView.documentView.scrollToVisible(newValue) }
}
fileprivate var bookmarkShowing: Bool = false
fileprivate var waitingBookmarkItem: Bookmark?
- private lazy var bookmarkListViwController: BookmarkListViewController? = {
+ fileprivate lazy var bookmarkListViwController: BookmarkListViewController? = {
[weak self] in
guard let `self` = self else { return nil }
let controller = BookmarkListViewController()
override func windowDidLoad() {
super.windowDidLoad()
- webView.addObserver(self, forKeyPath: "canGoBack", context: nil)
- webView.addObserver(self, forKeyPath: "canGoForward", context: nil)
+ webView.addObserver(self, forKeyPath: #keyPath(webView.canGoBack), context: nil)
+ webView.addObserver(self, forKeyPath: #keyPath(webView.canGoForward), context: nil)
webView.applicationNameForUserAgent = AppDelegate.shared.appNameForUserAgent
webView.frameLoadDelegate = self
}
- override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
- if keyPath == "canGoBack" {
+ override func observeValue(forKeyPath keyPath: String?,
+ of object: Any?,
+ change: [NSKeyValueChangeKey: Any]?,
+ context: UnsafeMutableRawPointer?) {
+ if keyPath == #keyPath(webView.canGoBack) {
goSegment.setEnabled(webView.canGoBack, forSegment: 0)
return
}
- if keyPath == "canGoForward" {
+ if keyPath == #keyPath(webView.canGoForward) {
goSegment.setEnabled(webView.canGoForward, forSegment: 1)
return
}
super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
}
- override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
- guard let action = menuItem.action else { return false }
- switch action {
- case Selector.addBookmark:
- return webView.mainFrameURL != nil
- case Selector.showBookmark:
- if showsBookmarkList() {
- menuItem.title = NSLocalizedString("Hide Bookmark", comment: "Menu item title, Hide Bookmark")
- } else {
- menuItem.title = NSLocalizedString("Show Bookmark", comment: "Menu item title, Show Bookmark")
- }
- return true
- case Selector.selectBookmark:
- return true
- case Selector.reloadContent:
- return true
- default:
- return false
- }
- }
override func swipe(with event: NSEvent) {
if event.deltaX > 0 && showsBookmarkList() {
showBookmark(nil)
fileprivate func showsBookmarkList() -> Bool {
return webView.frame.origin.x > 0
}
+}
+
+// MARK: - IBAction
+extension ExternalBrowserWindowController {
+ override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
+ guard let action = menuItem.action else { return false }
+ switch action {
+ case Selector.addBookmark:
+ return webView.mainFrameURL != nil
+ case Selector.showBookmark:
+ if showsBookmarkList() {
+ menuItem.title = NSLocalizedString("Hide Bookmark", comment: "Menu item title, Hide Bookmark")
+ } else {
+ menuItem.title = NSLocalizedString("Show Bookmark", comment: "Menu item title, Show Bookmark")
+ }
+ return true
+ case Selector.selectBookmark:
+ return true
+ case Selector.reloadContent:
+ return true
+ default:
+ return false
+ }
+ }
- // MARK: - IBAction
@IBAction func selectBookmark(_ sender: AnyObject?) {
guard let item = sender?.representedObject as? Bookmark
else { return }
newFrame.size.width = window.frame.size.width - 200
}
- let webAnime: [String : Any] = [
+ let webAnime: [String: Any] = [
NSViewAnimationTargetKey: webView,
NSViewAnimationEndFrameKey: NSValue(rect: newFrame)
]
- let bookmarkAnime: [String : Any] = [
+ let bookmarkAnime: [String: Any] = [
NSViewAnimationTargetKey: bookmarkListView,
NSViewAnimationEndFrameKey: NSValue(rect: frame)
]
}
func webView(_ sender: WebView!, didFinishLoadFor frame: WebFrame!) {
if let waitingBookmarkItem = waitingBookmarkItem {
- Timer.scheduledTimer(timeInterval: waitingBookmarkItem.scrollDelay, target: self, selector: .updateContentVisibleRect, userInfo: waitingBookmarkItem, repeats: false)
+ Timer.scheduledTimer(timeInterval: waitingBookmarkItem.scrollDelay,
+ target: self,
+ selector: .updateContentVisibleRect,
+ userInfo: waitingBookmarkItem,
+ repeats: false)
}
waitingBookmarkItem = nil
}
- func webView(_ webView: WebView!, decidePolicyForNavigationAction actionInformation: [AnyHashable: Any]!, request: URLRequest!, frame: WebFrame!, decisionListener listener: WebPolicyDecisionListener!) {
+ func webView(_ webView: WebView!,
+ decidePolicyForNavigationAction actionInformation: [AnyHashable: Any]!,
+ request: URLRequest!,
+ frame: WebFrame!,
+ decisionListener listener: WebPolicyDecisionListener!) {
if actionInformation?[WebActionNavigationTypeKey] as? WebNavigationType == .linkClicked {
if canMovePage {
listener.use()
listener.use()
}
}
-