From 8a98cfd645ee2aa8147e1162a43cc1e807f9daaa Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Thu, 6 Jul 2023 18:21:29 +0200 Subject: [PATCH] feat: added releasing all processes when closing the popup view --- Kit/helpers.swift | 2 +- Kit/module/popup.swift | 11 +++++++++++ Modules/Battery/popup.swift | 4 ++++ Modules/CPU/popup.swift | 4 ++++ Modules/RAM/popup.swift | 4 ++++ Stats/Views/CombinedView.swift | 2 ++ 6 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Kit/helpers.swift b/Kit/helpers.swift index 59448377..b4838502 100644 --- a/Kit/helpers.swift +++ b/Kit/helpers.swift @@ -893,7 +893,7 @@ public class ProcessView: NSStackView { self.toolTip = "" } - private func setLock(_ state: Bool) { + public func setLock(_ state: Bool) { self.lock = state if self.lock { self.imageView.isHidden = true diff --git a/Kit/module/popup.swift b/Kit/module/popup.swift index 20de7a63..9cff1c73 100644 --- a/Kit/module/popup.swift +++ b/Kit/module/popup.swift @@ -14,11 +14,16 @@ import Cocoa public protocol Popup_p: NSView { var sizeCallback: ((NSSize) -> Void)? { get set } func settings() -> NSView? + + func appear() + func disappear() } open class PopupWrapper: NSStackView, Popup_p { open var sizeCallback: ((NSSize) -> Void)? = nil open func settings() -> NSView? { return nil } + open func appear() {} + open func disappear() {} } public class PopupWindow: NSWindow, NSWindowDelegate { @@ -124,6 +129,7 @@ internal class PopupViewController: NSViewController { internal class PopupView: NSView { private var title: String? = nil + private var view: Popup_p? = nil private var foreground: NSVisualEffectView private var background: NSView @@ -189,6 +195,8 @@ internal class PopupView: NSView { } public func setView(_ view: Popup_p?) { + self.view = view + let width: CGFloat = (view?.frame.width ?? Constants.Popup.width) + (Constants.Popup.margins*2) let height: CGFloat = (view?.frame.height ?? 0) + Constants.Popup.headerHeight + (Constants.Popup.margins*2) @@ -228,9 +236,12 @@ internal class PopupView: NSView { if let documentView = self.body.documentView { documentView.scroll(NSPoint(x: 0, y: documentView.bounds.size.height)) } + + self.view?.appear() } internal func disappear() { self.header.setCloseButton(false) + self.view?.disappear() } private func recalculateHeight(_ size: NSSize) { diff --git a/Modules/Battery/popup.swift b/Modules/Battery/popup.swift index 5fe71352..6a916286 100644 --- a/Modules/Battery/popup.swift +++ b/Modules/Battery/popup.swift @@ -108,6 +108,10 @@ internal class Popup: PopupWrapper { fatalError("init(coder:) has not been implemented") } + public override func disappear() { + self.processes.forEach{ $0.setLock(false) } + } + public func numberOfProcessesUpdated() { if self.processes.count == self.numberOfProcesses { return diff --git a/Modules/CPU/popup.swift b/Modules/CPU/popup.swift index fa1cff29..2a7a8018 100644 --- a/Modules/CPU/popup.swift +++ b/Modules/CPU/popup.swift @@ -175,6 +175,10 @@ internal class Popup: PopupWrapper { self.lineChart?.display() } + public override func disappear() { + self.processes.forEach{ $0.setLock(false) } + } + public func numberOfProcessesUpdated() { if self.processes.count == self.numberOfProcesses { return diff --git a/Modules/RAM/popup.swift b/Modules/RAM/popup.swift index 08dc5145..b81077a8 100644 --- a/Modules/RAM/popup.swift +++ b/Modules/RAM/popup.swift @@ -139,6 +139,10 @@ internal class Popup: PopupWrapper { self.chart?.display() } + public override func disappear() { + self.processes.forEach{ $0.setLock(false) } + } + public func numberOfProcessesUpdated() { if self.processes.count == self.numberOfProcesses { return diff --git a/Stats/Views/CombinedView.swift b/Stats/Views/CombinedView.swift index a4da59c0..661cb571 100644 --- a/Stats/Views/CombinedView.swift +++ b/Stats/Views/CombinedView.swift @@ -154,6 +154,8 @@ private class Popup: NSStackView, Popup_p { } public func settings() -> NSView? { return nil } + public func appear() {} + public func disappear() {} @objc private func reinit() { self.subviews.forEach({ $0.removeFromSuperview() })