Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 65abdd6244 | |||
| 781fb84d7a | |||
| 994681e321 |
+15
-9
@@ -43,13 +43,19 @@ public final class Menu {
|
||||
fadeIn(window)
|
||||
}
|
||||
|
||||
public func dismiss() {
|
||||
public func dismiss(animated: Bool) {
|
||||
let actualDismiss: (NSWindow) -> Void = { [weak self] menuWindow in
|
||||
self?.window?.parent?.removeChildWindow(menuWindow)
|
||||
self?.window?.orderOut(self)
|
||||
self?.window = nil
|
||||
}
|
||||
if let menuWindow = window {
|
||||
fadeOut(window: menuWindow) { [weak self] in
|
||||
self?.window?.parent?.removeChildWindow(menuWindow)
|
||||
self?.window?.orderOut(self)
|
||||
self?.window?.close()
|
||||
self?.window = nil
|
||||
if animated {
|
||||
fadeOut(window: menuWindow) {
|
||||
actualDismiss(menuWindow)
|
||||
}
|
||||
} else {
|
||||
actualDismiss(menuWindow)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +90,7 @@ public final class Menu {
|
||||
|
||||
private func setupMonitors(for parentWindow: NSWindow, targetView: NSView) {
|
||||
lostFocusObserver = NotificationCenter.default.addObserver(forName: NSWindow.didResignKeyNotification, object: parentWindow, queue: nil, using: { [weak self] (_ arg1: Notification) -> Void in
|
||||
self?.dismiss()
|
||||
self?.dismiss(animated: false)
|
||||
})
|
||||
|
||||
localMonitor = EventMonitor(monitorType: .local, mask: [.leftMouseDown, .rightMouseDown, .otherMouseDown], globalHandler: nil, localHandler: { [weak self] event -> NSEvent? in
|
||||
@@ -92,7 +98,7 @@ public final class Menu {
|
||||
|
||||
if localEvent.window != self?.window {
|
||||
if localEvent.window == parentWindow {
|
||||
self?.dismiss()
|
||||
self?.dismiss(animated: true)
|
||||
// Ignore clicking on presenting view
|
||||
// let contentView = parentWindow.contentView
|
||||
// let locationTest = contentView?.convert(localEvent.locationInWindow, from: nil)
|
||||
@@ -122,6 +128,6 @@ public final class Menu {
|
||||
extension Menu: ContentViewControllerDelegate {
|
||||
func didClickMenuElement(with index: Int) {
|
||||
selectedIndex = index
|
||||
dismiss()
|
||||
dismiss(animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,13 +14,23 @@ public enum Alignment {
|
||||
|
||||
public enum Padding {
|
||||
public struct Horizontal {
|
||||
public let left: CGFloat
|
||||
public let right: CGFloat
|
||||
let left: CGFloat
|
||||
let right: CGFloat
|
||||
|
||||
public init(left: CGFloat, right: CGFloat) {
|
||||
self.left = left
|
||||
self.right = right
|
||||
}
|
||||
}
|
||||
|
||||
public struct Vertical {
|
||||
public let top: CGFloat
|
||||
public let bottom: CGFloat
|
||||
let top: CGFloat
|
||||
let bottom: CGFloat
|
||||
|
||||
public init(top: CGFloat, bottom: CGFloat) {
|
||||
self.top = top
|
||||
self.bottom = bottom
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
import Cocoa
|
||||
|
||||
final class Window: NSPanel {
|
||||
final class Window: NSWindow {
|
||||
private var childContentView: NSView?
|
||||
private var backgroundView: RoundedRectangleView?
|
||||
private let configuration: Configuration
|
||||
|
||||
Reference in New Issue
Block a user