@@ -216,11 +216,13 @@ final class MainWindowController: NSWindowController {
216216 }
217217
218218 @IBAction private func invokeSharingServicePicker( _ sender: Any ) {
219- guard sender is NSMenuItem || sender is NSToolbarItem else {
220- return
221- }
222-
223- if let window, let contentView = window. contentView {
219+ // The sender is either the menu item in the main menu, the menu-form
220+ // representation of the toolbar item in label-only mode or the toolbar
221+ // item itself.
222+ if sender is NSMenuItem || sender is NSToolbarItem ,
223+ let window,
224+ let contentView = window. contentView
225+ {
224226 let picker = NSSharingServicePicker ( items: shareableItems)
225227 picker. delegate = self
226228 // The menu item does not have a view to which the picker could be
@@ -233,6 +235,16 @@ final class MainWindowController: NSWindowController {
233235 let yCoordinate = layoutRect. maxY - 1
234236 let topEdgeRect = NSRect ( x: xCoordinate, y: yCoordinate, width: 1 , height: 1 )
235237 picker. show ( relativeTo: topEdgeRect, of: contentView, preferredEdge: . minY)
238+ return
239+ }
240+
241+ // The sender is a button if the user clicked on the toolbar item in
242+ // icon-and-label mode or icon-only mode.
243+ if let button = sender as? NSButton {
244+ let picker = NSSharingServicePicker ( items: shareableItems)
245+ picker. delegate = self
246+ picker. show ( relativeTo: . zero, of: button, preferredEdge: . minY)
247+ return
236248 }
237249 }
238250
0 commit comments