Skip to content

Commit af65bca

Browse files
authored
Ice bar fixes (#255)
* Update MenuBarItemManager.swift * Make sure items are shown to left of application menu * Remove padding as it is no longer needed * Update MenuBarItemManager.swift * Don't extend timer anymore
1 parent 4acaff4 commit af65bca

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

Ice/MenuBar/MenuBarItemManager.swift

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,22 +1006,31 @@ extension MenuBarItemManager {
10061006
func tempShowItem(_ item: MenuBarItem, clickWhenFinished: Bool, mouseButton: CGMouseButton) {
10071007
let rehideInterval: TimeInterval = 20
10081008

1009-
if tempShownItemContexts.contains(where: { $0.item.info == item.info }) {
1010-
Logger.itemManager.info("Item \"\(item.logString)\" is already temporarily shown, so extending timer")
1011-
runTempShownItemTimer(for: rehideInterval)
1009+
guard
1010+
let appState,
1011+
let screen = NSScreen.main,
1012+
let applicationMenuFrame = appState.menuBarManager.getApplicationMenuFrame(for: screen.displayID)
1013+
else {
1014+
Logger.itemManager.warning("No application menu frame, so not showing item \"\(item.logString)\"")
10121015
return
10131016
}
10141017

10151018
Logger.itemManager.info("Temporarily showing \"\(item.logString)\"")
10161019

1017-
let items = MenuBarItem.getMenuBarItemsPrivateAPI(onScreenOnly: false, activeSpaceOnly: true)
1020+
var items = MenuBarItem.getMenuBarItemsPrivateAPI(onScreenOnly: false, activeSpaceOnly: true)
10181021

10191022
guard let destination = getReturnDestination(for: item, in: items) else {
10201023
Logger.itemManager.warning("No return destination for item \"\(item.logString)\"")
10211024
return
10221025
}
1023-
guard let hiddenControlItem = items.first(where: { $0.info == .hiddenControlItem }) else {
1024-
Logger.itemManager.warning("No hidden control item")
1026+
1027+
items.trimPrefix { $0.info != .hiddenControlItem }
1028+
items.removeFirst() // remove hidden control item
1029+
items.trimPrefix { !$0.isOnScreen }
1030+
items.trimPrefix { $0.frame.minX - item.frame.width <= applicationMenuFrame.maxX }
1031+
1032+
guard let targetItem = items.first else {
1033+
Logger.itemManager.warning("Not enough room to show item")
10251034
return
10261035
}
10271036

@@ -1030,7 +1039,7 @@ extension MenuBarItemManager {
10301039
Task {
10311040
if clickWhenFinished {
10321041
do {
1033-
try await slowMove(item: item, to: .rightOfItem(hiddenControlItem))
1042+
try await slowMove(item: item, to: .leftOfItem(targetItem))
10341043
switch mouseButton {
10351044
case .left:
10361045
try await leftClick(item: item)
@@ -1046,7 +1055,7 @@ extension MenuBarItemManager {
10461055
}
10471056
} else {
10481057
do {
1049-
try await move(item: item, to: .rightOfItem(hiddenControlItem))
1058+
try await move(item: item, to: .leftOfItem(targetItem))
10501059
} catch {
10511060
Logger.itemManager.error("ERROR: \(error)")
10521061
}

0 commit comments

Comments
 (0)