diff --git a/MTMR/AppDelegate.swift b/MTMR/AppDelegate.swift index 5a3d4ee..72d2b45 100644 --- a/MTMR/AppDelegate.swift +++ b/MTMR/AppDelegate.swift @@ -92,6 +92,11 @@ class AppDelegate: NSObject, NSApplicationDelegate { createMenu() } + @objc func toggleMultitouch(_: Any?) { + TouchBarController.shared.multitouchGestures = !TouchBarController.shared.multitouchGestures + createMenu() + } + @objc func openPreset(_: Any?) { let dialog = NSOpenPanel() @@ -129,6 +134,9 @@ class AppDelegate: NSObject, NSApplicationDelegate { let hapticFeedback = NSMenuItem(title: "Haptic Feedback", action: #selector(toggleHapticFeedback(_:)), keyEquivalent: "H") hapticFeedback.state = TouchBarController.shared.hapticFeedbackState ? .on : .off + let multitouchGestures = NSMenuItem(title: "Volume/Brightness gestures", action: #selector(toggleMultitouch(_:)), keyEquivalent: "") + multitouchGestures.state = TouchBarController.shared.multitouchGestures ? .on : .off + let settingSeparator = NSMenuItem(title: "Settings", action: nil, keyEquivalent: "") settingSeparator.isEnabled = false @@ -142,6 +150,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { menu.addItem(hideControlStrip) menu.addItem(toggleBlackList) menu.addItem(startAtLogin) + menu.addItem(multitouchGestures) menu.addItem(NSMenuItem.separator()) menu.addItem(withTitle: "Quit", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q") statusItem.menu = menu diff --git a/MTMR/ScrollViewItem.swift b/MTMR/ScrollViewItem.swift index 325e77d..96b0691 100644 --- a/MTMR/ScrollViewItem.swift +++ b/MTMR/ScrollViewItem.swift @@ -3,6 +3,8 @@ import Foundation class ScrollViewItem: NSCustomTouchBarItem, NSGestureRecognizerDelegate { var twofingersPrev: CGFloat = 0.0 var threefingersPrev: CGFloat = 0.0 + var twofingers: NSPanGestureRecognizer! + var threefingers: NSPanGestureRecognizer! init(identifier: NSTouchBarItem.Identifier, items: [NSTouchBarItem]) { super.init(identifier: identifier) @@ -14,16 +16,23 @@ class ScrollViewItem: NSCustomTouchBarItem, NSGestureRecognizerDelegate { scrollView.documentView = stackView view = scrollView - let twofingers = NSPanGestureRecognizer(target: self, action: #selector(twofingersHandler(_:))) + twofingers = NSPanGestureRecognizer(target: self, action: #selector(twofingersHandler(_:))) twofingers.allowedTouchTypes = .direct twofingers.numberOfTouchesRequired = 2 view.addGestureRecognizer(twofingers) - let threefingers = NSPanGestureRecognizer(target: self, action: #selector(threefingersHandler(_:))) + threefingers = NSPanGestureRecognizer(target: self, action: #selector(threefingersHandler(_:))) threefingers.allowedTouchTypes = .direct threefingers.numberOfTouchesRequired = 3 view.addGestureRecognizer(threefingers) } + + var gesturesEnabled = true { + didSet { + twofingers.isEnabled = gesturesEnabled + threefingers.isEnabled = gesturesEnabled + } + } required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") diff --git a/MTMR/TouchBarController.swift b/MTMR/TouchBarController.swift index 28b9d5e..6706ae8 100644 --- a/MTMR/TouchBarController.swift +++ b/MTMR/TouchBarController.swift @@ -78,7 +78,7 @@ class TouchBarController: NSObject, NSTouchBarDelegate { var centerIdentifiers: [NSTouchBarItem.Identifier] = [] var centerItems: [NSTouchBarItem] = [] var rightIdentifiers: [NSTouchBarItem.Identifier] = [] - var scrollArea: NSCustomTouchBarItem? + var scrollArea: ScrollViewItem? var centerScrollArea = NSTouchBarItem.Identifier("com.toxblh.mtmr.scrollArea.".appending(UUID().uuidString)) var showControlStripState: Bool { @@ -98,6 +98,17 @@ class TouchBarController: NSObject, NSTouchBarDelegate { UserDefaults.standard.set(newValue, forKey: "com.toxblh.mtmr.settings.hapticFeedback") } } + + var multitouchGestures: Bool { + get { + return UserDefaults.standard.bool(forKey: "com.toxblh.mtmr.settings.multitouchGestures") + } + set { + scrollArea?.gesturesEnabled = newValue + UserDefaults.standard.set(newValue, forKey: "com.toxblh.mtmr.settings.multitouchGestures") + UserDefaults.standard.synchronize() + } + } var blacklistAppIdentifiers: [String] = [] var frontmostApplicationIdentifier: String? { @@ -147,6 +158,7 @@ class TouchBarController: NSObject, NSTouchBarDelegate { centerScrollArea = NSTouchBarItem.Identifier("com.toxblh.mtmr.scrollArea.".appending(UUID().uuidString)) scrollArea = ScrollViewItem(identifier: centerScrollArea, items: centerItems) + scrollArea?.gesturesEnabled = multitouchGestures touchBar.delegate = self touchBar.defaultItemIdentifiers = []