Move select next/previous tab/result out of window controller

This commit is contained in:
Allan Odgaard
2014-08-22 19:47:28 +02:00
parent 871a0df11a
commit e6185fd5a1
3 changed files with 40 additions and 118 deletions

View File

@@ -360,8 +360,8 @@ NSString* const FFFindWasTriggeredByEnter = @"FFFindWasTriggeredByEnter";
}
break;
case FindActionFindNext: [self.windowController selectNextResult:self]; break;
case FindActionFindPrevious: [self.windowController selectPreviousResult:self]; break;
case FindActionFindNext: [self selectNextResult:self]; break;
case FindActionFindPrevious: [self selectPreviousResult:self]; break;
}
}
else
@@ -971,6 +971,44 @@ static NSAttributedString* AttributedStringForMatch (std::string const& text, si
[self allMatchesSetExclude:YES];
}
- (IBAction)selectNextResult:(id)sender
{
NSInteger row = [_windowController.resultsOutlineView selectedRow];
FFResultNode* item = row == -1 ? nil : [_windowController.resultsOutlineView itemAtRow:row];
item = item ? (item.next ?: item.parent.next.firstResultNode) : _results.firstResultNode.firstResultNode;
if(!item && _windowController.wrapAround)
item = _results.firstResultNode.firstResultNode;
[self showResultNode:item];
}
- (IBAction)selectPreviousResult:(id)sender
{
NSInteger row = [_windowController.resultsOutlineView selectedRow];
FFResultNode* item = row == -1 ? nil : [_windowController.resultsOutlineView itemAtRow:row];
item = item ? (item.previous ?: item.parent.previous.lastResultNode) : _results.lastResultNode.lastResultNode;
if(!item && _windowController.wrapAround)
item = _results.lastResultNode.lastResultNode;
[self showResultNode:item];
}
- (IBAction)selectNextTab:(id)sender
{
NSInteger row = [_windowController.resultsOutlineView selectedRow];
FFResultNode* item = row == -1 ? nil : [_windowController.resultsOutlineView itemAtRow:row];
[self showResultNode:item.parent.next.firstResultNode ?: _results.firstResultNode.firstResultNode];
}
- (IBAction)selectPreviousTab:(id)sender
{
NSInteger row = [_windowController.resultsOutlineView selectedRow];
FFResultNode* item = row == -1 ? nil : [_windowController.resultsOutlineView itemAtRow:row];
[self showResultNode:item.parent.previous.firstResultNode ?: _results.lastResultNode.firstResultNode];
}
- (BOOL)validateMenuItem:(NSMenuItem*)aMenuItem
{
static std::set<SEL> const copyActions = { @selector(copy:), @selector(copyMatchingParts:), @selector(copyMatchingPartsWithFilename:), @selector(copyEntireLines:), @selector(copyEntireLinesWithFilename:) };

View File

@@ -38,7 +38,4 @@ extern NSString* const FFSearchInOpenFiles;
@property (nonatomic) NSString* findErrorString;
- (void)updateFindErrorString;
- (IBAction)selectNextResult:(id)sender;
- (IBAction)selectPreviousResult:(id)sender;
@end

View File

@@ -945,119 +945,6 @@ static NSButton* OakCreateStopSearchButton ()
- (IBAction)toggleFollowSymbolicLinks:(id)sender { self.followSymbolicLinks = !self.followSymbolicLinks; }
- (IBAction)toggleSearchHiddenFolders:(id)sender { self.searchHiddenFolders = !self.searchHiddenFolders; }
- (IBAction)selectNextResult:(id)sender
{
if([self.resultsOutlineView numberOfRows] == 0)
return;
NSInteger row = [self.resultsOutlineView selectedRow];
while(true)
{
if(++row == [self.resultsOutlineView numberOfRows])
{
if(!self.wrapAround)
return;
row = -1;
continue;
}
if([[self.resultsOutlineView delegate] respondsToSelector:@selector(outlineView:isGroupItem:)] && [[self.resultsOutlineView delegate] outlineView:self.resultsOutlineView isGroupItem:[self.resultsOutlineView itemAtRow:row]])
{
[self.resultsOutlineView expandItem:[self.resultsOutlineView itemAtRow:row]];
continue;
}
[self.resultsOutlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO];
[self.resultsOutlineView scrollRowToVisible:row];
break;
}
}
- (IBAction)selectPreviousResult:(id)sender
{
if([self.resultsOutlineView numberOfRows] == 0)
return;
NSInteger row = [self.resultsOutlineView selectedRow];
if(row == -1)
row = [self.resultsOutlineView numberOfRows];
while(true)
{
if(--row == 0)
{
if(!self.wrapAround)
return;
row = [self.resultsOutlineView numberOfRows];
continue;
}
if([[self.resultsOutlineView delegate] respondsToSelector:@selector(outlineView:isGroupItem:)] && [[self.resultsOutlineView delegate] outlineView:self.resultsOutlineView isGroupItem:[self.resultsOutlineView itemAtRow:row]])
continue;
[self.resultsOutlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO];
[self.resultsOutlineView scrollRowToVisible:row];
break;
}
}
- (IBAction)selectNextTab:(id)sender
{
if([self.resultsOutlineView numberOfRows] == 0 || ![[self.resultsOutlineView delegate] respondsToSelector:@selector(outlineView:isGroupItem:)])
return;
NSInteger row = [self.resultsOutlineView selectedRow];
while(true)
{
if(++row == [self.resultsOutlineView numberOfRows])
{
row = -1;
continue;
}
if([[self.resultsOutlineView delegate] outlineView:self.resultsOutlineView isGroupItem:[self.resultsOutlineView itemAtRow:row]])
{
++row;
[self.resultsOutlineView expandItem:[self.resultsOutlineView itemAtRow:row]];
[self.resultsOutlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO];
[self.resultsOutlineView scrollRowToVisible:row];
[self.resultsOutlineView.window makeFirstResponder:self.resultsOutlineView];
break;
}
}
}
- (IBAction)selectPreviousTab:(id)sender
{
if([self.resultsOutlineView numberOfRows] == 0 || ![[self.resultsOutlineView delegate] respondsToSelector:@selector(outlineView:isGroupItem:)])
return;
NSInteger row = [self.resultsOutlineView selectedRow];
if(--row < 0)
row = [self.resultsOutlineView numberOfRows];
while(true)
{
if(--row < 0)
{
row = [self.resultsOutlineView numberOfRows];
continue;
}
if([[self.resultsOutlineView delegate] outlineView:self.resultsOutlineView isGroupItem:[self.resultsOutlineView itemAtRow:row]])
{
++row;
[self.resultsOutlineView expandItem:[self.resultsOutlineView itemAtRow:row]];
[self.resultsOutlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO];
[self.resultsOutlineView scrollRowToVisible:row];
[self.resultsOutlineView.window makeFirstResponder:self.resultsOutlineView];
break;
}
}
}
- (BOOL)control:(NSControl*)control textView:(NSTextView*)textView doCommandBySelector:(SEL)command
{
if(command == @selector(moveDown:))