Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6320d17adb | ||
|
|
f1f68383d8 | ||
|
|
9f92012270 | ||
|
|
dee3296f9e | ||
|
|
b30566900b |
@@ -0,0 +1,19 @@
|
||||
name: Swift
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Build
|
||||
run: swift build -v
|
||||
- name: Run tests
|
||||
run: swift test -v
|
||||
@@ -21,7 +21,7 @@ Update your `Package.swift` dependencies:
|
||||
|
||||
```
|
||||
dependencies: [
|
||||
.package(url: "https://github.com/iSapozhnik/Popover", from: "1.0.8")
|
||||
.package(url: "https://github.com/iSapozhnik/Popover", from: "1.1.1")
|
||||
]
|
||||
```
|
||||
|
||||
|
||||
@@ -12,11 +12,7 @@ public class Popover: NSObject {
|
||||
return popoverWindowController?.window
|
||||
}
|
||||
|
||||
public var keepPopoverVisible: Bool = false {
|
||||
didSet {
|
||||
keepPopoverVisible ? removeMonitors() : setupMonitors()
|
||||
}
|
||||
}
|
||||
public var keepPopoverVisible: Bool = false
|
||||
|
||||
@objc dynamic var item: NSStatusItem! {
|
||||
didSet {
|
||||
@@ -90,10 +86,14 @@ public class Popover: NSObject {
|
||||
localEventMonitor?.start()
|
||||
}
|
||||
|
||||
/// Shows the Popover with no animation
|
||||
public func show() {
|
||||
self.show(withFocus: true)
|
||||
}
|
||||
|
||||
/// Shows the Popover with no animation
|
||||
public func show(withFocus: Bool) {
|
||||
guard !isPopoverWindowVisible else { return }
|
||||
popoverWindowController?.show()
|
||||
popoverWindowController?.show(withFocus: withFocus)
|
||||
globalEventMonitor?.start()
|
||||
|
||||
guard let button = item.button else { return }
|
||||
@@ -117,7 +117,9 @@ public class Popover: NSObject {
|
||||
private func setupMonitors() {
|
||||
globalEventMonitor = EventMonitor(monitorType: .global, mask: [.leftMouseDown, .rightMouseDown], globalHandler: { [weak self] _ in
|
||||
guard let self = self else { return }
|
||||
self.dismiss()
|
||||
if (!self.keepPopoverVisible) {
|
||||
self.dismiss()
|
||||
}
|
||||
}, localHandler: nil)
|
||||
|
||||
if menuItems != nil, menuItems?.isNotEmpty ?? false {
|
||||
@@ -167,7 +169,7 @@ public class Popover: NSObject {
|
||||
}
|
||||
|
||||
@objc private func handleStatusItemButtonAction(_ sender: Any?) {
|
||||
isPopoverWindowVisible ? dismiss() : show()
|
||||
isPopoverWindowVisible ? dismiss() : show(withFocus: true)
|
||||
}
|
||||
|
||||
private func setTargetAction(for button: NSButton) {
|
||||
|
||||
@@ -28,14 +28,18 @@ class PopoverWindowController: NSWindowController, NSWindowDelegate {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
func show() {
|
||||
func show(withFocus: Bool) {
|
||||
guard !isAnimating else { return }
|
||||
|
||||
updateWindowFrame()
|
||||
|
||||
showWindow(nil)
|
||||
if (withFocus) {
|
||||
showWindow(nil)
|
||||
window?.makeKey()
|
||||
} else {
|
||||
window?.orderFrontRegardless()
|
||||
}
|
||||
windowIsOpen = true
|
||||
window?.makeKey()
|
||||
// TODO: animation
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user