From: <ho...@us...> - 2011-12-22 19:17:59
|
Revision: 18331 http://bibdesk.svn.sourceforge.net/bibdesk/?rev=18331&view=rev Author: hofman Date: 2011-12-22 19:17:53 +0000 (Thu, 22 Dec 2011) Log Message: ----------- preserve all selection ranges rather than just the first one Modified Paths: -------------- trunk/bibdesk/BDSKTextImportController.m Modified: trunk/bibdesk/BDSKTextImportController.m =================================================================== --- trunk/bibdesk/BDSKTextImportController.m 2011-12-22 18:31:06 UTC (rev 18330) +++ trunk/bibdesk/BDSKTextImportController.m 2011-12-22 19:17:53 UTC (rev 18331) @@ -615,12 +615,20 @@ } } +static inline BOOL validRanges(NSArray *ranges, NSUInteger max) { + for (NSValue *range in ranges) { + if (NSMaxRange([range rangeValue]) > max) + return NO; + } + return YES; +} + - (void)finalizeChangesPreservingSelection:(BOOL)shouldPreserveSelection{ NSResponder *firstResponder = [[self window] firstResponder]; if([firstResponder isKindOfClass:[NSText class]]){ - NSText *textView = (NSText *)firstResponder; - NSRange selection = [textView selectedRange]; + NSTextView *textView = (NSTextView *)firstResponder; + NSArray *selection = [textView selectedRanges]; NSInteger editedRow = -1; id textDelegate = [textView delegate]; if(textDelegate == itemTableView || textDelegate == citeKeyField){ @@ -635,9 +643,8 @@ if(shouldPreserveSelection && [[self window] makeFirstResponder:firstResponder]){ if(editedRow != -1) [itemTableView editColumn:2 row:editedRow withEvent:nil select:YES]; - if([[textView string] length] < NSMaxRange(selection)) // check range for safety - selection = NSMakeRange([[textView string] length], 0); - [textView setSelectedRange:selection]; + if(validRanges(selection, [[textView string] length])) // check ranges for safety + [textView setSelectedRanges:selection]; } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |