@@ -75,7 +75,9 @@ final class MenuItemController: NSObject, NSMenuDelegate {
75
75
}
76
76
77
77
func buildStaticMenu( ) {
78
-
78
+
79
+ menu. addItem ( NSMenuItem . separator ( ) )
80
+
79
81
let prefMenu = NSMenuItem ( title: " Preferences " , action: #selector( openPreferences ( sender: ) ) , keyEquivalent: " , " )
80
82
prefMenu. target = self
81
83
menu. addItem ( prefMenu)
@@ -140,9 +142,10 @@ final class MenuItemController: NSObject, NSMenuDelegate {
140
142
}
141
143
142
144
// Add Menu Items
145
+ var nextRequiresSeparator = true
143
146
for menuItem in self . menuItems {
144
147
if menuItem. enabled {
145
- self . addMenuItem ( menuItem: menuItem)
148
+ nextRequiresSeparator = self . addMenuItem ( menuItem: menuItem, requiresSeparator : nextRequiresSeparator )
146
149
}
147
150
}
148
151
completionHandler ( . success( true ) )
@@ -170,11 +173,16 @@ final class MenuItemController: NSObject, NSMenuDelegate {
170
173
}
171
174
}
172
175
173
- func addMenuItem( menuItem: PrefMenuItem ) {
176
+ func addMenuItem( menuItem: PrefMenuItem , requiresSeparator: Bool ) -> Bool {
177
+ var nextRequiresSeparator = false
178
+
174
179
switch menuItem. itemType {
175
180
case itemTypes. Domain:
176
181
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
+
178
186
case itemTypes. Group:
179
187
self . haService. getState ( entityId: " group. \( menuItem. entityId) " ) { result in
180
188
switch result {
@@ -234,7 +242,9 @@ final class MenuItemController: NSObject, NSMenuDelegate {
234
242
235
243
entities = entities. reversed ( )
236
244
237
- self . addMenuItem ( menuItem: menuItem, entities: entities)
245
+ self . addMenuItem ( menuItem: menuItem, entities: entities, requiresSeparator: requiresSeparator)
246
+
247
+ nextRequiresSeparator = !menuItem. subMenu
238
248
239
249
break
240
250
case . failure( _) :
@@ -243,17 +253,20 @@ final class MenuItemController: NSObject, NSMenuDelegate {
243
253
}
244
254
}
245
255
256
+ return nextRequiresSeparator
246
257
}
247
258
248
- func addMenuItem( menuItem: PrefMenuItem , entities: [ HaEntity ] ) {
259
+ func addMenuItem( menuItem: PrefMenuItem , entities: [ HaEntity ] , requiresSeparator : Bool ) {
249
260
DispatchQueue . main. async {
250
261
251
262
if entities. count == 0 {
252
263
return
253
264
}
254
265
255
266
// 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
+ }
257
270
258
271
var parent = self . menu
259
272
0 commit comments