@@ -30,6 +30,7 @@ @interface TrackContextMenu()<NSMenuDelegate>
3030@property (nonatomic ) NSMenuItem *addToFrontOfQueueItem;
3131@property (nonatomic ) NSMenuItem *addToQueueItem;
3232@property (nonatomic ) NSMenuItem *removeFromQueueItem;
33+ @property (nonatomic ) NSMenuItem *removeFromPlaylistItem;
3334@property (nonatomic ) NSMenuItem *convertItem;
3435
3536@property (nonatomic ) NSMenuItem *rgScanPerFileItem;
@@ -139,6 +140,10 @@ - (void)update:(ddb_playlist_t *)playlist actionContext:(ddb_action_context_t)ac
139140 self.removeFromQueueItem = [self addItemWithTitle: @" Remove from Playback Queue" action: @selector (removeFromPlaybackQueue ) keyEquivalent: @" " ];
140141 self.removeFromQueueItem .target = self;
141142
143+ self.removeFromPlaylistItem = [self addItemWithTitle: @" Delete" action: @selector (delete: ) keyEquivalent: @" \b " ];
144+ self.removeFromPlaylistItem .target = self;
145+ self.removeFromPlaylistItem .keyEquivalentModifierMask = 0 ;
146+
142147 [self addItem: NSMenuItem .separatorItem];
143148
144149 self.convertItem = [self addItemWithTitle: @" Convert" action: @selector (convertSelection ) keyEquivalent: @" " ];
@@ -566,4 +571,12 @@ - (void)trackProperties {
566571 [((id <TrackContextMenuDelegate>)self .delegate) trackContextMenuShowTrackProperties: self ];
567572}
568573
574+ - (void )delete : (id )sender {
575+ [self forEachTrack: ^BOOL (DB_playItem_t *it) {
576+ deadbeef->plt_remove_item (self.playlist , it);
577+ return YES ;
578+ }];
579+ deadbeef->sendmessage (DB_EV_PLAYLISTCHANGED, 0 , DDB_PLAYLIST_CHANGE_CONTENT, 0 );
580+ }
581+
569582@end
0 commit comments