From 211770893ec55217e1f930a7d8d69a0ddc55efdf Mon Sep 17 00:00:00 2001 From: Allan Odgaard Date: Mon, 26 Aug 2013 11:48:41 +0200 Subject: [PATCH] =?UTF-8?q?When=20in=20Favorites=20folder,=20change=20Add?= =?UTF-8?q?=20=E2=86=92=20Remove=20From=20Favorites?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In practice it is possible to be in a parent of the Favorites folder and expand items so that the symbolic links in favorites can be selected, this commit does not handle that case, as we would then also need to handle the case where items both inside and outside the Favorites folder were selected (at the same time). Users who do these things are probably aware of how symbolic links work, and can use “Move to Trash”. Closes #1089 --- .../OakFileBrowser/src/OakFileBrowser.mm | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/Frameworks/OakFileBrowser/src/OakFileBrowser.mm b/Frameworks/OakFileBrowser/src/OakFileBrowser.mm index f7c33eb5..381ef347 100644 --- a/Frameworks/OakFileBrowser/src/OakFileBrowser.mm +++ b/Frameworks/OakFileBrowser/src/OakFileBrowser.mm @@ -773,6 +773,12 @@ static NSMutableSet* SymmetricDifference (NSMutableSet* aSet, NSMutableSet* anot } } +- (void)removeSelectedEntriesFromFavorites:(id)sender +{ + for(NSURL* url in self.selectedURLs) + [[OakFileManager sharedInstance] trashItemAtURL:url window:_view.window]; +} + - (IBAction)cut:(id)sender { NSPasteboard* pboard = [NSPasteboard generalPasteboard]; @@ -888,7 +894,8 @@ static NSMutableSet* SymmetricDifference (NSMutableSet* aSet, NSMutableSet* anot if(rootPath || hasFileSelected) { - [aMenu addItem:[NSMenuItem separatorItem]]; + if(hasFileSelected || to_s(rootPath) != oak::application_t::support("Favorites")) + [aMenu addItem:[NSMenuItem separatorItem]]; if(hasFileSelected) { @@ -897,7 +904,15 @@ static NSMutableSet* SymmetricDifference (NSMutableSet* aSet, NSMutableSet* anot [aMenu addItemWithTitle:@"Quick Look" action:@selector(toggleQuickLookPreview:) keyEquivalent:@""]; } - [aMenu addItemWithTitle:@"Add to Favorites" action:@selector(addSelectedEntriesToFavorites:) keyEquivalent:@""]; + if(rootPath && to_s(rootPath) == oak::application_t::support("Favorites")) + { + if(hasFileSelected) + [aMenu addItemWithTitle:@"Remove From Favorites" action:@selector(removeSelectedEntriesFromFavorites:) keyEquivalent:@""]; + } + else + { + [aMenu addItemWithTitle:@"Add to Favorites" action:@selector(addSelectedEntriesToFavorites:) keyEquivalent:@""]; + } } if(hasFileSelected) @@ -1225,11 +1240,12 @@ static NSMutableSet* SymmetricDifference (NSMutableSet* aSet, NSMutableSet* anot struct { NSString* format; SEL action; } const menuTitles[] = { - { @"Cut%@", @selector(cut:) }, - { @"Copy%@", @selector(copy:) }, - { quickLookTitle, @selector(toggleQuickLookPreview:) }, - { @"Show%@ in Finder", @selector(showSelectedEntriesInFinder:) }, - { @"Add%@ to Favorites", @selector(addSelectedEntriesToFavorites:) }, + { @"Cut%@", @selector(cut:) }, + { @"Copy%@", @selector(copy:) }, + { quickLookTitle, @selector(toggleQuickLookPreview:) }, + { @"Show%@ in Finder", @selector(showSelectedEntriesInFinder:) }, + { @"Add%@ to Favorites", @selector(addSelectedEntriesToFavorites:) }, + { @"Remove%@ From Favorites", @selector(removeSelectedEntriesFromFavorites:) }, }; for(auto info : menuTitles)