// // KMBatchTableRowView.swift // PDF Reader Pro // // Created by wanjun on 2023/10/8. // import Cocoa @objcMembers class KMBatchTableRowView: KMTableRowView { private var _backgroundView: NSView? override init(frame frameRect: NSRect) { super.init(frame: frameRect) self.addSubview(self.backgroundView ?? NSView()) self.backgroundView?.isHidden = true } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func layout() { super.layout() self.backgroundView?.frame = NSMakeRect(selectionInset.left, selectionInset.top, bounds.width - selectionInset.left - selectionInset.right, bounds.height - selectionInset.top - selectionInset.bottom) } override var selectionInset: NSEdgeInsets { didSet { needsLayout = true } } override var isSelected: Bool { didSet { if isSelected { backgroundView!.isHidden = true } } } //MARK: Mouse Event override func mouseExited(with event: NSEvent) { super.mouseExited(with: event) self.backgroundView?.isHidden = true for view in subviews { if let v = view as? NSView { for subview in v.subviews { if let button = subview as? NSButton { button.isHidden = true } } } } } override func mouseEntered(with event: NSEvent) { super.mouseEntered(with: event) if isSelected { backgroundView!.isHidden = true } else { backgroundView!.isHidden = false } for view in subviews { if let v = view as? NSView { for subview in v.subviews { if let button = subview as? NSButton { button.isHidden = false } } } } } //MARK: Get、Set var backgroundView: NSView? { get { if _backgroundView == nil { _backgroundView = NSView() _backgroundView?.wantsLayer = true _backgroundView?.layer?.backgroundColor = NSColor.clear.cgColor } return _backgroundView } } }