BrowserViewController: break up into extensions
This commit is contained in:
103
App/Browser View/BrowserViewController+Keyboard.swift
Normal file
103
App/Browser View/BrowserViewController+Keyboard.swift
Normal file
@@ -0,0 +1,103 @@
|
||||
//
|
||||
// BrowserViewController+Keyboard.swift
|
||||
// App
|
||||
//
|
||||
// Created by James Magahern on 2/17/21.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
extension BrowserViewController: ShortcutResponder
|
||||
{
|
||||
internal func updateCommandKeyState(forPresses presses: Set<UIPress>) {
|
||||
guard let press = presses.first else { return }
|
||||
|
||||
if let key = press.key {
|
||||
if key.modifierFlags == [.command] {
|
||||
let isDown = press.phase == .began || press.phase == .changed || press.phase == .stationary
|
||||
self.commandKeyHeld = isDown
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
|
||||
super.pressesBegan(presses, with: event)
|
||||
updateCommandKeyState(forPresses: presses)
|
||||
}
|
||||
|
||||
override func pressesCancelled(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
|
||||
super.pressesCancelled(presses, with: event)
|
||||
updateCommandKeyState(forPresses: presses)
|
||||
}
|
||||
|
||||
override func pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
|
||||
super.pressesEnded(presses, with: event)
|
||||
updateCommandKeyState(forPresses: presses)
|
||||
}
|
||||
|
||||
// MARK: Keyboard Shortcuts
|
||||
|
||||
func focusURLBar(_ sender: Any?) {
|
||||
toolbarController.urlBar.textField.becomeFirstResponder()
|
||||
}
|
||||
|
||||
func goBack(_ sender: Any?) {
|
||||
tab.webView.goBack()
|
||||
}
|
||||
|
||||
func goForward(_ sender: Any?) {
|
||||
tab.webView.goForward()
|
||||
}
|
||||
|
||||
func createTab(_ sender: Any?) {
|
||||
createNewTab(withURL: nil)
|
||||
}
|
||||
|
||||
func previousTab(_ sender: Any?) {
|
||||
if let tabIndex = tabController.tabs.firstIndex(of: self.tab) {
|
||||
if tabIndex - 1 >= 0 {
|
||||
self.tab = tabController.tabs[tabIndex - 1]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func nextTab(_ sender: Any?) {
|
||||
if let tabIndex = tabController.tabs.firstIndex(of: self.tab) {
|
||||
if tabIndex + 1 < tabController.tabs.count {
|
||||
self.tab = tabController.tabs[tabIndex + 1]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func closeTab(_ sender: Any?) {
|
||||
if tabController.tabs.count > 1 {
|
||||
tabController.closeTab(self.tab)
|
||||
} else {
|
||||
#if targetEnvironment(macCatalyst)
|
||||
if let originWindowScene = self.view.window?.windowScene {
|
||||
UIApplication.shared.requestSceneSessionDestruction(originWindowScene.session, options: nil) { error in
|
||||
print("Error when requesting scene destruction: " + error.localizedDescription)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
func findOnPage(_ sender: Any?) {
|
||||
browserView.setFindOnPageVisible(true, animated: true)
|
||||
findOnPageController.findOnPageView.textField.becomeFirstResponder()
|
||||
}
|
||||
|
||||
func refresh(_ sender: Any?) {
|
||||
webView.reload()
|
||||
}
|
||||
|
||||
override func increaseSize(_ sender: Any?) {
|
||||
tab.webView._viewScale += 0.10
|
||||
}
|
||||
|
||||
override func decreaseSize(_ sender: Any?) {
|
||||
tab.webView._viewScale -= 0.10
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user