31 lines
959 B
Swift
31 lines
959 B
Swift
import Cocoa
|
|
|
|
class PasteEligibilityService {
|
|
static func isPastePossible() -> Bool {
|
|
guard AXIsProcessTrustedWithOptions(nil) else {
|
|
return true
|
|
}
|
|
|
|
guard let frontmostApp = NSWorkspace.shared.frontmostApplication else {
|
|
return false
|
|
}
|
|
|
|
let appElement = AXUIElementCreateApplication(frontmostApp.processIdentifier)
|
|
|
|
var focusedElement: AnyObject?
|
|
let result = AXUIElementCopyAttributeValue(appElement, kAXFocusedUIElementAttribute as CFString, &focusedElement)
|
|
|
|
guard result == .success, let element = focusedElement else {
|
|
return false
|
|
}
|
|
|
|
var isWritable: DarwinBoolean = false
|
|
let isSettableResult = AXUIElementIsAttributeSettable(element as! AXUIElement, kAXValueAttribute as CFString, &isWritable)
|
|
|
|
if isSettableResult == .success && isWritable.boolValue {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
} |