From: ritsuka Date: Wed, 4 Jun 2008 18:54:56 +0000 (+0000) Subject: MacGUI: Implements a part of the NSTableView delegate in ChapterTitles so that pressi... X-Git-Url: http://git.osdn.jp/view?a=commitdiff_plain;h=39e4bc5bb03e56aa33ab7c2252a6cbc5dc1db09a;p=handbrake-jp%2Fhandbrake-jp-git.git MacGUI: Implements a part of the NSTableView delegate in ChapterTitles so that pressing Return selects the next row and edits the chapter title so that the mouse or Mac OS X's full keyboard access is not required. Patch by bkiico517. git-svn-id: svn://localhost/HandBrake/trunk@1492 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- diff --git a/macosx/ChapterTitles.m b/macosx/ChapterTitles.m index c58a0a03..cc2d50c2 100644 --- a/macosx/ChapterTitles.m +++ b/macosx/ChapterTitles.m @@ -101,4 +101,39 @@ return cellEntry; } + +/* Method to edit the next chapter when the user presses Return. We have to use +a timer to avoid interfering with the chain of events that handles the edit. */ +- (void)controlTextDidEndEditing: (NSNotification *) notification +{ + NSTableView *chapterTable = [notification object]; + NSInteger column = [chapterTable editedColumn]; + NSInteger row = [chapterTable editedRow]; + int textMovement; + + // Edit the cell in the next row, same column + row++; + textMovement = [[[notification userInfo] objectForKey:@"NSTextMovement"] intValue]; + if( textMovement == NSReturnTextMovement && row < [chapterTable numberOfRows] ) + { + NSArray *info = [NSArray arrayWithObjects:chapterTable, + [NSNumber numberWithInteger:column], [NSNumber numberWithInteger:row], nil]; + /* The delay is unimportant; editNextRow: won't be called until the responder + chain finishes because the event loop containing the timer is on this thread */ + [self performSelector:@selector(editNextRow:) withObject:info afterDelay:0.0]; + } +} + +- (void)editNextRow: (id) objects +{ + NSTableView *chapterTable = [objects objectAtIndex:0]; + NSInteger column = [[objects objectAtIndex:1] integerValue]; + NSInteger row = [[objects objectAtIndex:2] integerValue]; + + if( row >= 0 && row < [chapterTable numberOfRows] ) + { + [chapterTable selectRow:row byExtendingSelection:NO]; + [chapterTable editColumn:column row:row withEvent:nil select:YES]; + } +} @end diff --git a/macosx/Controller.mm b/macosx/Controller.mm index b2178587..f8d70850 100644 --- a/macosx/Controller.mm +++ b/macosx/Controller.mm @@ -90,6 +90,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It fChapterTitlesDelegate = [[ChapterTitles alloc] init]; [fChapterTable setDataSource:fChapterTitlesDelegate]; + [fChapterTable setDelegate:fChapterTitlesDelegate]; /* Call UpdateUI every 1/2 sec */ [[NSRunLoop currentRunLoop] addTimer: [NSTimer