mirror of
https://github.com/textmate/textmate.git
synced 2026-04-28 03:00:34 -04:00
Move select next/previous tab/result out of window controller
This commit is contained in:
@@ -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:) };
|
||||
|
||||
@@ -38,7 +38,4 @@ extern NSString* const FFSearchInOpenFiles;
|
||||
|
||||
@property (nonatomic) NSString* findErrorString;
|
||||
- (void)updateFindErrorString;
|
||||
|
||||
- (IBAction)selectNextResult:(id)sender;
|
||||
- (IBAction)selectPreviousResult:(id)sender;
|
||||
@end
|
||||
|
||||
@@ -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:))
|
||||
|
||||
Reference in New Issue
Block a user