Skip to content

Commit 42014bb

Browse files
Remove excessive separators when submenus
1 parent ca3e891 commit 42014bb

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

HA Menu/MenuItemController.swift

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ final class MenuItemController: NSObject, NSMenuDelegate {
7575
}
7676

7777
func buildStaticMenu() {
78-
78+
79+
menu.addItem(NSMenuItem.separator())
80+
7981
let prefMenu = NSMenuItem(title: "Preferences", action: #selector(openPreferences(sender:)), keyEquivalent: ",")
8082
prefMenu.target = self
8183
menu.addItem(prefMenu)
@@ -140,9 +142,10 @@ final class MenuItemController: NSObject, NSMenuDelegate {
140142
}
141143

142144
// Add Menu Items
145+
var nextRequiresSeparator = true
143146
for menuItem in self.menuItems {
144147
if menuItem.enabled {
145-
self.addMenuItem(menuItem: menuItem)
148+
nextRequiresSeparator = self.addMenuItem(menuItem: menuItem, requiresSeparator: nextRequiresSeparator)
146149
}
147150
}
148151
completionHandler(.success(true))
@@ -170,11 +173,16 @@ final class MenuItemController: NSObject, NSMenuDelegate {
170173
}
171174
}
172175

173-
func addMenuItem(menuItem: PrefMenuItem) {
176+
func addMenuItem(menuItem: PrefMenuItem, requiresSeparator: Bool) -> Bool {
177+
var nextRequiresSeparator = false
178+
174179
switch menuItem.itemType {
175180
case itemTypes.Domain:
176181
let domainItems = self.haService.filterEntities(entityDomain: menuItem.entityId)
177-
self.addMenuItem(menuItem: menuItem, entities: domainItems)
182+
self.addMenuItem(menuItem: menuItem, entities: domainItems, requiresSeparator: requiresSeparator)
183+
184+
nextRequiresSeparator = !menuItem.subMenu
185+
178186
case itemTypes.Group:
179187
self.haService.getState(entityId: "group.\(menuItem.entityId)") { result in
180188
switch result {
@@ -234,7 +242,9 @@ final class MenuItemController: NSObject, NSMenuDelegate {
234242

235243
entities = entities.reversed()
236244

237-
self.addMenuItem(menuItem: menuItem, entities: entities)
245+
self.addMenuItem(menuItem: menuItem, entities: entities, requiresSeparator: requiresSeparator)
246+
247+
nextRequiresSeparator = !menuItem.subMenu
238248

239249
break
240250
case .failure( _):
@@ -243,17 +253,20 @@ final class MenuItemController: NSObject, NSMenuDelegate {
243253
}
244254
}
245255

256+
return nextRequiresSeparator
246257
}
247258

248-
func addMenuItem(menuItem: PrefMenuItem, entities: [HaEntity]) {
259+
func addMenuItem(menuItem: PrefMenuItem, entities: [HaEntity], requiresSeparator: Bool) {
249260
DispatchQueue.main.async {
250261

251262
if entities.count == 0 {
252263
return
253264
}
254265

255266
// Add a seperator before static menu items/previous group
256-
self.menu.insertItem(NSMenuItem.separator(), at: 0)
267+
if (requiresSeparator || !menuItem.subMenu) {
268+
self.menu.insertItem(NSMenuItem.separator(), at: 0)
269+
}
257270

258271
var parent = self.menu
259272

0 commit comments

Comments
 (0)