parent
6cfee79adf
commit
dbf30494b4
|
@ -3,7 +3,7 @@
|
|||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 55;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
|
@ -127,7 +127,7 @@
|
|||
};
|
||||
};
|
||||
buildConfigurationList = E36FB9412609BA43004272D9 /* Build configuration list for PBXProject "KeyboardShortcutsExample" */;
|
||||
compatibilityVersion = "Xcode 12.0";
|
||||
compatibilityVersion = "Xcode 13.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
|
@ -222,7 +222,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 12.0;
|
||||
MACOSX_DEPLOYMENT_TARGET = 12.3;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
|
@ -277,7 +277,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 12.0;
|
||||
MACOSX_DEPLOYMENT_TARGET = 12.3;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = macosx;
|
||||
|
|
|
@ -9,16 +9,24 @@ extension KeyboardShortcuts.Name {
|
|||
}
|
||||
|
||||
private struct DynamicShortcutRecorder: View {
|
||||
@FocusState private var isFocused: Bool
|
||||
|
||||
@Binding var name: KeyboardShortcuts.Name
|
||||
@Binding var isPressed: Bool
|
||||
|
||||
var body: some View {
|
||||
HStack(alignment: .firstTextBaseline) {
|
||||
KeyboardShortcuts.Recorder(for: name)
|
||||
.focused($isFocused)
|
||||
.padding(.trailing, 10)
|
||||
Text("Pressed? \(isPressed ? "👍" : "👎")")
|
||||
.frame(width: 100, alignment: .leading)
|
||||
}
|
||||
.onChange(of: name) { _ in
|
||||
DispatchQueue.main.async {
|
||||
isFocused = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ extension KeyboardShortcuts {
|
|||
private var eventMonitor: LocalEventMonitor?
|
||||
private let onChange: ((_ shortcut: Shortcut?) -> Void)?
|
||||
private var observer: NSObjectProtocol?
|
||||
private var canBecomeKey = false
|
||||
|
||||
/**
|
||||
The shortcut name for the recorder.
|
||||
|
@ -52,7 +53,7 @@ extension KeyboardShortcuts {
|
|||
}
|
||||
|
||||
/// :nodoc:
|
||||
override public var canBecomeKeyView: Bool { false }
|
||||
override public var canBecomeKeyView: Bool { canBecomeKey }
|
||||
|
||||
/// :nodoc:
|
||||
override public var intrinsicContentSize: CGSize {
|
||||
|
@ -149,6 +150,18 @@ extension KeyboardShortcuts {
|
|||
KeyboardShortcuts.isPaused = false
|
||||
}
|
||||
|
||||
// Prevent the control from receiving the initial focus.
|
||||
/// :nodoc:
|
||||
override public func viewDidMoveToWindow() {
|
||||
guard window != nil else {
|
||||
return
|
||||
}
|
||||
|
||||
DispatchQueue.main.async { [self] in
|
||||
canBecomeKey = true
|
||||
}
|
||||
}
|
||||
|
||||
/// :nodoc:
|
||||
override public func becomeFirstResponder() -> Bool {
|
||||
let shouldBecomeFirstResponder = super.becomeFirstResponder()
|
||||
|
|
Loading…
Reference in New Issue