fix: meta+arrow activates only if meta+tab was first pressed

Also potentially meta+other_key would be absorbed by the app and not propagated to the focused app
This commit is contained in:
Louis Pontoise committed 2019-10-25 20:20:53 +09:00
1 parent cd52663def
commit aa5f748fa9
3 files changed
+25 -12

No files matched your search

+17 -8
View File
@@ -51,15 +51,24 @@ func keyboardHandler(_ cgEvent: CGEvent, _ delegate: Application) -> Unmanaged<C
if event.modifierFlags.contains(Preferences.metaModifierFlag!) {
if isMeta {
delegate.preActivate()
} else if keyDown && (isLeftArrow || (isTab && event.modifierFlags.contains(.shift))) {
delegate.showUiOrSelectPrevious()
return nil // previously focused app should not receive keys
} else if keyDown && (isRightArrow || isTab) {
delegate.showUiOrSelectNext()
return nil // previously focused app should not receive keys
} else if keyDown && isEscape {
delegate.hideUi()
return nil // previously focused app should not receive keys
} else if keyDown {
if isTab && event.modifierFlags.contains(.shift) {
delegate.showUiOrSelectPrevious()
return nil // previously focused app should not receive keys
} else if isTab {
delegate.showUiOrSelectNext()
return nil // previously focused app should not receive keys
} else if isRightArrow && delegate.appIsBeingUsed {
delegate.cycleSelection(1)
return nil // previously focused app should not receive keys
} else if isLeftArrow && delegate.appIsBeingUsed {
delegate.cycleSelection(-1)
return nil // previously focused app should not receive keys
} else if keyDown && isEscape {
delegate.hideUi()
return nil // previously focused app should not receive keys
}
}
} else if isMeta && !keyDown {
delegate.focusTarget()
+7 -3
View File
@@ -100,22 +100,26 @@ class Application: NSApplication, NSApplicationDelegate, NSWindowDelegate {
selectedOpenWindow + step < 0 ? openWindows.count - 1 : (selectedOpenWindow + step) % openWindows.count
}
func cycleSelection(_ step: Int) {
selectedOpenWindow = cellWithStep(step)
thumbnailsPanel!.highlightCell(step)
}
func showUiOrCycleSelection(_ step: Int) {
appIsBeingUsed = true
if openWindows.count > 0 {
selectedOpenWindow = cellWithStep(step)
if isFirstSummon {
isFirstSummon = false
let workItem = DispatchWorkItem {
self.computeOpenWindows()
self.thumbnailsPanel!.computeThumbnails()
self.thumbnailsPanel!.highlightThumbnail(step)
self.cycleSelection(step)
self.showCenteredPanel(self.thumbnailsPanel!)
}
workItems.append(workItem)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Preferences.windowDisplayDelay!, execute: workItem)
} else {
self.thumbnailsPanel!.highlightThumbnail(step)
self.cycleSelection(step)
}
}
}
+1 -1
View File
@@ -77,7 +77,7 @@ class ThumbnailsPanel: NSPanel, NSCollectionViewDataSource, NSCollectionViewDele
return .zero
}
func highlightThumbnail(_ step: Int) {
func highlightCell(_ step: Int) {
collectionView_!.selectItems(at: [IndexPath(item: application!.selectedOpenWindow, section: 0)], scrollPosition: .top)
collectionView_!.deselectItems(at: [IndexPath(item: application!.cellWithStep(-step), section: 0)])
}