3 Commits

Author SHA1 Message Date
Ivan Sapozhnik 65abdd6244 Changing from Panel to Window 2020-04-15 01:27:08 +02:00
Ivan Sapozhnik 781fb84d7a Handling dismiss 2020-04-14 23:51:27 +02:00
Ivan Sapozhnik 994681e321 Access level 2020-04-14 23:26:11 +02:00
3 changed files with 30 additions and 14 deletions
+15 -9
View File
@@ -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 -4
View File
@@ -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
}
}
}
+1 -1
View File
@@ -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