// // NSWindow+PopOver.swift // PDF Reader Pro // // Created by kdanmobile on 2023/10/26. // import Foundation //var KMWindowPopOverKey = "KMWindowPopOverKey" //var KMWindowPopOverSourcesRectKey = "KMWindowPopOverSourcesRectKey" //extension NSWindow { // var popover: NSPopover? { // get { // return objc_getAssociatedObject(self, &KMWindowPopOverKey) as? NSPopover // } // set { // objc_setAssociatedObject(self, &KMWindowPopOverKey, newValue, .OBJC_ASSOCIATION_RETAIN) // } // } // // var sourcesRect: CGRect? { // get { // guard let value = objc_getAssociatedObject(self, &KMWindowPopOverSourcesRectKey) as? NSValue else { // return nil // } // return value.rectValue // } // set { // if let newValue = newValue { // let value = NSValue(rect: newValue) // objc_setAssociatedObject(self, &KMWindowPopOverSourcesRectKey, value, .OBJC_ASSOCIATION_RETAIN) // } else { // objc_setAssociatedObject(self, &KMWindowPopOverSourcesRectKey, nil, .OBJC_ASSOCIATION_RETAIN) // } // } // } // // open override func mouseMoved(with event: NSEvent) { // super.mouseMoved(with: event) // let point = event.locationInWindow // if NSStringFromClass(event.window!.classForCoder).elementsEqual("_NSPopoverWindow") == false { // if let data = sourcesRect?.contains(point), data == false { // if (self.popover != nil) { // NotificationCenter.default.post(name: NSNotification.Name("KMPopOverClosedByWindowNotification"), object: self.popover) // popover!.close() // self.popover = nil // self.sourcesRect = CGRect.null // } // } // } // } //}