Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Hidden Bar.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -620,7 +620,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.12;
MACOSX_DEPLOYMENT_TARGET = 10.13;
MARKETING_VERSION = 1.8;
PRODUCT_BUNDLE_IDENTIFIER = com.dwarvesv.minimalbar;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand All @@ -645,7 +645,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.12;
MACOSX_DEPLOYMENT_TARGET = 10.13;
MARKETING_VERSION = 1.8;
PRODUCT_BUNDLE_IDENTIFIER = com.dwarvesv.minimalbar;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand All @@ -669,7 +669,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.12;
MACOSX_DEPLOYMENT_TARGET = 10.13;
PRODUCT_BUNDLE_IDENTIFIER = com.dwarvesv.LauncherApplication;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand All @@ -693,7 +693,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.12;
MACOSX_DEPLOYMENT_TARGET = 10.13;
PRODUCT_BUNDLE_IDENTIFIER = com.dwarvesv.LauncherApplication;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down
2 changes: 2 additions & 0 deletions hidden/Extensions/StackView+Extension.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import Cocoa
extension NSStackView {
func removeAllSubViews() {
for view in self.views {
// Deactivate all constraints associated with this view to prevent memory leaks
NSLayoutConstraint.deactivate(view.constraints)
view.removeFromSuperview()
}
}
Expand Down
7 changes: 6 additions & 1 deletion hidden/Features/Preferences/PreferencesViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,12 @@ class PreferencesViewController: NSViewController {
createTutorialView()
NotificationCenter.default.addObserver(self, selector: #selector(updateData), name: .prefsChanged, object: nil)
}


deinit {
// Clean up NotificationCenter observer to prevent memory leaks
NotificationCenter.default.removeObserver(self, name: .prefsChanged, object: nil)
}

static func initWithStoryboard() -> PreferencesViewController {
let vc = NSStoryboard(name:"Main", bundle: nil).instantiateController(withIdentifier: "prefVC") as! PreferencesViewController
return vc
Expand Down
51 changes: 36 additions & 15 deletions hidden/Features/StatusBar/StatusBarController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -63,17 +63,32 @@ class StatusBarController {

//MARK: - Methods
init() {

setupUI()
setupAlwayHideStatusBar()
DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: {
self.collapseMenuBar()
})
DispatchQueue.main.asyncAfter(deadline: .now() + 1) { [weak self] in
self?.collapseMenuBar()
}

if Preferences.areSeparatorsHidden {hideSeparators()}
autoCollapseIfNeeded()
}


deinit {
// Clean up NotificationCenter observers to prevent memory leaks
NotificationCenter.default.removeObserver(self, name: .prefsChanged, object: nil)
NotificationCenter.default.removeObserver(self, name: .alwayHideToggle, object: nil)

// Invalidate timer to prevent retain cycles
timer?.invalidate()
timer = nil

// Properly remove status items
if let statusItem = self.btnAlwaysHidden {
NSStatusBar.system.removeStatusItem(statusItem)
}
}

private func setupUI() {
if let button = btnSeparate.button {
button.image = self.imgIconLine
Expand Down Expand Up @@ -139,8 +154,8 @@ class StatusBarController {
if isToggle {return}
isToggle = true
self.isCollapsed ? self.expandMenubar() : self.collapseMenuBar()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
self.isToggle = false
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { [weak self] in
self?.isToggle = false
}
}

Expand Down Expand Up @@ -243,14 +258,20 @@ extension StatusBarController {
}
@objc private func toggleStatusBarIfNeeded() {
if Preferences.alwaysHiddenSectionEnabled {
self.btnAlwaysHidden = NSStatusBar.system.statusItem(withLength: 20)
if let button = btnAlwaysHidden?.button {
button.image = self.imgIconLine
button.appearsDisabled = true
// Only create new status item if one doesn't exist
if self.btnAlwaysHidden == nil {
self.btnAlwaysHidden = NSStatusBar.system.statusItem(withLength: 20)
if let button = btnAlwaysHidden?.button {
button.image = self.imgIconLine
button.appearsDisabled = true
}
self.btnAlwaysHidden?.autosaveName = "hiddenbar_terminate"
}
} else {
// Properly remove status item before setting to nil
if let statusItem = self.btnAlwaysHidden {
NSStatusBar.system.removeStatusItem(statusItem)
}
self.btnAlwaysHidden?.autosaveName = "hiddenbar_terminate";

}else {
self.btnAlwaysHidden = nil
}
}
Expand Down