mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
feat: added widget position restore when enabling/disabling the module
This commit is contained in:
@@ -1118,3 +1118,17 @@ public class EmptyView: NSStackView {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
}
|
||||
|
||||
public func saveNSStatusItemPosition(id: String) {
|
||||
let position = Store.shared.int(key: "NSStatusItem Preferred Position \(id)", defaultValue: -1)
|
||||
if position != -1 {
|
||||
Store.shared.set(key: "NSStatusItem Restore Position \(id)", value: position)
|
||||
}
|
||||
}
|
||||
public func restoreNSStatusItemPosition(id: String) {
|
||||
let prevPosition = Store.shared.int(key: "NSStatusItem Restore Position \(id)", defaultValue: -1)
|
||||
if prevPosition != -1 {
|
||||
Store.shared.set(key: "NSStatusItem Preferred Position \(id)", value: prevPosition)
|
||||
Store.shared.remove("NSStatusItem Restore Position \(id)")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -293,6 +293,8 @@ public class Widget {
|
||||
Store.shared.remove(prevTag)
|
||||
}
|
||||
|
||||
restoreNSStatusItemPosition(id: "\(self.module)_\(self.type.rawValue)")
|
||||
|
||||
DispatchQueue.main.async(execute: {
|
||||
self.menuBarItem = NSStatusBar.system.statusItem(withLength: self.item.frame.width)
|
||||
self.menuBarItem?.autosaveName = "\(self.module)_\(self.type.rawValue)"
|
||||
@@ -310,6 +312,7 @@ public class Widget {
|
||||
self.menuBarItem?.button?.sendAction(on: [.leftMouseDown, .rightMouseDown])
|
||||
})
|
||||
} else if let item = self.menuBarItem {
|
||||
saveNSStatusItemPosition(id: "\(self.module)_\(self.type.rawValue)")
|
||||
NSStatusBar.system.removeStatusItem(item)
|
||||
self.menuBarItem = nil
|
||||
}
|
||||
@@ -402,6 +405,7 @@ public class MenuBar {
|
||||
|
||||
private func setupMenuBarItem(_ state: Bool) {
|
||||
if state {
|
||||
restoreNSStatusItemPosition(id: self.moduleName)
|
||||
self.menuBarItem = NSStatusBar.system.statusItem(withLength: 0)
|
||||
self.menuBarItem?.autosaveName = self.moduleName
|
||||
self.menuBarItem?.isVisible = true
|
||||
@@ -411,6 +415,7 @@ public class MenuBar {
|
||||
self.menuBarItem?.button?.action = #selector(self.togglePopup)
|
||||
self.menuBarItem?.button?.sendAction(on: [.leftMouseDown, .rightMouseDown])
|
||||
} else if let item = self.menuBarItem {
|
||||
saveNSStatusItemPosition(id: self.moduleName)
|
||||
NSStatusBar.system.removeStatusItem(item)
|
||||
self.menuBarItem = nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user